欢迎投稿

今日深度:

DB2中编目本机当中数据库的方法,db2编目

DB2中编目本机当中数据库的方法,db2编目


问题:同一节点上有两个实例,如果想在其中一个实例下访问另一个实例中的数据库,有两种方法:

1. 使用catalog local node的方式,在其中一个实例中将另外一个实例直接编目,这种方试中,它们之间采用的通信方式是IPC(进程间通信),这种方式只能在同一物理机上进行。

2. 使用catalog TCPIP node的方式,将其中一个作为客户端,另一个作为服务端, 这种方式中,它们之间采用的通信方式是TCPIP,这种方式不限于本地,也适用于远程通信。

 

下面分别举两个例子来说明这个过程 

 

实验 DB2 10.1.0.0, Windows操作系统,使用catalog local node的方式。

1. 机器上有两个实例INST01INST02,实例INST01下有一个数据库SAMPLE1,实例INST02下有一个数据库SAMPLE2,启动两个实例之后,如下图所示:


现在,在实例INST01下使用catalog local node的方式将实例INST02编目进来(注意,以下所有操作都是在实例INST01下完成)


这里的node01相当于给INST02的起的别名,使用attach连接到node01之后,发出的create database命令相当于在INST02下进行的。



从以上的输出中可以看到创建的数据库SAMPLE3实际上是在INST02下,而非INST01下。

 

为了可以在INST01下访问INST02中的数据库SAMPLE2,可以直接在INST01对其编目。




可以使用 connect to 命令连接数据库了



实验2 DB2 v10.5 , Linux 使用catalog TCPIP node的方式

同一台物理机上有两个实例 qingsongdb2inst2,其中实例QINGSONG下有数据库QSMIAO,作为服务端,实例db2inst2作为客户端



1. 查看/etc/services文件


2. 使用root用户/etc/services里添加一行 REMOTE_TEST 60012/tcp

3. 服务端qingsong上更新数据库管理器配置文件

$ db2 update dbm cfg using svcename REMOTE_TEST

$ db2stop

$ db2start

$ db2 get dbm cfg | grep svcename

 

4. 设置服务端的通信协议为TCPIP

$ db2set DB2COMM=tcpip

$ db2stop

$ db2start

$ db2set -all

 

 

5. 客户端 编目节点

$ db2start

$ db2 list node directory

$ db2 catalog TCPIP node qingnode remote localhost server 60012

$ db2 terminate

$ db2 list node directory

 

其中,localhost指本机,如果是在远程,可以直接修改为对应的IP地址,60012指服务端对应的端口。

 

6. 客户端 编目数据库

$ db2 catalog db qsmiao as remoteDB at node qingnode

$ db2 list db directory

$ db2 connect to REMOTEDB user qingsong using qingsong



上面的这种编目方式是 TCPIP node 

 

参考资料:

Catalog tcpip node

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001944.html?cp=SSEPGG_9.7.0%2F3-6-2-4-17&lang=en

Catalog local node

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001989.html?cp=SSEPGG_9.7.0%2F3-6-2-4-14&lang=en

Catalog database

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001936.html?cp=SSEPGG_9.7.0%2F3-6-2-4-10&lang=en

 



到底DB2 catalog是什东西?

解,具体来说编目有编目节点,编目数据库等。如果要理解编目,我先简单讲一下DB2数据库的体系结构,在DB2数据库中最大的概念是系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,然后是数据库对象。现在假设你有一个数据库服务器在p570的机器上,你有一个客户端在db2 catalog tcpip node p570 remote 172.10.10.10 server 50000在上面的这条命令中p570是一个节点名(在一个机器上必须是唯一的),remote后面是服务器的IP地址,server是远程服务器上实例对应的端口号。DB2通过这种方式在本地的SQLNODIR文件中把远程服务器的信息记录下来,所以编目节点其实就是把远程服务器映射到本地,通过SQLNODIR中的记录能够找到远程服务器和实例,类似指向远程服务器和实例的地址指针。第2步:当把远程的服务器IP地址,实例编目下来后,第二步应该把该实例下的数据库编目到本地db2 catalog db REMOTEDB at node p570在这条命令中,REMOTEDB是远程实例下的数据库,p570是我们在第一步中编目的节点名这条命令执行后会在本地SQLDBDIR文件中记录远程数据库的信息,这这里编目数据库可以理解为把远程服务器实例下的数据库映射到本地为一个别名=========================================
 

设定我现在有两个DB2数据库A与B,现在要在A数据库中访问到B数据库总某一张表里的数据,这个该怎做

如果在不同的机器上,你就做数据库编目。原理就是你要访问那个数据库,你要先访问那台主机,然后访问到主机上的实例,通过实例访问数据库。分两步:
1、编目远程节点
db2 catalog tcpip node 节点名(随便起) remote 远程机器ip地址 server 远程机器实例端口号
例如:db2 catalog tcpip node NODE_ B remote 192.168.1.1 server 50000
就是把地址为192.168.1.1 端口为50000的实例编目到本机名字为NODE_B的节点上
2、编目远程数据库
db2 catalog db 数据库名 at node NODE_B
例如:db2 catalog db B at node NODE_B 就是编目名字为B的数据库在节点NODE_B上
3、db2 terminate
4、db2 list db directory 你就能看见数据库了
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/4465.html NewsArticle DB2中编目本机当中数据库的方法,db2编目 问题:同一节点上有两个实例,如果想在其中一个实例下访问另一个实例中的数据库,有两种方法: 1. 使用 cataloglocalnode 的方式,在其中一个...
评论暂时关闭