我有2个Oracle数据库,我经常使用TOAD将数据从prod DB复制到测试数据库,方法是为Prod DB生成插入脚本,然后在测试数据库上运行它。
我试图通过批处理文件更快地完成它。
我认为我可以使用this解决方案,但数据库有一个auto-increment
列。如果我使用此解决方案,该列是否会受到影响?我需要以某种方式更改脚本吗?我没有尝试过这个,因为我无法访问数据库,只能在周一进行测试。
有没有更好的方法来实现这一目标?我基本上寻找的是使用批处理文件完成整个复制过程,这将最大限度地减少我使用TOAD花费的时间。
另外,如果我能够在正确的方向上受到指导,如果解决方案不简单,那对我来说没问题。
答案 0 :(得分:6)
确保两个表具有相同的结构。
连接目标数据库。
创建指向源数据库的公共链接。用户应具有“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;