database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。
在创建database link的时候,Oracle再数据字典中保存相关的database link的信息,在使用database link的时候,Oracle通过Oracle Net用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。
建立database link之前需要确认的事项:
A 确认从local database到remote database的网络连接是正常的,tnsping要能成功。
B 确认在remote database上面有相应的访问权限。
第一:创建数据库链接的语法如下:
A CREATE [PUBLIC] DATABASE LINK link
CONNECT TO username IDENTIFIED BY password
USING ‘connectstring’
B create PUBLIC database link "qilin"
connect to scott identified by qilin
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.83)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pridata)
)
)';
注意:
A 创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种 权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。
B 一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私有数据库链接是不可能的,一 个数据库链接要么是公用的,要么是私有的。
第二:创建数据库链接时,还可以使用缺省登录方式,即不指定远程数据库的用户名和密码:
create public database link zrhs_link
using ‘zrhs’;
在不指定用户名和口令的情况下,ORACLE使用当前的用户名和口令登录到远程数据库。
USING后面指定的是链接字符串,也就是远程数据库的网络服务名,这个服务名保存在TNSNAMES.ORA文件中,在该文件中定义了协议、主机名、端口和数据库名。
第三:删除数据库链接的语句是:
DROP [PUBLIC] DATABASE LINK zrhs_link
第四:修改gloabal_names=FALSE
SQL> SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME LIKE 'global_names ';
如果看到gloabal_names=true,则:
SQL〉ALTER SYSTEM SET global_names=FALSE;
第五:查看创建DBLINK的信息
SQL> select * from dba_db_links;
select * from all_db_links;
select * from user_db_links;
ALL_DB_LINKS 视图和 USER_DB_LINKS视图与 DBA_DB_LINKS视图相类似-它们分别显示了你能够访问的所有链接及你所拥有的全部链接。
第六:DBA_OBJECTS(ALL_OBJECTS/USER_OBJECTS)在这个视图里面只能查询到系统有那些database link以及他们的owner,创建时间等信息。
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE 'DATABASE LINK';
第七:查看保存的Fixed user database link所保存的用户密码这是比较危险的一件事,有必要对表sys.link$的权限进行限制。
select name, host, userid, passwordx from sys.link$;
第八:查看当前有什么人在用database link
SELECT * FROM V$database link
第九:database link的使用
a 不想让使用的人知道database link的名字的时候,建一个别名封装
CREATE SYNONYM table_name FOR table_name@database link;
SELECT * FROM table_name;
create synonym su for demo@XIAOLIAO;
select * from su;
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE 'SYNONYM' and object_name='SU';
b 也可以建立一个视图来封装
CREATE VIEW table_name AS SELECT * FROM table_name@database link;
create view sai as select * from demo@XIAOLIAO;
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE 'VIEW' and object_name='SAI';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20976446/viewspace-687143/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20976446/viewspace-687143/