您的位置:首页 > 数据库

DB2实例管理

2012-08-19 00:25 1891 查看

DB2实例的定义和数据库的关系

  DB2的实例是一组共享内存和一组进程。我们可以把实例看作是数据库的集合,共同运行在一个逻辑单元中(同一个端口,可以通过 db2 get dbm cfg | grep -i svcename 看到此端口)。在一个系统中可以创建多个实例,每个实例使用各自不同的端口服务于远程应用程序,在每个实例下可以包含多个数据库。一个实例停止了,那么该实例下的所有数据库将不可用。一个实例停止了,其他实例将不受影响,它下面的数据库照样正常运行。

 

DB2实例的创建

     在windows和Linux/Unix上,DB2实例的创建方式是不一样的。在Linux/Unix平台上创建,实例名需要和操作系统用户绑定,不同实例需要对应到不同用户名下,实例创建在用户目录下。这样在切换实例的时候,直接切换用户即可。而在windows上实例名不和用户绑定,在需要切换用户的时候,可以设置db2instance环境变量即可。

在windows平台上:

创建实例使用命令 db2icrt

db2icrt   instance_name  -s ese|wse|standalone|client

                                              -p instance_path

-s : 表示创建实例的类型,一般选择 ese或者wse

-p: : 表示创建实例目录的位置

如果不指定,默认的实例路劲会创建在 db2instprof注册变量指定的位置(  db2set 可以查看)

创建一个实例testdb ,指定路径为D:\data\

D:\data>db2icrt testdb -p D:\data\
DB20000I  DB2ICRT 命令成功完成。


查看系统有多少个实例 :

D:\data>db2ilist
TESTDB
SAMPLE
DB2

 

Linux/Unix平台下创建实例

       unix/linux平台下创建实例需要和用户绑定在一起,实例名和用户名相同。

db2icrt  -p portnumber  -s  instance_type  -u FencedID  instance_name

-p : 实例的端口号

-s : 实例的类型

-u : fenced user 该用户是用来执行存储过

 

1.创建实例管理组

groupadd -g 1200 db2iadm1

2.创建fenced组

groupadd -g 1201 db2fadm1

3.创建实例用户

useradd -g db2iadm1 -u 1002 -m -d /home/db2inst1 db2inst1

4.创建fenced用户

useradd -g db2fadm1 -u 1003 -m -d /home/db2fenc1 db2fenc1

5.切换到DB2软件安装目录,使用root创建实例

suse:~ # cd /opt/ibm/db2/V9.7/instance/
suse:/opt/ibm/db2/V9.7/instance # ./db2icrt -p 50000 -u db2fenc1 db2inst1

当实例创建成功以后,会在实例用户下面生成sqllib目录:

常见配置文件:

db2systm:实例配置文件,使用 get dbm cfg / update dbm cfg 控制。

profile.env:实例DB2环境变量,使用dbset控制。

sqldbdir:实例数据库编目,使用 list db directory  / catalog database 控制。

sqlnodir:实例节点目录,使用 list node direcotry / catalog tcpip node 控制。

/var/db2/global.env:全局安装、实例、环境变量列表,使用db2ilist查看,db2greg 控制。

db2dump: 存放DB2运行日志。

db2nodes.cfg:节点配置文件。

 

DB2实例启动/停止

windows平台,首先通过db2cmd命令窗口下,执行db2start 开启实例。如果有多个实例,则需要切换到相应的实例下才能启动。

启动实例:
D:\data>db2start
SQL1063N  DB2START 处理成功。
 

获取当前实例:

D:\data>db2 get instance

 当前数据库管理器实例是:DB2
 

 

windows平台下切换实例:

D:\data>db2 get instance

 当前数据库管理器实例是:DB2


D:\data>set db2instance=testdb

D:\data>db2 get instance

 当前数据库管理器实例是:TESTDB
 

 

Unix/linux 平台:

切换用户

suse:~ # su - db2inst1
db2inst1@suse:~>
 

开始实例

db2inst1@suse:~> db2start
08/02/2012 05:42:24     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
db2inst1@suse:~>
 

关闭实例

db2inst1@suse:~> db2stop
08/02/2012 05:45:18     0   0   SQL1025N  The database manager was not stopped because databases are still active.
SQL1025N  The database manager was not stopped because databases are still active.

 

这时候可以通过 db2 force applications all 断开所有连接,或者是db2stop force 强制关闭实例。

db2inst1@suse:~> db2 force applications all
DB20000I  The FORCE APPLICATION command completed successfully.
DB21024I  This command is asynchronous and may not be effective immediately.

db2inst1@suse:~> db2stop
08/02/2012 05:51:57     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.

如果以上命令还是不能停止实例,在Unix/Linux平台下通过 db2_kill命令终止所有分区上的进程,然后执行ipclean,重启实例。

windows平台上没有db2_kill命令,可以通过db2stop -kill 实现,不推荐通过操作系统命令杀进程。

查看实例:

db2inst1@suse:~> db2ilist
db2inst1
 

查看当前系统中有哪些实例,通过db2greg命令查看。

db2inst1@suse:~> db2greg -g
/var/db2/global.reg
db2inst1@suse:~> db2greg -dump
S,DB2,9.7.0.1,/opt/ibm/db2/V9.7,,,1,0,,1343643505,0
V,DB2GPRF,DB2SYSTEM,suse,/opt/ibm/db2/V9.7,
V,DB2GPRF,DB2ADMINSERVER,dasusr1,/opt/ibm/db2/V9.7,
I,DB2,9.7.0.1,db2inst1,/home/db2inst1/sqllib,,1,0,/opt/ibm/db2/V9.7,,
V,DB2GPRF,DB2INSTDEF,db2inst1,/opt/ibm/db2/V9.7,
S,DAS,9.7.0.1,/opt/ibm/db2/V9.7/das,lib/libdb2dasgcf.so,,1,, ,,
I,DAS,9.7.0.1,dasusr1,/home/dasusr1/das,,1,,/opt/ibm/db2/V9.7/das,,
S,DB2,9.7.0.1,/opt/ibm/db2/V9.7_01,,,1,0,,1343824510,0
V,DB2GPRF,DB2SYSTEM,suse,/opt/ibm/db2/V9.7_01,
I,DB2,9.7.0.1,db2inst2,/home/db2inst2/sqllib,,1,0,/opt/ibm/db2/V9.7_01,,
V,DB2GPRF,DB2INSTDEF,db2inst2,/opt/ibm/db2/V9.7_01,

 

更新实例

更新命令 db2iupdt , 该命令需要root执行,执行之前先停止实例。

suse:~ # cd /opt/ibm/db2/V9.7/instance/

suse:/opt/ibm/db2/V9.7/instance # ./db2iupdt  db2inst1

 

删除实例

删除实例使用命令db2idrop ,使用root执行,删除之前先要停止实例。


db2inst1@suse:~> db2stop
08/02/2012 06:08:08     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
suse:~ # cd /opt/ibm/db2/V9.7/instance/
suse:/opt/ibm/db2/V9.7/instance # ./db2idrop db2inst1

注意:删除了实例并不会删除数据库。  

实例配置参数

db2 get dbm cfg | more

db2inst1@suse:~> db2 get dbm cfg | grep -i path
 Java Development Kit installation path       (JDK_PATH) = /home/db2inst1/sqllib/java/jdk64
 Diagnostic data directory path               (DIAGPATH) = /home/db2inst1/sqllib/db2dump
 Default database path                       (DFTDBPATH) = /home/db2inst1
 

db2inst1@suse:~> db2 get dbm cfg | grep -i mon
 Transaction processor monitor name        (TP_MON_NAME) =
 Default database monitor switches
   Buffer pool                         (DFT_MON_BUFPOOL) = ON
   Lock                                   (DFT_MON_LOCK) = ON
   Sort                                   (DFT_MON_SORT) = ON
   Statement                              (DFT_MON_STMT) = ON
   Table                                 (DFT_MON_TABLE) = ON
   Timestamp                         (DFT_MON_TIMESTAMP) = ON
   Unit of work                            (DFT_MON_UOW) = ON
 Monitor health of instance and databases   (HEALTH_MON) = ON

db2inst1@suse:~> db2 get dbm cfg | grep -i svcename
 TCP/IP Service name                          (SVCENAME) = 50001
 

从DB29开始,DB2唯一支持的通信协议时TCP/IP,IP端口必须唯一。一般从50000开始,不能超过65535.

查看当前db2comm

db2inst1@suse:~> db2set
DB2_CLPPROMPT=(Instance:%i, Database:%d):
DB2COMM=tcpip
DB2AUTOSTART=YES
 

更改当前实例端口

db2inst1@suse:~> db2 get dbm cfg | grep -i svcename
 TCP/IP Service name                          (SVCENAME) = 50001
 SSL service name                         (SSL_SVCENAME) =
db2inst1@suse:~>
db2inst1@suse:~> db2 update dbm cfg using svcename 50000
DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
db2inst1@suse:~> db2 get dbm cfg | grep -i svcename
 TCP/IP Service name                          (SVCENAME) = 50000
 SSL service name                         (SSL_SVCENAME) =
 

也可以某个参数设置为空,但是 NULL 要大写。

db2inst1@suse:~> db2 update dbm cfg using svcename NULL
DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
db2inst1@suse:~> db2 get dbm cfg | grep -i svcename
 TCP/IP Service name                          (SVCENAME) =
 

管理服务器(DAS)

  db2 das相当于一个代理,主要用来配合DB2图形界面完成一些操作。一台主机可以有多个实例,但是只能有一个DAS,可以同时管理并服务于多个DB2实例。

groupadd dasadm

mkdir -p /home/dasusr1

useradd -d /home/dasusr1 -g dasadm dasusr1

passwd dasusr1

suse:/opt/ibm/db2/V9.7/instance # pwd
/opt/ibm/db2/V9.7/instance
suse:/opt/ibm/db2/V9.7/instance # ./dascrt -u dasusr1
 

启动和停止DAS:

su - dasusr1

db2admin start

db2admin stop

 

删除DAS:

suse:/opt/ibm/db2/V9.7/instance # pwd
/opt/ibm/db2/V9.7/instance
suse:/opt/ibm/db2/V9.7/instance # ./dasdrop
 


 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库