-一、最近有一个这样的需求,之前的数据库(部署在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;