2017-10-17 145 views
1

在系统中,有几个oracle数据库服务器。如何在Oracle缓存中存储数据库链接结果

比方说,Oracle Db1是一台主服务器,它有一个主表,其余的Oracle Db服务器使用数据库链接连接到这个主服务器。 所以有办法将从主数据库中提取的值缓存到目标数据库中,这样每次保存数据库链接调用时都可以从本地oracle数据库缓存中获取值。

什么是可用的各种缓存机制,如果有其优点&缺点?

此缓存是否可以在Active- Passive节点设置或任何其他配置设置/代码中无缝工作?

当主数据库值发生更改时,消费者数据库将被通知更改以清除缓存中的数据。所以任何事件驱动机制都可能。

环境细节 - Oracle 11g Database Release1,Unix。

对于“HowTo”中的示例代码片段,感激不尽。谢谢

+0

一个'MATERIALIZED VIEW'是一个更接近你期待什么。然而它并不是完全缓存在计算意义上。 –

回答

0

当数据库链接暂时脱机时,允许应用程序继续工作的一种方法是使用物化视图(MV)。

然而,这并不像高速缓存那样工作,因为MV需要按照时间表手动刷新(例如每5分钟一次)。如果远程数据库上的数据发生更改,则在刷新MV之前,本地数据库不会看到新的结果。

例如:

create materialized view tablename_mv 
    refresh complete on demand 
    as select * from [email protected]; 

然后定期刷新:

begin 
    dbms_mview.refresh('TABLENAME_MV'); 
end; 
+0

感谢您的输入。在主数据库和其他数据库之间共享的T数据非常少(5-10行,单列)。那么结果缓存是不错的选择? – Aarati

+0

如果你正在谈论SQL结果缓存,那么这将不起作用,因为基于数据库链接的状态缓存不会失效。 –

+0

由于您的数据集非常小,因此我可能会使用具有快速刷新间隔的MV(例如, 1分钟。 –

相关问题