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

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

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

  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. GLOBAL_NAME
  5. ---------------------
  6. GINNA
  7. Asherdb1 >select * from dba_db_links;
  8. OWNER DB_LINK USERNAME HOST CREATED
  9. ------------------------------ -----------------------------
  10. PUBLIC TEST SCOTT
 
1
  1. Asherdb1 >create public database link test connect to scott identified by tiger using 'ginna';
2
  1. Database link created.
3
  1. seven >select * from global_name@test;
4
5
  1. GLOBAL_NAME
6
  1. ---------------------
7
  1. GINNA
8
9
  1. Asherdb1 >select * from dba_db_links;
10
11
  1. OWNER DB_LINK USERNAME HOST CREATED
12
  1. ------------------------------ -----------------------------
13
  1. PUBLIC TEST SCOTT  
创建中间表trans1,CTAS基表sys.link$。
  1. Asherdb1 >create table trans1 as select * from sys.link$;
 
1
  1. Asherdb1 >create table trans1 as select * from sys.link$;
目标端操作:
在目标端创建名为test2的Public db link。连接源端库
  1. Asherdb2 >create public database link test2 connect to seven identified by oracle using 'seven';
  2. Database link created.
  3. Asherdb2 >select * from global_name@test2;
 
1
  1. Asherdb2 >create public database link test2 connect to seven identified by oracle using 'seven';
2
  1. Database link created.
3
  1.  
4
  1. Asherdb2 >select * from global_name@test2;
通过test2的db link将Asher端的trans2表insert link$中。
  1. Asherdb2 >insert into sys.link$ select * from trans1@test2;
 
1
  1. Asherdb2 >insert into sys.link$ select * from trans1@test2;
现在再查一下dba_db_links就可以发现名为test的db link已经成功迁移在Asher端。
  1. Asherdb2 >select * from dba_db_links;
 
1
  1. Asherdb2 >select * from dba_db_links;
测试db link 的有效性:
  1. Asherdb2 >select * from global_name@test;
 
1
  1. Asherdb2 >select * from global_name@test;
主要就是将trans1这张中间表迁移至Asher库就可以了,这有很多方法,可以直接使用exp/imp或者数据泵都可以。条条大道通罗马,方法有很多种,主要就是将seven端的sys.link$基表迁移至Asher端并替换掉Asher端的sys.link$。
注: public dblink的 user# 是1
  1. SQL> SELECT USER#,NAME FROM USER$ WHERE name in ('SYS','PUBLIC');
  2. USER# NAME
  3. ---------- ------------------------------
  4. 1 PUBLIC
  5. 0 SYS
6
 
1
  1. SQL> SELECT USER#,NAME FROM USER$ WHERE name in ('SYS','PUBLIC');
2
3
  1.     USER# NAME
4
  1. ---------- ------------------------------
5
  1.         1 PUBLIC
6
  1.         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. idea 删除代码的注释

      搜索栏使用 正则表达式搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*)   会搜索出来所有注释的代码 用空格replace替换掉就 ...

  2. hydra(九头蛇)多协议暴力破解工具

    一.简介 hydra(九头蛇)全能暴力破解工具,是一款全能的暴力破解工具,使用方法简单 二.使用 使用hydra -h 查看基本用法 三.命令 hydra [[[-l LOGIN|-L FILE] [ ...

  3. [Selenium With C#基础教程] Lesson-04 按钮

    作者:Surpassme 来源:http://www.jianshu.com/p/83d7416c4b7d 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. Button通常有两 ...

  4. python读取pop3服务器邮件并且下载

    # -*- coding: cp936 -*- import poplib import random import os def getmail(): # 蒋辉文拥有该程序权利 你可以随意使用 em ...

  5. 昨天发现的nginx默认不支持下划线引起angular-phonecat项目部分文件404问题

    今天发现原来确实是不存在这个文件... 因为我的Ubuntu的git没有安装,所以导致bower install时没有拉下来依赖包,因为bower是使用的git拉的包. 但是同时也搜到了nginx不支 ...

  6. [java]基于UDP的Socket通信Demo

    java课编程作业:在老师给的demo的基础上实现客户端发送数据到服务器端,服务器端接受客户端后进行数据广播. 整体功能类似于聊天室,代码部分不是太难,但是在本机测试的时候出现这样的问题: 服务端通过 ...

  7. spring boot 错误:Check your ViewResolver setup

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  8. 算法 UVA 11300

    例3:题目描述 圆桌旁边坐着n个人,每个人有一定数量的金币,金币的总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数量相等.你的任务是求出被转手的金币的数量的最小值. 输入格式 ...

  9. 「ONTAK2010」 Peaks加强版

    题目链接 戳我 \(Solution\) 首先来介绍一下kruskal重构树:详见 知道kruskal重构树后这一道题就可以几乎没了. 利用kruskal重构树的性质,一个节点的左右儿子都比他小(其实 ...

  10. [转]解读Unity中的CG编写Shader系列4——unity中的圆角矩形shader

    上篇文章中我们掌握了表面剔除和剪裁模式这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做成圆角矩形 例3:圆角矩形Shader好吧我承认在做这个例子的时候走了不少弯路,由于本人对矩 ...