创建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) |