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'