远程连接:
在DB2服务端,主要噢诶之通信协议和IP端口号,远程连接的通信协议一般都是TCPIP,IP端口号是针对实例的,每个实例有一个SVCENAME参数指定端口号。
在DB2客户端,要通过catalog命令进行编目。编目就是将服务端的一些配置信息在客户端记录一下,如IP、端口号等。对IP和端口号的登记操作叫做节点编目(node catalog),而对数据库信息登记叫做数据库编目(database catalog)
案例:服务端是AIX机器,IP为192.186.90.9,实例端口号为50000,改实例包含testdb数据库。客户端是远程一台PC,要访问testdb。
1.首先在DB2服务端配置:
db2set db2comm=tcpip
Db2 update dbm cfg using svcename 50000
Db2stop
Db2start
(重启才生效)
2.然后在DB2客户端编目:
编目节点:db2 catalog tcpip node node_9 remote
编目数据库:db2 catalog db testdb as testdb at node node_9
使操作生效:db2 terminate
查看节点信息:db2 list node directory
查看数据库信息:db2 list db directory
3.在客户端远程连接数据库
Db2 connect to testdb user db2inst1 using password
常见的数据库连接问题
1.通信协议错误。以下几步分析原因:
a) 检查网络是否正常。
b) 是否存在防火墙问题。
c) 检查服务器db2diag.log 日志,并确认实例端口(SVCENAME参数)和db2comm 注册变量是否正确。
d) 检车客户端节点编目和数据库编目是否正确。
2.数据库连接编码问题
a) 客户端访问数据库时,如果客户端代码页与服务器数据库代码页不兼容,连接时会出现字符转换问题。这是可在客户端设置db2codepage注册变量。
b) 国内常用的代码页是1208/3186/819。1208是UTF-8编码集。819和1208兼容,1386和1208兼容,819和1386不相容。
c) 设置命令 db2set db2codepage=1386,db2 terminate,然后重新连接。
3.实例目录被删除或破坏,重新编目。重建实例不会删除数据库。
Db2 catalog db testdb on /testdbcatalog
4.删除数据库目录,重建库失败。<案例>
某客户要删除并重建数据库,但删除时没有采用drop database 命令而是直接删除数据库目录,重新建库时报错SQL1005N错误:数据库已经存在了。
通过 Db2 ? SQL1005N 查看报错信息。
这个错误有3中原因:
(1)需要创建的数据库别名已经存在于系统数据库目录和本地数据库目录,需要drop掉。
Db2 drop database database_alias
(2)需要创建的数据库别名存在系统数据库目录,不在本地数据库目录,需要uncatalog 别名。
Db2 uncatalog database your_database_alias
(3)存在于本地数据库目录,不在系统数据库目录中。需要先编目到系统数据库目录,然后删除数据库。
Db2 catalog database your_database_alias
Db2 drop database your_database_alias
如果使用这三种方法都没有成功,可以先创建一个空的数据库目录SQL0000X欺骗DB2,然后按照第(3)种方法catalog db db_name on <db_path>,然后执行drop database命令。
所以切记:删除数据库一定要使用drop database 命令,不要直接删除数据库目录。