【发布时间】:2013-05-04 01:44:45
【问题描述】:
有两个远程表 A_REM 和 B_REM 具有外键关系但没有外键约束,表 A_REM 中大约有 10,000 个新行,表 B_REM 中每天有 50,000 个新行。最多的操作是插入。现在我想将数据从 A_REM 和 B_REM 移动到本地表 A_LOC 和 B_LOC,并在处理时锁定行。移动后,表 A_REM 和 B_REM 中的行应该被删除。
A_REM B_REM
1 ----- |_ 1
|_ 2
|_ 3
--------------------
2 ----- |_ 4
|_ 5 rows 2 and 4-6 are locked while moving
|_ 6
--------------------
3 ----- |_ 7
|_ 8
|_ 9
在保持表 A_REM 和 B_REM 数据之间的关系(一致性)的同时移动数据的最佳方法是什么。如果我只有一个表,我会结合游标使用“FOR UPDATE OF”语句 (http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#CHDGEHBF)。
非常感谢。
【问题讨论】:
-
听起来您正在尝试构建自己的复制解决方案。您是否有理由不利用任何 Oracle 的内置复制技术?例如,您能否在本地系统上创建物化视图并在远程系统上创建物化视图日志,而不是维护单独的更改表?您可以使用 Streams 或 CDC 吗?
-
是的,标准的复制解决方案是最好的方法。但目前不可能建立一个。谢谢。