我正在使用Oracle 10G。
让我向你解释一下。我有一个名为(DB1)的源数据库和名为(DB2)的目标数据库。
我在源数据库(DB1)中有2个名为dbs1和dbs2的模式。
我已在源数据库(DB1)中导出了两个数据库模式,并将其成功导入目标数据库(DB2)。
现在,每次从源DB(DB1)到目标数据库(DB2)同步这些数据库模式时,我都面临着挑战。
任何人都可以帮助我告诉我如何实现这种同步?
答案 0 :(得分:11)
Oracle有自己的内置函数来处理这种情况:它叫做Streams。 Find out more。还有复制,但它使用物化视图而不是目标数据库中的表。 Find out more
在考虑您已有的功能之前,请不要查看第三方产品或尝试手动执行自己的实施。 Oracle许可证价格昂贵:务必确保您的资金价值。
在数据库之间建立数据集成是一个复杂的主题,而不是我选择交给初学者的主题。但是,如果您使用Oracle的标准功能,您会发现自己更容易入手。这同样适用于在这里或在其他论坛中寻求帮助。
您必须决定的三个关键问题是:
synchronicity 您希望目标数据库与源数据库完全一致吗?或者是否可以异步应用更新,甚至是批量应用更新?在极端情况下,同步更新会导致分布式事务,其中两阶段提交意味着源数据库中的数据更改也必须作为同一事务的一部分应用于目标数据库。
结构更改将DML更改从一个模式传播到另一个模式很容易,但DDL - 新列,新表等等呢。
方向性所有更改是否始终从源数据库到目标数据库?是否有任何数据变化的前景会向另一个方向传播?在相关问题中,目标数据库中的数据是否可以独立于源数据库中的更改而更改?或者目标数据库是只读的?
修改强>
不推荐使用的IMP / EXP实用程序和更现代的DataPump功能适用于一次性操作。也就是说,将结构和数据导入空模式,或将数据导入空对象。它们不适合用于滚动同步操作,我们必须应用增量更改。适合该任务的工具是我已经列出的工具:Streams或Replication。
编辑2
“你能举个例子吗? 相同。我非常感谢 你“。
复制和 Streams的示例?这需要花费一大部分时间,坦率地说,我怀疑你能负担我的小时费率。我能做的就是为您提供Das Interwebs上的一些方便资源。 Martin Zahn撰写的a Replication Survival Guide非常好。 Tim Hall在他的Oracle-Base网站上有an introduction to Streams;这是9i,但它仍然是一个不错的入门。这些都不是文档的替代品,但它们将帮助您掌握不同的技术。
您将自己描述为“对Oracle DB而言非常天真”。所以你必须明白这不是一件轻而易举的事。不幸的是,你不能只是削减一些示例代码,并希望它能够正常工作。您需要进行大量的规划,设计和配置。首先回答我上面列出的问题。在做出如何到达目的地之前,您需要确切地知道自己要到达的目的地。
答案 1 :(得分:0)
您可以使用“{3}}
等”数据库更改管理“工具