db2 联邦数据库练习

db2 联邦数据库练习

当我们需要对同一实例上两个数据库进行连接查询的时候是无法直接进行的。这一点在SQLServer中做得很好,可以直接使用数据库名称引用。而db2中必须使用联邦数据库(FEDERATED)

同一服务器上的两个实例:db2inst1 db2inst2 数据库分别是:mydb1 mydb2 (本地联邦和远程联邦同理,所以这里只演示远程联邦)

下面的操作在db2inst1上对db2inst2进行联邦,也就是可以在db2inst1上通过nickname访问db2inst2,所有操作都是在db2inst1下进行:

db2 update dbm cfg using FEDERATED YES
db2 connect to mydb1
--这里需要注意的是这个语句不能使用db2 ""执行,而是需要进入到db2 Command Line Processor 交互模式。这点是进行了很多尝试才发现的问题,注意问题是在password后面的字符串必须是双引号
--drda是默认的适配器
db2
create server f_mydb2 type db2/udb version 9.7 wrapper drda authorization db2inst2 password "******" options(dbname 'mydb2')
db2 "create user mapping for "db2inst1" server f_mydb2 options (add remote_authid 'db2inst2' , add remote_password '******')"
--db2inst2中存在一个表tb2
db2 "create nickname mydb2_tb2 for f_mydb2.db2inst2.tb2"
db2 "select * from mydb2_tb2"
db2 "select * from tb1 a inner join mydb2_tb2 b on b.id = a.id"

 

另外附上相关的表和视图:

SYSIBM.SYSWRAPPERS --每一行代表注册过的转换器 (wrapper) 
SYSIBM.SYSSERVERS  --每一行代表了数据源的信息,如数据源版本号,类型等
SYSIBM.SYSFUNCMAPPINGS   --包括函数映射的基本信息如函数映射名,基于服务器的名字等等,一般可以用来判断找不到相应函数这类的错误
SYSIBM.SYSSERVEROPTIONS   --包括对服务器选项的设置信息,如 Collating_sequence,PROXY_AUTHID 等,这些选项的设置可以对查询性能产生影响
SYSIBM.SYSTYPEMAPPINGS   --包括数据类型映射的基本信息,如联邦服务器这一侧的数据类型和远程数据源短的数据类型的对应关系,一般用于判断数据类型相关的错误
SYSIBM.SYSUSEROPTIONS   --在这个表中包括了用户选项及其设置值,如连接远程数据源使用的用户名和密码信息 (REMOTE_AUTHID, REMOTE_PASSWORD) 等,一般可以用于判断连接错误或者访问权限错误 ( 配合 DB2 本身的 SYSDBAUTH 系统表 ) 
SYSIBM.SYSWRAPOPTIONS   --其中包含了关于创建的转换器的一些可选信息,例如在使用转换器的时候是否使用“ Trusted ”或者“ Fenced ”选项
SYSIBM.SYSPASSTHRUAUTH
SYSIBM.SYSFUNCMAPPARMOPTIONS
SYSIBM.SYSFUNCMAPOPTIONS

视图:

SYSCAT.FUNCMAPPINGS 
SYSCAT.FUNCMAPPARMOPTIONS 
SYSCAT.FUNCMAPOPTIONS 
SYSCAT.NICKNAMES 
SYSCAT.PASSTHRUAUTH 
SYSCAT.SERVEROPTIONS 
SYSCAT.SERVERS 
SYSCAT.TYPEMAPPINGS 
SYSCAT.USEROPTIONS 
SYSCAT.ROUTINESFEDERATED

 

posted on 2012-07-25 00:23  trams  阅读(1705)  评论(0编辑  收藏  举报