oracle跨数据库复制数据表-dblink

-一、最近有一个这样的需求,之前的数据库(部署在4.9),进程不足,需要迁移 到新的数据库(2.77),包括表结构和表数据,一个一个复制着实比较麻烦,在网上百度了下,才知道有dblink这种实现方式,下面就介绍下两种实现方式

实现方式有两种,

第一种是通过手动复制实现。

打开原有数据库,找到需要复制的表->右击->编辑->

 点击VIEW SQL->复制insert语句到新的数据库执行,
 再复制注释到新的数据库执行,这种方式需要打开需要复制的每张表,
 多次复制,比较麻烦,而且当数据比较多的时候,执行insert语句直接卡死。

第二种方式:通过dblink实现

  dblink是单向的,假设需要从A数据库复制到B数据库,
  就要在A数据库中创建dblink,连接到B数据库,
  然后通过A中的dblink来访问B中的数据

dblink实现

在A数据库当前表空间创建dblink,代码:
create public database link "LINK_NAME"
connect to "username" identified by "password"
using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))';

其中:LINK_NAME 是dblink的名字,username 是B(新数据库)的账号,
password 是B(新数据库)的密码,ip是指数据库的ip地址,public可以去掉,不加public 只能当前这个用户看到,加了public可以被所有用户看到

执行这段代码,dblink就成功创建好了,可以通过oracle界面查看(A数据库)
在这里插咋入图片描述

在A数据库中实现访问B数据库中IPC_TEST表

select * from IPC_TEST @LINK_NAME

将A数据库中的test表数据复制到B数据库,也命名为test,前提是B数据库中已经有了test这张表

insert into test@LINK_NAME select * from test

B数据库中没有这张表直接通过A数据库创建表时,会提示不能对远程数据库进行DDL操作,这时候还需要写成存储过程才能实现远程建表并复制表数据

删除dblink

drop public database link LINK_NAME;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值