一尘不染

在Oracle中将数据从一个数据库复制到另一个数据库

sql

我有2个Oracle数据库,我经常使用TOAD将数据从prod数据库复制到test DB,方法是为Prod DB生成插入脚本,然后在测试DB上运行它。

我试图通过批处理文件更快地做到这一点。

我认为我可以使用此解决方案,但数据库有auto- increment专栏。如果我使用此解决方案,那么该列会受到影响吗?我需要以某种方式更改脚本吗?到目前为止,我还没有尝试过该数据库,因为我无权访问数据库,并且只能在星期一进行测试。

有没有更好的方法可以做到这一点?我本质上在寻找的是使用批处理文件执行整个复制过程,这将最大程度地减少我使用TOAD进行此操作所花费的时间。

另外,如果解决方案不简单,我可以按正确的方向进行指导。


阅读 196

收藏
2021-05-23

共1个答案

一尘不染

确保两个表具有相同的结构。

连接到目标数据库。

创建到源数据库的公共链接。用户应该具有“ CREATE PUBLIC DATABASE LINK”系统特权才能执行此操作。

CREATE PUBLIC DATABASE LINK mylink
  CONNECT TO source_user IDENTIFIED BY source_password
  USING 'source_entry_in_tnsnames';

复制数据:

INSERT INTO mytable SELECT * FROM mytable@mylink;

如果表的主键来自序列,则将序列设置为-至少-与源数据库中的值相同:

ALTER SEQUENCE mysequence increment by 100000;
SELECT mysequence.nextval FROM DUAL;
ALTER SEQUENCE mysequence increment by 1;
2021-05-23