天道酬勤

Oracle and My Life

Archive for the ‘configure’ tag

Install and configure DB2 V9.7 client for linux

leave a comment

DB2 V9.7 client安装在RedHat Linux平台上最低要求为5.2以上,kernel最低为2.6.16,否则在安装时会遇到如下的错误提示信息:

WARNING:

The required minimum kernel level is 2.6.16

Required minimum level of glibc is 2.4.0

检查系统包

#rpm -qa|grep  compat-libstdc++

compat-libstdc++**.rpm

配置 Linux 内核参数

#vi /etc/sysctl.conf文件,添加内核参数

kernel.msgmni =1024

kernel.sem = 250  256000  32  1024

#sysctl  -p  使其修改立即生效

下载db2 V9.7的客户机安装包下载并安装

#tar  -xzvf client_linuxia32_v97.tar.gz

#cd client

#sh db2_install

创建用户

#groupadd db2iadm1

#useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1

# /opt/ibm/db2/V9.7/instance/db2icrt -a server db2inst1

#passwd db2inst1

添加DB2端口

#su -

#vi /etc/services 加入下面一行

db2inst1   50000/tcp

修改/etc/hosts文件,添加服务器的IP和客户机的IP

#vi /etc/hosts

设置实例的环境变量

运行脚本  /home/db2inst1/sqllib/db2profile

在服务器端配置TCP/IP通信

[db2inst1@ochef ~]$ db2 update database manager configuration using svcename db2inst1

[db2inst1@ochef ~]$ db2 get dbm cfg |grep -i “svcename”

设置DB2服务器的通信协议

[db2inst1@ochef ~]$ db2set DB2COMM=tcpip

[db2inst1@ochef ~]$ db2stop

[db2inst1@ochef ~]$ db2start

从客户端编目TCP/IP节点

[db2inst1@ochef ~]$ db2 catalog tcpip node ochefdb2 remote 192.168.0.97 server 50000

[db2inst1@ochef ~]$ db2 terminate

编目TCP/IP节点是要在client端节点目录中添加一个描述远程节点的条目,client端访问server端时告诉它远程主机所选择的别名(node_name)、hostname(ip_address)和svcename(或port_number)。

在客户端编目TCP/IP节点时遇到如下错误:

SQL10007N Message “-1390″ could not be retrieved.  Reason code: “3″.

这个问题困扰了我一下午,百思不得其解,后来无意使用db2ilist查看实例信息,返回的结果是空的,是不是因为没有创建instance造成的呢?这点跟ORACLE完全不一样,客户端要创建什么实例?死马当活马医吧,回到root用户,运行db2icrt命令去创建instance,再回db2inst用户下编目TCP/IP一切ok。

#/opt/ibm/db2/V9.5/instance/db2icrt -a AuthType -u FencedID InstName

-a AuthType (Linux 或 UNIX)

表示实例的认证类型。AuthType 可为 SERVER、CLIENT 或 SERVER_ENCRYPT 其中之一。 SERVER 是缺省值。此参数是可选的。

-u FencedID

指定创建的受防护用户的名称。表示将用来运行受防护用户定义的函数(UDF)和受防护存储过程的用户的名称。如果在客户机上创建实例,那么此选项不是必需的。但是在server上创建时必须要指定这个FencedID的。

InstName

表示实例的名称。实例的名称必须与拥有实例的用户的名称相同。指定创建的拥有实例的用户的名称,将在拥有实例的用户的主目录中创建该实例。

解决该问题后,catalog编目:

[db2inst1@ochef ~]$ db2 catalog database sample at node ochefdb2

[db2inst1@ochef ~]$ db2 terminate

必须先在客户端上编目数据库,客户端应用程序才能访问远程数据库。在编目远程数据库时需要数据库名称、数据库别名、节点名、认证类型、注释等信息。只有在client端要连接到server端时才需要编目,因为节点目录用于存储远程数据库的所有连通性信息,这一过程类似ORACLE中sqlnet.ora和tnsnames.ora二个文件的作用。

使用CLP测试客户端到服务器的连接:

[db2inst1@ochef bin]$db2  connect to sample user db2inst1 using db2inst1

如果连接成功,会收到一条显示已经连接到的数据库名称,如下所示:

Database Connection Information

Database server      = DB2/LINUX 9.7.0

SQL authorization ID  = DB2INST1

Local database alias   = SAMPLE

通过客户端查询系统目录表中列示的所有表名的列表:

[db2inst1@ochef ~]$db2 select tabname from syscat.tables

……

HMON_ATM_INFO

HMON_COLLECTION

POLICY

433 record(s) selected.

要中断连接时,使用db2 connect reset 命令将中断该连接。

附:Configure db2 client to server connection checklist:

1 DB2SYSTEM注册变量是否为主机的hostname,db2安装时已经默认设置,如中间更改过hostname,需要重设:

$db2set DB2SYSTEM=HOSTNAME

2 在serverh 验证实例使用的通讯协议,查看DB2COMM变量

$db2set -all  若不是需修改

$db2set DB2COMM=tcpip

3 查看/etc/services中,有无与上面对应SVCENAME的端口,例如:

db2inst1 50000/tcp

要确认服务器是否在监听,可以用netstat -an 来查看端口是否处于LISTEN状态

tcp   0   0 0.0.0.0:50000     0.0.0.0:*      LISTEN

4 更新实例配置文件

$db2 update dbm cfg using svcename db2inst1

5 是否在client端catalog节点

$ db2 catalog tcpip node ochefdb2 remote 192.168.0.97 server 50000

验证远程服务器实例配置

$db2 list node directory

Node Directory

Number of entries in the directory = 1

Node 1 entry:

Node name                      = OCHEFDB2

Comment                        =

Directory entry type           = LOCAL

Protocol                       = TCPIP

Hostname                       = 192.168.0.97

Service name                   = 50000

查看更详细的信息使用:

$db2 list node directory show detail

6 ping hostname来验证通讯

使用telnet hostname port来验证是否能连到实例。

-The End-

Written by ochef

November 1st, 2009 at 9:49 am

Posted in Database

Tagged with , ,

无觅相关文章插件,快速提升流量