有两个数据库A(172.10.10.234)和B(156.2.10.254)分别在不同地方,可以远程连接到,
里面有一张表结构相同,要做同步,组长说了句以前用物化视图做数据同步,我晚上找了半天也找不到个像样的例子,
请问高手,如何做数据同步呢?最好带个定时更新job,希望可以给源码
里面有一张表结构相同,要做同步,组长说了句以前用物化视图做数据同步,我晚上找了半天也找不到个像样的例子,
请问高手,如何做数据同步呢?最好带个定时更新job,希望可以给源码
CREATE MATERIALIZED VIEW foreign_customers FOR UPDATE
AS SELECT * FROM sh.customers@remote cu
WHERE EXISTS
(SELECT * FROM sh.countries@remote co
WHERE co.country_id = cu.country_id);
CREATE MATERIALIZED VIEW "SYNCHRO_ENT_BASE"
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND
START WITH TO_DATE('3-11-2011 10:42:00','dd-mm-yyyy hh24:mi:ss')
NEXT SYSDATE + 1
WITH PRIMARY KEY
AS
SELECT * FROM ENT_BASE a WHERE NOT EXISTS(SELECT * FROM ENT_BASETEMP b WHERE a.entid = b.entid)现在已经查出数据到视图里了,怎么插入到ENT_BASETEMP里呢 还有SYSDATE + 1代表加多少时间了?
下面这个示例是一个小时处理一次的作业
你自己改时间间隔declare
jobid integer;
begin
sys.dbms_job.submit(job => jobid,
what => 'execute immediate ''truncate table basetemp'';insert into basetemp select * from base@remote; commit;',
next_date => to_date('03-11-2011 11:11:11', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'trunc(sysdate, ''hh24'') + 1/24');
commit;
end;
/
组长说什么物化视图+job的...我也不清楚,物化视图一般什么地方用?
物化视图跟普通视图比的差别就在于,物化视图的数据是实实在在保存在数据文件里的
其实,对你的需求来说,你只需要创建一个针对远程服务器 base 表的一个物化视图(不需要另外一张表)以后所有的操作都在物化视图上来做就可以了,像示例中的,每次清空数据再重新插入,这个性能比物化视图低很多普通视图,在使用的时候,实际还是查的原始表的数据,并不保存数据
DECLARE
job_no_ NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job_no_,
'insert_Prod;', -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
sysdate,
'TRUNC(sysdate)+1+2/24'); -- 2/24 每天凌晨2点
COMMIT;
END; 这是网上找的job 这么写就报错了,看你写的job里是:
interval => 'trunc(sysdate, ''hh24'') + 1/24'
这么多引号,为什么这些写就不报错呢?我想改成每周3执行一次,不知道怎么改呀,不知道引号加哪