Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2080427
  • 博文数量: 519
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 3985
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-29 14:05
个人简介

只问耕耘

文章分类

全部博文(519)

文章存档

2016年(1)

2013年(5)

2011年(46)

2010年(220)

2009年(51)

2008年(39)

2007年(141)

2006年(16)

我的朋友

分类:

2007-08-17 15:17:05

创建DB2   实例(Instance)  
   
  [DB2安装路径]:本实验中DB2的安装路径为:/usr/lpp/db2_07_01 
    本实验将采用两种方法来建立实例,并将详细阐述两种建立方法的不同。 
  
  方法一:采用DB2SETUP 
  使用root身份登陆,切换工作目录到   [DB2安装目录]/install 
  使用命令:#   ./db2setup 
  将启动DB2的安装工具界面,选择创建实例,首先会让你选择实例用户(User   Name)或者选择新建实例用户(AIX中实例用户与实例名相同),选择用户所在组(Group);用户目录会默认建立在   /home/[User   Name],建立实例时,会在该目录下建立sqllib目录用于存放有关实例的配置和文件。 
  然后会让你选择以有用户来做为Fenced   User(用于创建和执行   定义UDFs(user   defined   functions)以及保存存储过程)或者选择新建用户,系统缺省实例采用同一Fenced   User。 
  开始建立实例! 
    建立实例前,系统会有类似以下的确定信息出现: 
  DB2   Services   Creation 
  Fenced   User 
  Use   existing   user   name db2fenc1 
  DB2   Instance 
  Using   existing   user   name db2inst2 
  Create   new   entry   in   /etc/services: 
  Services   Name db2cdb2inst2 
  Port   Number 50002 
  Update   DBM   configuration   file   for   TCP/IP 
  Update   DBM   configuration   file   for   TCP/IP 
  Auto   start   DB2   Instance 
  Create   DB2   Instance   ,   db2inst2 
  Authentication   type   is   SERVER 
  
    接着,就等待实例的完成吧!完成后,系统会有以下类似信息出现: 
  The   log   file   can   be   found   in   /tmp/db2setup.log. 
  DB2   Services   Creation 
  DB2   Instance 
  DB2   Instance   Creation SUCCESS 
  Create   new   entry   in   /etc/services SUCCESS 
  Update   DBM   configuration   file   for   TCP/IP SUCCESS 
  Auto   start   DB2   Instance SUCCESS 
  Start   DB2   Instance SUCCESS 
  
  恭喜!你的实例db2inst2已经成功创建! 
    请切换用户身份到db2inst2,如果你安装了DB2   Sample   Database   Source组件你就可以使用下面的命令来创建DB2的SAMPLE数据库: 
  #   db2sampl 
  如果没有安装该组件的话,可以自己创建一个Sample数据库,来验证实例的创建是否成功: 
  #   db2   create   db   sample 
    创建数据库的路径可以用下面的方式得到: 
  #   db2   get   dbm   config 
  请注意这么一个属性(WIN): 
  缺省数据库路径                             (DFTDBPATH)   =   D: 
    数据库创建好后,会默认创建到该路径,UNIX系统与WINDOW系统会有不同的默认路径。 
  
  创建完成后,使用命令连接SAMPLE数据库: 
  #   db2   connect   to   sample   user   db2inst2   using   db2inst2 
  连接成功后,使用命令,查看数据库里表: 
  #   db2   list   tables 
   
方法二:采用Command   Line方式 
  采用命令行的方式来进行创建实例,首先需要实例所在目录、实例用户及所有组。 
  1. 创建实例目录 
    在本实验文档中假定要建立的实例的名字为db2test,即实例用户和目录都为db2test。切换到root身份,在   /home下建立目录,使用命令: 
  #   mkdir   db2test 
  2. 创建用户和组 
  创建用户,本实验中使用用户名:db2test 
  保持root身份登陆,使用命令: 
  #   smitty   user 
  进入smitty界面,创建db2test用户,注意以下细节: 
  new   User   name:   db2test 
  User   ID [209] 
  ADMINISTRATIVE   USER? false 
  Primary   GROUP [db2test] 
  Group   SET [db2test,staff,db2asgrp] 
  ADMINISTRATIVE   GROUPS [] 
  ROLES [] 
  Another   user   can   SU   TO   USER? true 
  SU   GROUPS [ALL] 
  HOME   directory [/home/db2test](指定刚建立目录,注意名字) 
  Initial   PROGRAM [/usr/bin/ksh] 
  
  创建组,组名:db2test 
  使用root身份登陆,使用命令: 
  #   smitty   group 
  进入smitty界面,创建db2test组时,注意以下细节: 
  ADMINISTRATIVE   group? false 
  USER   list [[db2adminuser],   [db2newinsname]] 
  ADMINISTRATOR   list [   ] 
  
  在本实验中,[db2adminuser]为db2as,[db2newinsname]为刚创建的实例用户db2test。 
  
  3. 创建实例 
  切换目录到   [DB2安装目录]/instance 
  使用命令: 
  #   ./db2icrt     –u     FencedID     InstName 
  db2icrt命令详解: 
  db2icrt [-a   AuthType] 
  [-p   PortName] 
  [-s   InstType] 
  [-w   WordWidth] 
    -u   FencedID   InstName 
  -h|-? display   the   usage   information.显示帮助信息 
  -d turn   debug   mode   on.打开调试状态 
  -a   AuthType   is   the   authentication   type   (SERVER,   CLIENT,   DCS, 
                                DCE,   SERVER_ENCRYPT,   DCS_ENCRYPT,   or 
                                DCE_SERVER_ENCRYPT)   for   the   instance.认证类型 
  -p   PortName is   the   port   name   or   port   number   to   be   used   by   this   instance. 
  实例使用的端口名或端口号 
  -s   InstType is   the   type   of   instance   to   be   created   (eee,   ee,   or   client).被 
  创建的实例类型(企业扩展版,企业版或客护端) 
  -u   FencedID is   the   name   of   the   user   under   which   fenced   UDFs 
  and   fenced   stored   procedures   will   be   run.     This 
  flag   is   not   required   if   only   a   DB2   client   is   installed.指明fenced用户,如果只安装DB2客户端则不需指明 
  -w   WordWidth is   the   width,   in   bits,   of   the   instance   to   be   created   (32   or   64).     
  (AIX,   Sun)     You   must   have   the   requisite   version   of   DB2   
  installed   (32-bit   or   64-bit)   for   this   to   work.   被创建的是32位还是64位实例。 
  InstName is   the   name   of   the   instance.被创建的实例名。 
  
  在本实验中,创建的实例名为db2test,命令如下: 
  #   ./db2icrt     –u     db2test     db2test 
  
  命令执行成功后,将会在/home/目录下,我们在第一步所建实例目录db2test中查看到系统已经为你创建了一个名为sqllib的目录以及相关文件。这表明实例db2test已创建成功! 
  请注意:为什么实例用户和实例名需要相同?创建实例命令中,并没有实例用户的选项,但是系统却通过实例名找到该用户,并在/home下的相关目录里建立了实例文件夹和文件(sqllib)。 
  
  4. 验证所创建的实例 
  实例已经通过上述步骤建立成功,但是否就表示该实例可用了呢?(牙膏会损害我们的牙齿吗?让我们在CD盒上做个实验,来验证一下),看看通过命令行方式创建的实例是否和db2setup工具创建出来的一样。 
  切换用户到实例用户,本实验中为db2test。 
  首先,还是先创建数据库,我们就使用DB2的SAMPLE。 
  如果你安装了DB2   Sample   Database   Source组件你就可以使用下面的命令来创建一个Sample数据库: 
  #   db2sampl 
  如果没有安装该组件的话,可以自己创建一个Sample数据库,来验证实例的创建是否成功; 
  #   db2   create   db   sample 
  使用本地连接来验证实例: 
  数据库创建成功后,尝试连接数据库,使用命令:#   db2     connect     to     sample 
  列出该数据库中所有的数据库表,使用命令:#   db2     list     tables   for   all 
  如果都可以通过,证明实例本地连接没有问题! 
  采用远程(Remote)连接来验证实例: 
  远程连接访问你可以通过在客户机上安装DB2客户端来访问实验实例db2test,本实验中将采用在本机上通过另一实例使用CATALOG编目的方式后,来访问的方法。 
  切换用户到另一实例用户,本实验中使用db2inst1。 
  使用以下命令来编目实例: 
  #   db2   catalog   tcpip   node   [nodename]ibmdb2   remote   [HostName/IP   Address]192.168.192.99     server     [Portnum/ServicesName]50004 
    其中[nodename]:你可以依照你的方式来命名,[portnum/ServicesName]:server关键字后面的值可以使用端口号也可以使用服务名(Services   Name)其值必须与/etc/services文件中的相关的DB2实例的侦听端口的服务名或其端口号相同,有关services文件将在后面叙述。 DB2端口缺省从50000开始,每个实例会分配两个端口:一个侦听端口,一个中断端口。 
  使用以下命令来编目数据库: 
  #   db2     catalog     db     sample     at     node     [nodename]ibmdb2 
  注意:命令中[nodename]为刚做的实例编目中的[nodename],本实验中为ibmdb2。 
  
  编目成功以后,尝试连接实验实例,使用命令: 
  #   db2     connect     to     sample     user     db2test     using     db2test 
  想想为什么在这里需要特别指出用户名和密码?你现在正使用另一个实例用户db2inst1身份,所以访问db2test实例需要特别指明访问的用户名与密码,如果实例用户访问自己的实例,则用户名和密码可省略。 
  或者使用这个命令来连接: 
  #   db2     attach     to     [nodename]ibmdb2     user     db2test     using     db2test 
  注意:命令中的[nodename]为编目中的[nodename],在本实验中为ibmdb2。 
  回车以后,看看系统会有什么反映? 
  
  系统会报出如下一个通信协议的错误,能想象出是为什么吗? 
  SQL30081N     检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:"SOCKETS"。检测到错误的位置:""。检测到错误的通信函数: "connect"。协议特定的错误码:"10061"、"*"、"*"。     SQLSTATE=08001 
  
  为什么通讯协议会出错呢?系统不是会默认地给实例设置一些基础的属性吗?让我们来看看是否如此? 
  先看看我们用方法一创建的实例。 
  在用户db2inst1下,使用命令: 
  #   db2set 
  该命令可以让你看到在用户下的实例参数,你会看到如下信息: 
  DB2COMM=tcpip(该属性是指明该DB2实例使用的通信协议,一个实例可以使用多个通信协议,多个通信协议之间使用逗号分开,如:TCPIP、IPX、APPC、NPIPE……) 
  DB2AUTOSTART=true(TRUE/FALSE,设置实例是否在系统启动是自动启动,在Windows系统中DB2的实例是作为服务形式启动的) 
  
  再来看看命令行方式创建的实例。 
  将用户切换到实验实例db2test下,使用相同的命令,你会看到什么信息? 
  你将什么都不会看到!!在通过命令行方式创建实例时,实例参数并没有被设置,甚至有些参数你会以为应该是缺省的参数!但通过DB2SETUP方式创建的实例,有些参数会默认的帮你设置成缺省的参数值。所以实验实例的通讯协议没有定义,因此发生刚才的现象。 
  
  在实验实例用户db2test下,使用命令: 
  #   db2set     DB2COMM=tcpip 
  #   db2set     DB2AUTOSTART=TRUE 
  别急!还没有完,你还应该为他们指定一个通讯的端口号。编辑文件   /etc/services,请你先切换用户身份为root,添加如下两行: 
  db2testc 50004/tcp #   Connection   port   for   DB2   instance   db2test,即侦听端口 
  db2testi 50005/tcp #   Interrupt   port   for   DB2   instance   db2test,即中断端口 
  前面的是服务名,你可以依照自己的命名方式或者SERVICES上DB2服务命名规则来写,后面的数字表示端口号,DB2端口缺省从50000开始,每个实例会占用两个端口。 
  
  做完这些配置后,切换用户到实验实例用户db2test,你需要更新实例的配置文件,使用命令: 
  #   db2   get   dbm   config 
  你会得到大量的实例配置参数,请注意参数SVCENAME的值为空,现在我们将配置该参数。 
  #   db2   update   dbm   config   using   SVCENAME   [/etc/services   50004   port   name]db2testc 
  SVCENAME必须为Services文件中的Connection   Port   Name即侦听端口的服务名。 
  
  更新完之后,请停止客户端、实例,重启动实验实例以及客户端,最好在停止前做一下terminate。 
  再请尝试连接实验实例,成功了吗? 
  
  根据此实验,我们可以知道系统在创建一个实例时,在做哪几件事情,需要做哪几件事情,让我们来总结一下创建的步骤: 
  1. DB2   Instance   Creation 
  创建DB2实例,包括用户和组,实例目录 
  2. Create   new   entry   in   /etc/services 
  创建新的services,分配端口 
  3. Update   DBM   configuration   file   for   TCP/IP 
  更新实例配置文件 
  4. Auto   start   DB2   Instance 
  配置默认参数,将实例设置为自动启动 
  5. Start   DB2   Instance 
  配置完成,重新启动实例,让配置生效   
阅读(9893) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~