【玩转DB2】二、DB2联邦详细操作和踩坑 | 您所在的位置:网站首页 › db2查询表字段 › 【玩转DB2】二、DB2联邦详细操作和踩坑 |
建立联邦(建立数据库与数据库联系与问题)
有问题可以找小可玩,评论留言。什么是联邦??建立和另外一个库的关系,换句话说就是我可以在这个库查到另外一个库的表。 本地库连目标数据库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.db2start3、编目目标数据库信息(编目数据库名称不能超过8位) db2 catalog tcpip node 节点名 remote ip地址 server 端口; db2 catalog db 目标数据库名字 as 取得别名 at node 节点名; db2 terminate;(一定要提交,当你执行提交的时候就会退出数据库连接,切记!!) 查看是否创建成功 db2 list node directory db2 list db directory4、建立联邦:创建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 实验室设备网 版权所有 |