创建database link小结
2010-08-04 10:48:26| 分类: streams和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';