sqldblink建好不能查询_创建DBlink 详解及尚存疑问(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'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值