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 ,

猜你喜欢

转载自dong717.iteye.com/blog/1552305