我们在做某些Schema的迁移的时候,由于用到Public的db link,然而由于不知道db link中目标端账号的密码,因此无法在新环境重新创建DB link。
本次实验的思路是将视图dba_db_links的基表link$迁移到出来并替换到新环境。因为用户的password密文保存在link$基表中。

--------------------- 

源端操作:
首先还在源端创建一个public 的db link 名为test。

Asherdb1 >create public database link test connect to scott identified by tiger using 'ginna';
Database link created.
seven >select * from global_name@test; GLOBAL_NAME
---------------------
GINNA Asherdb1 >select * from dba_db_links; OWNER DB_LINK USERNAME HOST CREATED
------------------------------ -----------------------------
PUBLIC TEST SCOTT
 
1
Asherdb1 >create public database link test connect to scott identified by tiger using 'ginna';
2
 Database link created.
3
 seven >select * from global_name@test;
4
 
5
GLOBAL_NAME
6
---------------------
7
GINNA
8
 
9
Asherdb1 >select * from dba_db_links;
10
 
11
OWNER DB_LINK USERNAME HOST CREATED
12
------------------------------ -----------------------------
13
PUBLIC TEST SCOTT   
创建中间表trans1,CTAS基表sys.link$。
Asherdb1 >create table trans1 as select * from sys.link$;
 
1
Asherdb1 >create table trans1 as select * from sys.link$;
目标端操作:
在目标端创建名为test2的Public db link。连接源端库
Asherdb2 >create public database link test2 connect to seven identified by oracle using 'seven';
Database link created. Asherdb2 >select * from global_name@test2;
 
1
Asherdb2 >create public database link test2 connect to seven identified by oracle using 'seven';
2
Database link created.
3

4
Asherdb2 >select * from global_name@test2;
通过test2的db link将Asher端的trans2表insert link$中。
Asherdb2 >insert into sys.link$ select * from trans1@test2;
 
1
Asherdb2 >insert into sys.link$ select * from trans1@test2;
现在再查一下dba_db_links就可以发现名为test的db link已经成功迁移在Asher端。
Asherdb2 >select * from dba_db_links;
 
1
Asherdb2 >select * from dba_db_links;
测试db link 的有效性:
Asherdb2 >select * from global_name@test;
 
1
Asherdb2 >select * from global_name@test;
主要就是将trans1这张中间表迁移至Asher库就可以了,这有很多方法,可以直接使用exp/imp或者数据泵都可以。条条大道通罗马,方法有很多种,主要就是将seven端的sys.link$基表迁移至Asher端并替换掉Asher端的sys.link$。
注: public dblink的 user# 是1
SQL> SELECT USER#,NAME FROM USER$ WHERE name in ('SYS','PUBLIC');

     USER# NAME
---------- ------------------------------
1 PUBLIC
0 SYS
6
 
1
SQL> SELECT USER#,NAME FROM USER$ WHERE name in ('SYS','PUBLIC');
2
 
3
     USER# NAME
4
---------- ------------------------------
5
         1 PUBLIC
6
         0 SYS
--------------

另: 可以通过修改基表(link$)让非public dblink变为public

DB link的迁移的更多相关文章

  1. oracle db link的查看创建与删除

    1.查看dblink select owner,object_name from dba_objects where object_type='DATABASE LINK'; 或者 select * ...

  2. Oracle global database name与db link的纠缠关系

    ORACLE数据库中Global Database Name与DB LINKS的关系还真是有点纠缠不清,在说清楚这个关系前,我们先来了解一下Global Database Name的概念 Global ...

  3. db link的查看创建与删除(转)

    1.查看dblink select owner,object_name from dba_objects where object_type='DATABASE LINK'; 或者 select * ...

  4. db link的查看创建与删除

    1.查看dblink select owner,object_name from dba_objects where object_type='DATABASE LINK'; 或者 select * ...

  5. 关于DB Link

    概述 DB Link是一个定义了本地数据库到远程数据库路径的对象,是schema object,它是单向连接 通过DB Link可查询remote数据库的对象及运行其程序 在分布式环境里,DB Lin ...

  6. [20180823]IMU与db link.txt

    [20180823]IMU与db link.txt --//当使用db link查看远程表时,实际上会产生小小的日志.--//当时如果与IMU结合在一起,可以导致IMU的失效. 1.环境:SCOTT@ ...

  7. DB Link

    oracle中DB Link select * from TB_APP_HEADER@SSDPPORTAL

  8. 全面解读Oracle同义词的概念作用、创建删除查看及Oracle的db link

    Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系. 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必 ...

  9. DB Link 去除域名

    1.查看global_name的设置 SQL> show parameters global_name; NAME                                 TYPE    ...

随机推荐

  1. CBV加装饰器解决登录注册问题和 <<中间件>>

    文本目录 CBV加装饰器解决登录注册问题 一:什么是中间件 二:中间件有什么用 三:自定义中间件 四:中间件应用场景 五:SCRF TOKEN跨站请求伪造 六: 其他操作 CBV加装饰器解决登录注册问 ...

  2. WCF和ASP.NET Web API在应用上的选择(转)

    出处:http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.html 在最近发布的Visual Studio 2012及.NET 4.5中 ...

  3. CEPH集群RBD快照创建、恢复、删除、克隆(转)

    Ceph支持一个非常好的特性,以COW(写时复制)的方式从RBD快照创建克隆,在Ceph中被称为快照分层.分层特性允许用户创建多个CEPH RBD克隆实例.这些特性应用于OpenStack等云平台中 ...

  4. Error creating bean with name 'us' defined in class path resource [com/liuyang/test/DI/beans2.xml]: Cannot resolve reference to bean 'daoa' while setting bean property 'daoa'; nested exception is org.

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'us' defined ...

  5. VMware vSphere之vCenter

    1.vCenter是什么? vCenter Server 是 vSphere管理员使用的主要管理工具,首先,通过它可实现对数据中心所有主机的单点控制,也就是提供集中式管理.其次,提供基本的基础结构操作 ...

  6. 编写高质量代码改善C#程序的157个建议——建议152:最少,甚至是不要注释

    建议152:最少,甚至是不要注释 以往,我们在代码中不写上几行注释,就会被认为是钟不负责任的态度.现在,这种观点正在改变.试想,如果我们所有的命名全部采用有意义的单词或词组,注释还有多少存在的价值. ...

  7. Discovering Gold LightOJ - 1030 (概率dp)

    You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the cave c ...

  8. 阿里云vsftp安装和简单的配置

    1.系统环境 [root@jie ~]# cat /etc/redhat-release CentOS release 6.8 (Final) [root@jie ~]# [root@jie ~]# ...

  9. Java NIO学习-详细内容(一)

    一.三大类 1.Channels FileChannel DatagramChannel SocketChannel ServerSocketChannel 2.Selector与SelectionK ...

  10. Centos部署Abp zero常见问题及处理

    多租户切换,多语言切换异常 解决: 修改nginx配置,在nginx.conf中 增加 #多租户问题 ignore_invalid_headers off; 修改应用程序Logo异常处理 异常: Sy ...