创建Oracle的DB Link实战

来源:互联网 发布:大疆osmo软件 编辑:程序博客网 时间:2024/05/22 08:34
当有在一台数据库服务器上集合或者分类筛选位于其他数据库服务器上的数据时,如果从应用层面上来解决问题,可能需要占用大量内存并且很费事。
Oracle数据库本身提供了DB LINK的机制来达到这个目的,以下以具体步骤来实现这个操作。
 
1. 首先在管理数据库上创建到一个数据库的DB LINK.
-- Drop existing database link if needed
drop database link ctm_16;
-- Create database link
create database link ctm_16
  connect to CTM identified by odsctem
  using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 128.64.96.16)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = odsctlcs)
)
)';
 
2. 为这个DB LINK就要查询的表创建SYNONYM,方便查询。
CREATE SYNONYM ctm_ajf_16 FOR cmr_ajf@ctm_16;
 
3. 创建到另外一个数据库的DB LINK
-- Drop existing database link
drop database link ctm_48;
-- Create database link
create database link ctm_48
  connect to ctm identified by odsctm
  using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 128.64.96.48)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = odsctem)
)
)';
 
4. 同样创建SYNONYM.
CREATE SYNONYM CMR_AJF_48 FOR CMR_AJF@CTM_48;
 
5. 这时候已经可以联合位于两个不同数据库的数据进行查询了。
Example:查询两个库都存在的jobname.
select a48.jobname from cmr_ajf_48 a48 join cmr_ajf_16 a16 on a48.jobname=a16.jobname;
 
另配置创建DB LINK的TNS部分,也可以在本地的TNSNAMES.ORA写入,然后在创建时候指定服务名,但个人觉得这样创建,灵活性更高一些:-)
 
原创粉丝点击