【玩转DB2】二、DB2联邦详细操作和踩坑 您所在的位置:网站首页 db2查询表字段 【玩转DB2】二、DB2联邦详细操作和踩坑

【玩转DB2】二、DB2联邦详细操作和踩坑

2024-01-20 00:34| 来源: 网络整理| 查看: 265

建立联邦(建立数据库与数据库联系与问题)

有问题可以找小可玩,评论留言。什么是联邦??建立和另外一个库的关系,换句话说就是我可以在这个库查到另外一个库的表。

本地库连目标数据库1、登陆本地服务器数据库

切换到对应的用户:su - 本地库用户名 连接本地库:db2 connect to 本地库 user 本地库用户名 using 本地用户密码

2、开启联邦支持开启联邦支持,查看数据库管理配置文件,FEDERATED属性

db2 get dbm cfg

_

如联邦属性为NO, 则需开启属性,重启数据库。

1.cd /家/本地库用户名/ 2.db2 get dbm cfg | grep -i federated                 ----查询命令 3.db2 update dbm cfg using federated yes  ---重置命令 4.db2stop force 5.db2start

3、编目目标数据库信息(编目数据库名称不能超过8位)

db2 catalog tcpip node 节点名 remote ip地址 server 端口; db2 catalog db 目标数据库名字 as 取得别名 at node 节点名; db2 terminate;(一定要提交,当你执行提交的时候就会退出数据库连接,切记!!) 查看是否创建成功 db2 list node directory db2 list db directory

_

4、建立联邦:创建Wrapper, Server, Mapping创建Wrapper(这个联邦N次只需要创建一次)

db2 create wrapper drda

创建Server命令格式:

db2 "create server 自定义服务器名字 type DB2/UDB version 9.7 wrapper "DRDA" authorization 对方用户 password 对方密码 options (NODE 'node_name',dbname '对方数据库')" db2 "create server EDWSVR type DB2/UDB version 9.7 wrapper "drda" authorization \"edwinst\" password \"edwinst\" options(NODE 'N_EDW',DBNAME 'EDW') "

创建MAPPING

命令格式:  db2 "create user mapping for 本地用户 server options (remote_authid '对方用户', remote_password '对方密码')" db2 "create user mapping for \"db2inst1\" server payment1svr options (remote_authid 'db2inst2',remote_password 'db2inst2')"

5、建立联邦关系

db2 "create nickname  for " db2 "create nickname DSA.EDWCOLUMNS for QKDB1SVR.SYSCAT.COLUMNS"

6、遇见问题1、关于通信问题之类的错误。先检查编目是不是有问题。试着去连一下编目的数据库。

db2 list db directory db2 list node directory

在检查是不是开启联邦了。如果是no就按照上面步骤去做。

db2 get dbm cfg | grep -i federated                 ----查询命令

如果编目检查没有问题,语法写的也没有问题,联邦也开启了都没有问题,那就重启下数据库。遇见问题:

db2 "create server PASSVR type DB2/UDB version 10.5 wrapper "drda" authorization \"pasinst\" password \"pasinst\" options(NODE 'N_PASDB',DBNAME 'PASDB') "

报错信息:

DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL30080N A communication error "111" occurred sending or receiving data from the remote database. SQLSTATE=08001

解决办法:找了很久,然后重启edw数据库,然后在执行一遍好了!!所以很无语。2、常用的联邦sql。遇见问题:建立联邦的时候,编目完去连了一下编目的库,发现成功了!但是没有db2 terminate 所以没有退出来!导致我语句执行到联邦所在的库了,反调了,所以需要删除一些东西。问题解决:

db2 "list node directory" db2 "list db directory" db2 "drop nickname 要删的联邦表名" db2 "drop USER MAPPING FOR \"dainst\" server QKDB1SVR " db2 "drop server 删的服务名字" db2 "drop wrapper drda" db2 uncatalog node 节点名   (取消节点的编目) db2 uncatalog db 取得别名 /  数据库名字 (取消数据库的编目)

上面语句可能会用到。这次掉在db2 terminate这个坑里了,不知道这个还可以退出。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有