两台数据库IP地址分别为192.168.1.120和192.168.1.130. 120数据库为主数据库,130数据库为辅数据库。现在120和130里的数据表结构和数据完全相同。现在要做个同步,使得120数据库中的一部分表,增加删除修改数据,而130数据库都可以同步的增加删除或修改。注意此同步为单向同步,就是让130数据库中跟120数据库中数据相同。表结构不会发生变化。
网上给的建议是使用dblink,再使用快照。然后再写触发器。我先创建dblink connect120测试成功。
再创建快照如下,语句执行成功。
Create snapshot log on Aa_Database_Log;
--Aa_Database_Log是我要映射的表
Create snapshot sn_Aa_Database_Log as select * from Aa_Database_Log@connect120;
--创建快照
Alter snapshot sn_Aa_Database_Log refresh fast Start with sysdate+1/24*60 next sysdate+1/24*60;
--oracle自动在1分钟后进行第一次快速刷新,以后每隔1分钟快速刷新一次EXEC DBMS_SNAPSHOT.REFRESH('sn_Aa_Database_Log','F');
结果快照表建成功了。但并没有同步刷新。我手动刷新了下。还是不可以。网上介绍说,快照进程没启动起来。我的是oracle 10g。不知道怎样启动快照进程。
另外还有其他方法实现我这个问题的,可以给建议。
网上给的建议是使用dblink,再使用快照。然后再写触发器。我先创建dblink connect120测试成功。
再创建快照如下,语句执行成功。
Create snapshot log on Aa_Database_Log;
--Aa_Database_Log是我要映射的表
Create snapshot sn_Aa_Database_Log as select * from Aa_Database_Log@connect120;
--创建快照
Alter snapshot sn_Aa_Database_Log refresh fast Start with sysdate+1/24*60 next sysdate+1/24*60;
--oracle自动在1分钟后进行第一次快速刷新,以后每隔1分钟快速刷新一次EXEC DBMS_SNAPSHOT.REFRESH('sn_Aa_Database_Log','F');
结果快照表建成功了。但并没有同步刷新。我手动刷新了下。还是不可以。网上介绍说,快照进程没启动起来。我的是oracle 10g。不知道怎样启动快照进程。
另外还有其他方法实现我这个问题的,可以给建议。
解决方案 »
- outfile 在oracle里面可以用不?
- 100分求优化SQL
- where条件中的DECODE
- oracle805起不来,有没有办法,有几年的数据,!!!!
- 很急的问题,请高手帮忙!(一直在线等候)
- 存儲過程中如何限制返回的數字的小數倍數為2位?謝謝,馬上結帳。
- 欢迎大家来讨论索引的使用,优秀者得分
- redhat72下oracle920安裝問題,安裝完成后配置時進度停在 creating and starting oracle instance 46%
- Oracle 设置问题
- 从oracle生成报表,用c++,java,还是excel做? 若用c++做报表,是否有这方面的包或控件??
- 如何查看本机oracle的SQL*NET版本吗
- 为空的时候怎么判断
130建立物化视图。
创建刷新组:DBMS_REFRESH.MAKE
要刷新的物化视图添加到刷新组DBMS_REFRESH.ADD
ok了。
中的方法。另外对多用户的同步,如有经验请指点一下,多谢!
--在主数据库和物化视图数据库分别创建连接对方的数据库连接(database link),假如为ddbb
--把要复制的数据表导入到物化视图数据库的对应用户下--在主数据库(待复制的数据)创建要进行数据复制的表的物化视图日值
CREATE MATERIALIZED VIEW LOG ON tt WITH ROWID, PRIMARY KEY, SEQUENCE INCLUDING NEW VALUES;--在物化视图数据库(复制到的目的地)把要复制的表创建物化视图;
CREATE MATERIALIZED VIEW tt ON PREBUILT TABLE REFRESH FAST ON DEMAND AS SELECT * FROM tt@ddbb;
--在物化视图数据库上创建刷新组,指定10分钟刷新一次
BEGIN
DBMS_REFRESH.MAKE(
name => 'ABCDX',
list => '',
next_date => SYSDATE,
interval => '/*10:Mins*/ sysdate + 10/(60*24)',
implicit_destroy => FALSE,
lax => FALSE,
job => 0,
rollback_seg => NULL,
push_deferred_rpc => FALSE,
refresh_after_errors => TRUE,
purge_option => NULL,
parallelism => NULL,
heap_size => NULL);
END;
/
--把要定期刷新的物化视图添加到刷新组
BEGIN
DBMS_REFRESH.ADD(
name => 'ABCDX',
list => 'TT',
lax => TRUE);
END;
/