联邦数据库三部分名字简介
联邦数据库使用昵称访问和管理远程数据源,每一个昵称对应着远端数据源的一个对象。不过,在一个大型联邦数据库环境中,每一个远端数据源服务器上都包含了大量的数据库对象(例如:表,试图等),用户需要为每一个远端对象创建一个昵称。在这样的环境下,创建昵称就成了一件非常繁琐的事情。另外,管理这些昵称也加重了用户的管理工作。
为了解决这个问题,在联邦数据库最新版本 V10.1 中引入了一种全新的解决方法—“三部分名字”。简单的说,就是在创建了包装器、服务器以及用户映射的基础上,允许用户使用“server.schema.table_name”或“schem.table_name@server”形式的三部分名字,直接访问和管理远程数据源的数据。这样就大大节省了用户在创建和管理昵称上的繁琐工作。
相对于昵称而言,使用三部分名字时,联邦数据库在第一次通过 SQL 引用远程数据库对象时,联邦数据库将获取到远程数据库对象的元数据和状态信息(比如,统计信息),并且将这些信息保存在缓存中。用户将不再需要管理和维护联邦数据库中的编目表。
另外,利用“schema.table_name@server”引用远程对象的方式,实际上是和 Oracle 的 Query Gateway 是兼容的。利用这种三部分名字,用户可以直接将 Oracle Query Gateway 上的应用移植到联邦数据库上。
三部分名字的用法
本节中我们将详细介绍如何使用三部分名字进行查询和更新。
和昵称一样,在使用三部分名字前,仍然需要创建包装器、服务器、用户映射,具体步骤如下。
1)创建包装器(例子中的语句用于 Linux 和 Solaris):
清单 1. 创建包装器的命令
CREATE WRAPPER ctlib; CREATE WRAPPER drda; CREATE WRAPPER odbc OPTIONS (MODULE '/opt/lib/odbc.so');
2)创建服务器:
清单 2. 创建服务器的命令
CREATE SERVER sybase_server1 TYPE sybase VERSION 15.5 WRAPPER ctlib OPTIONS( NODE 'sybase_node', DBNAME 'sybase_db'); CREATE SERVER drda_server1 TYPE db2/cs VERSION 10 WRAPPER drda OPTIONS ( node 'udb_node'); CREATE SERVER odbc_server1 TYPE odbc VERSION 4.0 WRAPPER odbc OPTIONS ( NODE 'odbc_node', DBNAME 'venice');
3)为服务器创建 DB2 用户和数据源用户之间的映射:
清单 3. 创建用户映射的命令
CREATE USER MAPPING FOR user SERVER sybase_server1 OPTIONS ( REMOTE_AUTHID 'sybase_usr', ENABLE_KERBEROS_CONNECTION 'Y'); CREATE USER MAPPING FOR user SERVER drda_server1 OPTIONS ( REMOTE_AUTHID ' drda_usr', REMOTE_PASSWORD ' drda_pw'); CREATE USER MAPPING FOR user SERVER odbc_server1 OPTIONS ( REMOTE_AUTHID 'mssql_usr', REMOTE_PASSWORD 'mssql_usr');
4)创建远端对象(需要直接在远端数据源执行):
清单 4. 创建远端对象的命令
-- 创建远端 SYBASE 对象 -- 表 syb_tb1 记录雇员的基本信息 : ID, NAME, AGE CREATE TABLE syb_tb1(COL_ID int, COL_NEMA char(20), COL_AGE int ); -- 表 syb_tb2 记录雇员的工作信息 : ID,DEP, JOB CREATE TABLE syb_tb2(COL_ID int, COL_DEP char(20), COL_JOB char(20) ); -- 创建远端 UDB 对象 -- 表 drda_tb1 记录雇员地址信息 : ID,ADDRESS CREATE TABLE drda_tb1(COL_ID int, COL_ADDRESS char(100) ); -- 表 drda_tb2 记录雇员电话信息 : ID,PHONE CREATE TABLE drda_tb2(COL_ID int, COL_PHONE int(20) ); -- 创建远端 MSSQL 对象 -- 表 msq_tb1 记录雇员的简历:ID,RES CREATE TABLE msq_tb1(COL_ID int, COL_RES CHAR(2000) );
注意,如果用户需要用 schema.table_name@server 形式的三部分名字,则需要将 db2set 注册变量 DB2_COMPATIBILITY_VECTOR 的第 18 位设为 1:
清单 5. 设置 db2set 注册变量
db2set DB2_COMPATIBILITY_VECTOR=10000; db2stop; db2start; -- 或者将其设为 ORA: db2set DB2_COMPATIBILITY_VECTOR=ORA; db2stop; db2start;
完成了上述步骤后,我们就可以使用三部分名字访问远程数据了!下面是使用三部分名字的实例。
使用三部分名字查询更新远程数据实例
下面列出了使用三部分名字的实例,从中可以看到三部分名字的一般用法。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 对象
, 用户
, 名字
, create
, 部分
, 数据部分
部分数据
ibm技术支持电话、ibm技术支持、ibm支持、ibm技术支持待遇、ibm英语技术支持,以便于您获取更多的相关知识。