1.什么是dblink
dblink连接允许本地用户访问远程数据库数据。一旦这个连接建立,在分布式系统中每个数据库都必须有一个全局数据库名。
如以下图scott用户访问在远程数据库的emp表使用全局数据库名hq.acme.com

数据库链既可以是私有也可以是公有。如果它是私有,仅仅谁创建谁能访问;如果是公共,所有数据库用户都能访问
2.dblink名字
通常,数据库链的名字跟远程数据库全局数据库名一样。举例,如果全局数据库名是sales.us.oracle.com,数据库链名也叫sales.us.oracle.com
当设置初始化参数global_name为true,数据库dblink名字必须和远程数据库全局数据库名一致。
数据库检查全局数据库domain部分存储在数据字典,而不是初始化参数db_domain
SQL> select *from global_name;
GLOBAL_NAME
----------------------------------------
ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
3.实验
1)环境说明
服务器A:192.168.1.35
服务器B:192.168.1.100
2)在服务器B创建监听器
3)在服务器A创建网络服务名dbltest
以scott用户创建dblink
create database link link_2 connect to test identified by test using 'dbltest';
创建一私有数据库链,只有scott用户能使用,数据库其他用户不能使用,如果其他用户也能使用,须创建一个public数据库链
SQL> select * from user_db_links;
DB_LINK USERNAME PASSWORD HOST CREATED
---------------------------------------------------------------------- ---------- ------------------------------ ---------- -------
TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-1月 -15
LINK_2.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST dbltest 20-7月 -15
SQL> select * from t@LINK_2.REGRESS.RDBMS.DEV.US.ORACLE.COM;
A B
---------- ----------
1 10
2 20
3 30
4 40
封装
创建视图
SQL> create view t as select *from t@LINK_2.REGRESS.RDBMS.DEV.US.ORACLE.COM;
视图已创建。
SQL> select * from t;
A B
---------- ----------
1 10
2 20
3 30
4 40
或者使用别名
SQL> create synonym t_link for t@LINK_2.REGRESS.RDBMS.DEV.US.ORACLE.COM;
同义词已创建。
SQL> select *from t_link;
A B
---------- ----------
1 10
2 20
3 30
4 40
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26937943/viewspace-1765364/
,如需转载,请注明出处,否则将追究法律责任。