将新记录从一个数据库复制到另一个数据库



我有本地和远程数据库。本地数据库是远程数据库的副本。我必须从远程数据库插入新的记录到本地数据库。在远程数据库中有14个表,所以我需要跟踪所有14个表的变化。

我知道我可以选择每一个表在远程数据库和检查记录是否存在,如果不存在,然后插入它。

还有别的方法吗?也许在java ?什么方法是最好的?

让我们从DBlink到远程DB开始

CREATE PUBLIC DATABASE LINK REMO
CONNECT TO <user_name>
IDENTIFIED BY <password>
USING '<service_name>';

,然后插入与循环从用户模式的所有表。或者,如果您只想插入一些表,请为这14个表定义适当的条件。

begin
for x in (select table_name from user_tables) loop
execute immediate 'insert into ' || x.table_name || ' (select * from ' || x.table_name || '@REMO minus select * from ' || x.table_name || ')';
commit;
end loop;
end;
/

这将只插入新记录(实际上是在远程上存在(或被更改)而在本地不存在的记录)。如果这是你需要的,这个可以。如果你需要同步,这不是解决方案。

如果你只有一个本地数据库,并且它一直运行-你可以使用触发器从远程数据库插入到本地数据库。

顺便说一句:从本地手动检查远程不是一个好主意。如果现有的远程记录更改了,但本地仍然有旧值,该怎么办?

还有很多Oracle工具可以在数据库之间进行复制和同步。

最新更新