创建DBlink 详解

===========================================================
创建DBlink 详解及尚存疑问(DB LINK 连接正常后建立同义词后多个同义词不能正常查询)
作者: moonsoft(http://moonsoft.itpub.net)
发表于: 2006.06.23 15:55
分类: Oracle基础
出处: http://moonsoft.itpub.net/post/15182/125559
---------------------------------------------------------------
数据库之间的链接建立在DATABASE LINK上。要创建一个DB LINK,必须先在每个数据库服务器上设置链接字符串。
DB LINK 连接正常后建立同义词(多个)不能正常查询出记录

1、 链接字符串即服务名,首先在本地配置一个服务名,地址指向远程的数据库地址,服务名取为将来你要使用的数据库链名.
需要在创建dblink 的DB上配置好tnsname.ora , 把那个被连接的db信息加入进去:
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.36.183)(PORT = 1524))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)
  
  
  2、创建数据库链接,
  进入系统管理员SQL>操作符下,运行命令:
  
  SQL>create public database link beijing connect to scott identified by tiger using 'tobeijing';
  格式:
create public database link erp_danzheng_test connect to user identified by password using 'SID' ;
  则创建了一个以scott用户和北京数据库的链接beijing,我们查询北京的scott数据:
  
  SQL>select * from emp@beijing;
  
  这样就可以把深圳和北京scott用户的数据做成一个整体来处理。
  为了建立之后经常删除的需要:
DROP PUBLIC DATABASE LINK erp_danzheng_test ;
  3、建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym
  
  SQL>create synonym bjscottemp for emp@beijing;
  
  于是就可以用bjscottemp来替代带@符号的分布式链接操作emp@beijing。
  
create public synonym poh for po_headers_all @ erp_danzheng_test ;
create public synonym papf for per_all_people @ erp_danzheng_test ;
create public synonym pv for po_vendors @ erp_danzheng_test ;
  4、查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:
  
  SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
参考资料:
http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_admin.htm#i1008271
DB LINK 连接正常后建立同义词不能正常查询出记录
STEP 1: 建立 db link

create public database link erp_danzheng_test connect to USER identified by PASSWORD using 'txcprod';

STEP2
查询 :
SELECT poh.creation_date , papf.full_name, pv.vendor_name
FROM po_headers_all@erp_danzheng_test poh,
per_all_people_f@erp_danzheng_test papf ,
po_vendors@erp_danzheng_test pv
WHERE poh.segment1 = '20600041'
and pv.vendor_id=poh.vendor_id
and poh.agent_id=papf.person_id

查询出来一条记录 , 查询成功

STEP3
建立同义词

create synonym poh for po_headers_all@erp_danzheng_test;
create synonym papf for per_all_people@erp_danzheng_test;
create synonym pv for po_vendors@erp_danzheng_test;


STEP4:
用同义词的表名进行查询 :

SELECT poh.creation_date , papf.full_name, pv.vendor_name
FROM poh,
papf ,
pv
WHERE poh.segment1 = '20600041'
and pv.vendor_id=poh.vendor_id
and poh.agent_id=papf.person_id


没有查出来那条记录 !!!!
试试 public synonym -- 不行
加上用户名:

create synonym poh for user.po_headers_all@erp_danzheng_test;

再看看 -- 还是不行
但是,单独查询一条记录是可以的
select *
from poh
where poh.segment1='20600041'
http://www.itpub.net/showthread.php?s=&postid=4655146#post4655146
moonsoft 发表于:2006.06.23 15:55 ::分类: ( Oracle基础 ) ::阅读:(5152次) :: 评论 (2) :: 收藏此页到365Key
<script type=text/javascript> </script>
re: 创建DBlink 详解及尚存疑问(DB LINK 连接正常后建立同义词后多个同义词不能正常查询) [ 回复]
wink.gif wassat.gif sad.gif crying.gif angry.gif tongue laughing smile wink.gif wassat.gif sad.gif wassat.gif wassat.gif
收了
MSC 评论于: 2007.02.12 11:46
re: 创建DBlink 详解及尚存疑问(DB LINK 连接正常后建立同义词后多个同义词不能正常查询) [ 回复]
天啊,是可以的, 以上两个疑问是由于连错了Database , 真是晕
moonsoft 评论于: 2006.06.26 10:48
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值