环境说明:
本地数据库
ip:192.168.1.35
远程数据库
ip:192.168.1.135
实验目的:
本地数据库scott用户访问远程数据库test用户下的t_link表
1、远程数据库创建表t_link表
SQL> create table t_link(id int,name varchar(10));
表已创建。
SQL> insert into t_link values(1,'a');
已创建 1 行。
SQL> insert into t_link values(2,'b');
已创建 1 行。
SQL> insert into t_link values(3,'c');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t_link;
ID NAME
---------- ----------
1 a
2 b
3 c
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
以sys查看
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- -------------------------------------------------- -------- ---------- ---------------
SCOTT TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-JAN-15
本地数据库
ip:192.168.1.35
远程数据库
ip:192.168.1.135
实验目的:
本地数据库scott用户访问远程数据库test用户下的t_link表
1、远程数据库创建表t_link表
SQL> create table t_link(id int,name varchar(10));
表已创建。
SQL> insert into t_link values(1,'a');
已创建 1 行。
SQL> insert into t_link values(2,'b');
已创建 1 行。
SQL> insert into t_link values(3,'c');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from t_link;
ID NAME
---------- ----------
1 a
2 b
3 c
2、在本地数据库配置好网络服务名连接远程数据库
AUX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.135)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = kk)
)
)
3.在本地数据库soctt用户创建dblink
scott要用create database link权限
SQL> conn / as sysdba
已连接。
SQL> grant create database link to scott;
授权成功。
SQL> conn scott/tiger
已连接。
SQL> create database link test_link connect to test identified by test using 'aux';
数据库链接已创建。
查看创建的db link
AUX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.135)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = kk)
)
)
3.在本地数据库soctt用户创建dblink
scott要用create database link权限
SQL> conn / as sysdba
已连接。
SQL> grant create database link to scott;
授权成功。
SQL> conn scott/tiger
已连接。
SQL> create database link test_link connect to test identified by test using 'aux';
数据库链接已创建。
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
以sys查看
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- -------------------------------------------------- -------- ---------- ---------------
SCOTT TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-JAN-15
4.本地scott用户访问远程数据库中的表
SQL> select *from t_link@test_link;
ID NAME
---------- ----------
1 a
2 b
3 c
以test用户访问报错
SQL> select *from t_link@test_link;
select *from t_link@test_link
*
ERROR at line 1:
ORA-02019: connection description for remote database not found
因为以上创建的是私有db link,其他用户不能使用,如果想test用户也能使用,则需要创建公有db link,我们再创建一个公有db link
SQL> conn / as sysdba
Connected.
SQL> create public database link p_test_link connect to test identified by test using 'aux'; --创建公有db link
Database link created.
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- -------------------------------------------------- -------- ---------- ------------
PUBLIC P_TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-JAN-15
SCOTT TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-JAN-15
SQL> conn test/test
Connected.
SQL> select * from user_db_links;
no rows selected
SQL> select *from t_link@p_test_link;
ID NAME
---------- ------------------------------
1 a
2 b
3 c
scott用户
SQL> select *from t_link@p_test_link;
ID NAME
---------- ----------------------------
1 a
2 b
3 c
创建公有db link,本地所有用户都能使用这个公有db link
SQL> select *from t_link@test_link;
ID NAME
---------- ----------
1 a
2 b
3 c
以test用户访问报错
SQL> select *from t_link@test_link;
select *from t_link@test_link
*
ERROR at line 1:
ORA-02019: connection description for remote database not found
因为以上创建的是私有db link,其他用户不能使用,如果想test用户也能使用,则需要创建公有db link,我们再创建一个公有db link
SQL> conn / as sysdba
Connected.
SQL> create public database link p_test_link connect to test identified by test using 'aux'; --创建公有db link
Database link created.
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- -------------------------------------------------- -------- ---------- ------------
PUBLIC P_TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-JAN-15
SCOTT TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST aux 25-JAN-15
SQL> conn test/test
Connected.
SQL> select * from user_db_links;
no rows selected
SQL> select *from t_link@p_test_link;
ID NAME
---------- ------------------------------
1 a
2 b
3 c
scott用户
SQL> select *from t_link@p_test_link;
ID NAME
---------- ----------------------------
1 a
2 b
3 c
创建公有db link,本地所有用户都能使用这个公有db link
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26937943/viewspace-1417273/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26937943/viewspace-1417273/