我们在不同的oracle服务器上有两个模式。我们计划使用一个模式作为事务数据库,并使用其他模式进行报告。
由于事务数据库是任何用户生成的数据的入口点,所以我们希望定期将这些数据复制/发送到报告模式。我们考虑在事务数据库中创建物化视图日志,在报表数据库中创建物化视图。然后,我们计划使用Db链接进行计划的快速刷新。
但是,一个DBA建议我们使用数据泵,它将导出和导入整个模式。刷新需要每天进行一次。在性能和网络使用方面,哪一种是最佳解决方案?
发布于 2014-09-15 13:09:40
摘要
这两种方法各有优缺点。没有一般的答案。你得做个基准。
详细信息
数据库链接上的物化视图
你有两种可能让这件事成功。
第一种可能是使用快速刷新功能。使用此功能,Oracle使用有效的增量机制更新每个更改的物化视图。当每天只更改表的一小部分时,这可以节省大量的数据卷。你的数据总是新鲜的。但是,这种机制并不适用于所有类型的表(例如,某些联接和LOB列的问题)。当一个数据库关闭时,物化视图将不同步,必须重新构建。最后:增量更改的簿记给源表上的所有写操作带来了额外的压力。
第二种可能是使用完全刷新,例如物化视图组(DBMS_REFRESH包)。这总是会触发一个完整的刷新,但这不会对簿记的保存造成额外的写压力。
在这两种情况下,这两个数据库现在紧密耦合:对一个数据库的更改也将触发对另一个数据库的更改。而且您不能随意移动数据库:它们总是需要快速连接,延迟低,并且不需要干扰防火墙。从长远来看,数据库必须同时打开,否则您可能会失去物化视图。
ETL工具
作为替代,您可以始终使用某种ETL工具,从一个数据库中提取数据,根据某些给定的规则转换数据,并将结果加载到另一个数据库中。您可以使用完成此任务,也可以使用任何第三方工具。当源或目标的数据库架构必须更改时,ETL工具可以缓存数据、使用任何类型的WAN连接传输数据并对其进行转换。通常,ETL工具还提供某种增量机制。
使用ETL工具,您会更加灵活,但您依赖于数据库之外的组件,必须对其进行维护。
https://stackoverflow.com/questions/25848436
复制相似问题