问题描述
我在两台服务器上部署了两个相同的数据库,我想在表上从一个数据库更新/镜像到另一个数据库。
例如。一张表 dbName1.Cars 要在 dbName2.Cars 上更新。有没有办法在 dbName1 上添加一些作业或调度程序来填充 dbName2?
我使用的是 ORACLE 数据库。
解决方法
由于您有两个数据库,因此您需要一个数据库链接,因此 - 简化 - 您需要
insert into cars@db_link select * from cars;
如果您将这样的代码放入存储过程,您可以使用DBMS_SCHEDULER
(或DBMS_JOB
)包安排其执行并使其在您想要的任何时候运行(例如午夜后 2:30,早上 10:30...,每天/每周一次/仅在周末...)
或者,创建一个物化视图。再次简化:
create materialized view mv_cars as select * from cars@db_link;
它允许您安排从按需(您明确说“立即刷新!”)到 Oracle 支持的其他选项的刷新间隔。
另外,请阅读 Golden Gate 和 Advanced Replication。不过,这些选项并不是那么简单。