创建database link小结  

2010-08-04 10:48:26|  分类: streams和dblink |  标签: |字号 订阅

 
 
》》》创建oracle dblink 的语法
  CREATE [PUBLIC] DATABASE LINK 数据库链接名
      CONNECT TO 用户名 IDENTIFIED BY 密码
      USING ‘数据库连接字符串’;
或:

CREATE [PUBLIC] DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING ‘connectstring’


例子:
  create database link db1_link
     connect to user_name identified by password
     using 'database_name';
这样创建完成以后,就可以查看更改远程数据库的信息了,例如:
select table_name from user_tables@db1_link;
注意:这个数据库连接字符串需要在TNSNAMES.ORA里定义或用NET8 EASY CONFIG
用NET8 EASY CONFIG 比如 :
   create database link db1_link
      connect to user identified by pwd
      using '(DESCRIPTION =
       (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = liuip)(PORT = 1521))
       )
       (CONNECT_DATA =
        (SERVICE_NAME = database_name)
       )
      )';
注意:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限
      
》》》--查看dblink情况
select * from dba_db_links;
select * from user_db_links;
select * from v$dblink;

》》》删除数据库链接的语句是:

DROP [PUBLIC] DATABASE LINK zrhs_link 

sql>drop public database link TEST.US.ORACLE.COM


 

 

数据库链接的引用

一般情况下引用数据库链接,可以直接将其放到调用的表名或视图名称后面,中间使用一个 @ 作为分割符:

SELECT * FROM worker@zrhs_link;

对于经常使用的数据库链接,可以建立一个本地的同义词,方便使用:

CREATE SYNONYM worker_syn FOR worker@zrhs_link;

还可以建立一个本地的远程视图,方便使用:

CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ;

对于另外一种情况,所要访问的表不在数据库链接中指定的远程帐户下,但该帐户有访问该表的权限,那么我们在表名前要加上该表的用户名:

SELECT * FROM camel.worker@zrhs_link


当数据库参数global_name=true时,那就要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

 

》》》查看所有的数据库链接:
select owner,object_name
from dba_objects
 where object_type='DATABASE LINK';