我们在做某些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. jQuary总结3: jQuery语法1

    1.jQuery样式操作 1.1 设置或者修改样式,操作的是style属性. 单样式语法: jQuery对象.css('属性名', '属性值') //html <div id="box ...

  2. Centos 安装编译codeblocks&&codelite

    codeblocks http://www.cnblogs.com/magialmoon/archive/2013/05/05/3061108.html http://wiki.codeblocks. ...

  3. Alpha冲刺(五)

    Information: 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Details: 组员1 柯奇豪 过去两天完成了哪些任务 基于ssm框架的前后端交互测试,结合微信小 ...

  4. 【扫盲贴】为什么屏幕分辨率是 640x480

    本文原地址:http://www.easyx.cn/skills/View.aspx?id=172 常见的屏幕分辨率很奇怪,为什么总用一些不零不整的数字?比如以前最常见的分辨率是 640x480,当初 ...

  5. 洛谷P2387 [NOI2014]魔法森林(lct维护最小生成树)

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,…,n,边标号为 1,2,3,…, ...

  6. UVA - 12424 Answering Queries on a Tree(十棵线段树的树链剖分)

    You are given a tree with N nodes. The tree nodes are numbered from 1 to N and have colors C1, C2,. ...

  7. Linq集合操作之Intersect,Except,Union源码分析

    Linq集合操作之Intersect,Except,Union源码分析 linq的集合运算 常见的集合运算有哪些? 这三个扩展方法在我们实际使用中用的还是非常多的,而且这里还涉及到了“复杂度” 无算法 ...

  8. Linq基础操作之Select,Where,OrderBy,ThenBy源码分析

    Linq基础操作之Select,Where,OrderBy,ThenBy源码分析 二:Select 它是延迟执行.yield有得一拼,因为他们都是生成了一个枚举类. if (source is TSo ...

  9. Oracle SQl优化总结

    对数据库技术的热爱是我唯一的安慰,毕竟这是自己喜欢的事情,还可以做下去. 因为客户项目的需要,我又开始接触Oracle,大部分工作在工作流的优化和业务数据的排查上.为了更好的做这份工作,我有参考过or ...

  10. Shapefile点图层转换为Shapefile线图层

    在Oracle数据表转换为Shapefile(一)和Oracle数据表转换为Shapefile(二)两篇文章中,分别介绍了两种不同的根据Oracle数据表生成Shapefile点图层的方法.本文在此基 ...