oracle同义词和dblink,dblink以及同义词的使用

使用数据库连接来访问远程数据库中的表

需求:当我们想查询远程的数据库表,同时和本地数据库的表进行联合操作的时候。

本实验描述:在主机192.168.0.15的tnsnames.ora文件中有200字符串,保证可以使用conn scott/tiger@200等远程登录主机192.168.0.200上的数据库。

在主机192.168.0.15上使用sys用户本地登录,创建一个共有的数据库连接,名称为dh,连接到主机192.168.0.200数据库的system用户。

SQL> create public database link dh connect to system identified by oracle using '200';

Database link created.

SQL> select * from dba_db_links;

PUBLIC                   DH.COM                                                        SYSTEM

200

15-SEP-15

SQL> select * from v$instance;

1 mydb         desktop15.example.com                          11.2.0.1.0        15-SEP-15           OPEN        NO         1 STARTED

ALLOWED     NO  ACTIVE           PRIMARY_INSTANCE   NORMAL    NO

SQL> select * from v$instance@dh;

1 ORACLE1      oracle1                              11.2.0.1.0        15-SEP-15           OPEN        NO         1 STARTED

ALLOWED     NO  ACTIVE           PRIMARY_INSTANCE   NORMAL    NO

SQL> select * from scott.e@dh;

7788 SCOTT      ANALYST          7566 19-APR-87            4000            20

7369 SMITH      CLERK          7902 17-DEC-80             800            20

更新192.168.0.200主机数据库中的scott用户的e表中的工资,并提交。

SQL> update scott.e@dh set sal=sal+1;

2 rows updated.

SQL> select * from scott.e@dh;

7788 SCOTT      ANALYST          7566 19-APR-87            4001            20

7369 SMITH      CLERK          7902 17-DEC-80             801            20

SQL> commit;

在主机192.168.0.200上查询,发现更新成功。

SQL> select * from scott.e;

7788 SCOTT      ANALYST          7566 19-APR-87            4001            20

7369 SMITH      CLERK          7902 17-DEC-80             801            20

通过同义词来透明的访问和操作远程的表:

在主机192.168.0.15上的scott用户下创建表e200作为主机192.168.0.200上scott用户下的e表的同义词。

SQL> create synonym scott.e200 for scott.e@dh;

Synonym created.

SQL> select * from scott.e200;

7788 SCOTT      ANALYST          7566 19-APR-87            4001            20

7369 SMITH      CLERK          7902 17-DEC-80             801            20

更新同义词表scott.e200:

SQL> update scott.e200 set sal=sal-2;

2 rows updated.

SQL> select * from scott.e200;

7788 SCOTT      ANALYST          7566 19-APR-87            3999            20

7369 SMITH      CLERK          7902 17-DEC-80             799            20

SQL> commit;

在主机192.168.0.200上查看scott.e表,发现数据已更新:

SQL> select * from scott.e;

7788 SCOTT      ANALYST          7566 19-APR-87            3999            20

7369 SMITH      CLERK          7902 17-DEC-80             799            20

用户数据的复制:

实验:将主机192.168.0.58上的scott用户映射到192.168.0.15主机上的u03用户

注:u03用户可以事先在主机192.168.0.15上创建,并赋予和远程主机上的scott用户相同的权限。也可以不用创建,只是在映射的时候制定用户名u03,默认密码和远程主机scott用户的密码相同(即tiger),该实验中58主机上的scott用户的表所在的为USERS,默认映射到15主机的USERS表空间(如果15上没有USERS表空间則必须也指定表空间的映射,具体如下)

SQL> grant connect,resource to u03 identified by u03;

SQL> create public database link link58_system connect to system identified by oracle using '58';

[oracle@desktop15 expdir]$ impdp system/oracle network_link=link58_system schemas=scott remap_schema=scott:u03;

如果在15主机上存在和远程主机相同的表空间和用户,可以不用指定表空间和用户的映射。默认映射到同名的表空间及用户下。

[oracle@desktop15 ~]$ impdp system/oracle network_link=link58_system schemas=myu01

如果在15主机上不存在和远程主机相同的表空间和用户,则必须指定表空间和用户的映射,否则会报错:

[oracle@desktop15 ~]$ impdp system/oracle network_link=link58_system schemas=myu01 remap_tablespace=tbs1:users remap_schema=myu01:u05;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值