database link 创建、使用及常见问题

 在oracle中数据库与数据库 之间相互访问可以采用database link (以下简称dblink)方式连接,

 在每个数据库服务器上设置链接字符串,即服务名,就是我们用plsql登陆需要选择的那个东西

例如:

ORCL101 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.101)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

 ORCL101 数据库服务器连接字符串 服务名

 

1、创建db link

 

方式一、直接新建服务连接字符串

 SQL>create public database link  DONG connect to dong717 identified by "Dong717" 
using  '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.220)(PORT = 1521))
)
(CONNECT_DATA =
(service_name=ORCL)))';
 

 

方式二、使用已经建好的服务名

 

SQL>create public database
  link  DONG connect to dong717
  identified by "Dong717" using  'ORCL101';

 

2、查看数据库连接

 
sql> select owner, db_link from dba_db_links; 

OWNER   DB_LINK

 PUBLIC     DB_156

 

3、使用dblink执行查询

 

SQL>select * from  tb_sys_department t,department@DONG d where d.code=t.search_key

 

4、为了方便查询可以建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym

 

SQL>create synonym dept_link for department@DONG;
SQL>select * from dept_link

 

5、删除dblink

 

SQL>drop public database link DONG;

 

6、常见错误

 

1、ORA-12154: TNS : 无法处理服务名

 出现这种错误一般情况下是因为:
A:192.168.0.1 B: 192.168.0.2 C: 192.168.0.3
例如创建的服务名为dong717_B_at_c,是在C上配置的与B的连接。我们的目的 是创建从A到B 的数据库链,但我们使用的服务名却是 C B 的连接!
 
正确的方法是:在 A 上配置对应B 服务名dong717_B _at_a,从A连接到B。
遇到此类错误建议采用上面说的第一种方式创建dblink ,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值