在系统中,有几个oracle DB服务器。
让我们说oracle Db1是一个主服务器,有一个主表,其余的oracle Db服务器使用DB链接连接到这个主服务器。 那么有没有办法将从主数据库获取的值缓存到目标数据库中,这样每次保存数据库链接调用时都可以从本地oracle数据库缓存中获取值。
有哪些可用的缓存机制,如果有的话,还有它的优点和优点。缺点
这种缓存是否可以在主动 - 被动节点设置中无缝工作,还是需要任何其他配置设置/代码?
当主DB值更改时,将通知消费者DB更改以便从缓存中刷新数据。所以任何事件驱动机制都是可能的。
环境详细信息 - Oracle 11g Database Release1,Unix。
非常感谢使用“HowTo”上的示例代码段输入。谢谢
答案 0 :(得分:0)
允许应用程序在数据库链接暂时脱机时继续工作的一种方法是使用实体化视图(MV)。
然而,这不像缓存那样工作,因为MV需要按计划手动刷新(例如每5分钟一次)。如果远程数据库上的数据发生更改,则在刷新MV之前,本地数据库将不会看到新结果。
例如:
create materialized view tablename_mv
refresh complete on demand
as select * from remotetablename@dblinkname;
然后定期刷新:
begin
dbms_mview.refresh('TABLENAME_MV');
end;