这里暂且说成是一个主数据库和从数据库;
(1) 主数据库:oracle_A;
(2) 从数据库:oracle_B;
在oracle_A中有一个表table_A与oracle_B中的表table_B结构相同;
我是处在oracle_B,拥有一个用户可以访问oracle_A中的表table_A,该用户只拥有查询的权限;
我的问题的是,如何在oracle_A中表table_A发生变化时,进行及时更新同步到oracle_B的table_B中?
我现在的处理方式:
通过建立远程连接DBLink+JOB定时任务+存储过程的方式,实现了定时同步更新,但不能做到实时同步.
现在要求升级:
经理要求实现实时更新,大家有没有好的方法.简便一点的,最好具体一点,O(∩_∩)O谢谢.在线等....
27 个解决方案
#1
用触发器试试
#2
就一张表吗,搞个stream把
#3
对就是一张表.
#4
由于我只对oracle_A中的table_A表拥有查询功能,不就有增删改的权限.所以触发器没有写啊.还请指教.
#5
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
#6
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
还请指教.
还请指教.
#7
使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
#8
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
#9
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
还请指教.
嗯,按 2# 的思路,配置一个流吧 . Stream
#10
触发器。
gitter
gitter
#11
使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.
#12
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
还请指教.
触发器是写在table_A上的。
#13
在部署测试的过程中,oracle_A的table_A表中,只有一条数据,当时我把job的定时任务设成间隔是1分钟.在运转一段时间之后,电脑接近卡死状态. 使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.
如果只是针对新增、修改、删除操作的数据同步,没有涉及到业务逻辑的。可以在源库的表上建个物化日志,这样就记录了主键信息,然后存储过程针对这个物化日志去操作目标库数据库的表,最后删除物化日志。基本可以实现5秒内跑完。JOB定个10秒都没问题
#14
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
#15
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
还请指教.
触发器是写在table_A上的。
#16
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
#17
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
#18
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
请看13楼回复的物化日志的东西,我之前公司做过,上亿的表同步每秒可以同步1万条估计没问题。
#19
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
#20
在部署测试的过程中,oracle_A的table_A表中,只有一条数据,当时我把job的定时任务设成间隔是1分钟.在运转一段时间之后,电脑接近卡死状态. 使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.
如果只是针对新增、修改、删除操作的数据同步,没有涉及到业务逻辑的。可以在源库的表上建个物化日志,这样就记录了主键信息,然后存储过程针对这个物化日志去操作目标库数据库的表,最后删除物化日志。基本可以实现5秒内跑完。JOB定个10秒都没问题
#21
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
#22
只对table_B表进行查询操作,操作时间主要就是集中在上班时间,另外用户比较少,所以使用频率并不是很高. 我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
那我觉得DBLINK+同义词挺好
数据实时、又节省空间、效率也不低
#23
只对table_B表进行查询操作,操作时间主要就是集中在上班时间,另外用户比较少,所以使用频率并不是很高. 我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
那我觉得DBLINK+同义词挺好
数据实时、又节省空间、效率也不低
#24
(⊙v⊙)嗯,现在把同义词+DBLINK作为一个备选方案.这些方案走通!开始尝试一下,使用物化日志的方式. 只对table_B表进行查询操作,操作时间主要就是集中在上班时间,另外用户比较少,所以使用频率并不是很高. 我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
那我觉得DBLINK+同义词挺好
数据实时、又节省空间、效率也不低
你搞错了物化日志也需要DBLINK+delete+insert操作,不是物化视图。只是说关联增量数据由主键去关联出来,这样速度就很快。不然你两表比对差异数据量大时就会慢
#25
通过DB_LINK在本地建物化视图?
#26
通过DB_LINK在本地建物化视图?
#27
是问 通过DB_LINK在本地建物化视图 这个方式是否能满足你的要求。也是一种实现方式吧
#1
用触发器试试
#2
就一张表吗,搞个stream把
#3
就一张表吗,搞个stream把
#4
用触发器试试
#5
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
#6
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
还请指教.
#7
就一张表吗,搞个stream把
#8
使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
#9
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
还请指教.
嗯,按 2# 的思路,配置一个流吧 . Stream
#10
触发器。
gitter
gitter
#11
使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.
#12
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
还请指教.
触发器是写在table_A上的。
#13
在部署测试的过程中,oracle_A的table_A表中,只有一条数据,当时我把job的定时任务设成间隔是1分钟.在运转一段时间之后,电脑接近卡死状态. 使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.
如果只是针对新增、修改、删除操作的数据同步,没有涉及到业务逻辑的。可以在源库的表上建个物化日志,这样就记录了主键信息,然后存储过程针对这个物化日志去操作目标库数据库的表,最后删除物化日志。基本可以实现5秒内跑完。JOB定个10秒都没问题
#14
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
#15
可以确保是实时通的,由于我只对oracle_A中的table_A表只拥有查询功能,不具有增删改的权限,所以触发器没有写啊.毕竟只有进行了增删改操作才可以触发更新同步操作.
如果用触发器,一定要保证网络是实时通的,不然第二台机器断网的话,头一台机器的操作就会失败;
还请指教.
触发器是写在table_A上的。
#16
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
#17
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
#18
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
请看13楼回复的物化日志的东西,我之前公司做过,上亿的表同步每秒可以同步1万条估计没问题。
#19
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
#20
在部署测试的过程中,oracle_A的table_A表中,只有一条数据,当时我把job的定时任务设成间隔是1分钟.在运转一段时间之后,电脑接近卡死状态. 使用stream,不是得对oracle_A也进行设置吗,现在我只拥有一个查询指定表权限的用户,还可以对oracle_A进行其他设置吗.求指点.
就一张表吗,搞个stream把
这个要配置,只有查询不行,你就用job挺好的呀,如果数据量不大时间点定的短些
我把job任务移除,设成时间间隔为1天,才慢慢好起来.
不清楚,是不是由于时间间隔太多.太耗性能引起的?
存储过程中的同步逻辑,我是这样写的:
(1) 删除oracle_b中的数据;
(2)向oracle_b表中,插入通过远程连接从oracle_a中查询到的数据.
如果只是针对新增、修改、删除操作的数据同步,没有涉及到业务逻辑的。可以在源库的表上建个物化日志,这样就记录了主键信息,然后存储过程针对这个物化日志去操作目标库数据库的表,最后删除物化日志。基本可以实现5秒内跑完。JOB定个10秒都没问题
#21
我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
#22
只对table_B表进行查询操作,操作时间主要就是集中在上班时间,另外用户比较少,所以使用频率并不是很高. 我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
那我觉得DBLINK+同义词挺好
数据实时、又节省空间、效率也不低
#23
只对table_B表进行查询操作,操作时间主要就是集中在上班时间,另外用户比较少,所以使用频率并不是很高. 我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
那我觉得DBLINK+同义词挺好
数据实时、又节省空间、效率也不低
#24
(⊙v⊙)嗯,现在把同义词+DBLINK作为一个备选方案.这些方案走通!开始尝试一下,使用物化日志的方式. 只对table_B表进行查询操作,操作时间主要就是集中在上班时间,另外用户比较少,所以使用频率并不是很高. 我在自己本地的数据库和虚拟机中的oracle数据库进行测试,使用同义词可以实现.
对table_B表都需要什么操作,如果只需要查询权限可以用DBLINK+同义词实现
我对同义词的理解是,就相当于是一种映射,查询的时候,虽然查的是同义词,但实质是通过远程链接查的源数据.所以本地实质上并没有数据.不知这样理解是否准确.还请赐教.
另外,如果我的理解是正确的,我还想问,当源数据库,数据量小的时候,或许没有多大的问题,但当源数据量数据达到几十万条以上时,采用这种方式,会不会影响性能呢.
嗯,可以这么理解,本地只有定义,没有数据
不知道你都对这张表做什么业务操作,操作的频率,操作的时间
个人感觉通常情况下,几十万条,甚至上百万条数据,采用DBLINK+同义词,都是不错的办法
若是采用触发器,当源数据库的DML操作比较频繁时,效率影响比较明显
那我觉得DBLINK+同义词挺好
数据实时、又节省空间、效率也不低
你搞错了物化日志也需要DBLINK+delete+insert操作,不是物化视图。只是说关联增量数据由主键去关联出来,这样速度就很快。不然你两表比对差异数据量大时就会慢
#25
通过DB_LINK在本地建物化视图?
#26
通过DB_LINK在本地建物化视图?
#27
是问 通过DB_LINK在本地建物化视图 这个方式是否能满足你的要求。也是一种实现方式吧