Database Link使用

环境说明:
 本地数据库
     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
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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26937943/viewspace-1417273/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26937943/viewspace-1417273/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值