Caching Oracle中数据链路一侧的缓存表

Caching Oracle中数据链路一侧的缓存表,caching,oracle11g,Caching,Oracle11g,我想通过oracle中的dblink创建表的缓存副本。故事如下: 我有两个表(employee,work),它们通过远程数据库中的第三个表(emloyee_work)连接起来。这样做的原因是将两个实体之间的连接解耦,以便它们不能直接连接 为了方便地处理数据,我们有一个通过联接表连接表的视图。有人可能会争辩说,这与将联接表与其他两个表放在同一个数据库中是一样的,但现在不是这样 在新站点上,db链路延迟非常高,这会导致性能大幅下降,因为对于每个select,都会构建视图,并通过db链路为每个员工执行

我想通过oracle中的dblink创建表的缓存副本。故事如下:

我有两个表(employee,work),它们通过远程数据库中的第三个表(emloyee_work)连接起来。这样做的原因是将两个实体之间的连接解耦,以便它们不能直接连接

为了方便地处理数据,我们有一个通过联接表连接表的视图。有人可能会争辩说,这与将联接表与其他两个表放在同一个数据库中是一样的,但现在不是这样

在新站点上,db链路延迟非常高,这会导致性能大幅下降,因为对于每个select,都会构建视图,并通过db链路为每个员工执行select

该结构具有相对较高的读取计数和较低的写入计数

问题是是否有可能“镜像”或将远程联接表复制到本地数据库?此副本应为临时副本,不应保留

这样,视图将在本地副本上执行


编辑:Oracle版本是11gR2

您可以使用按需刷新。 另请参见他们讨论如何通过dblink实现物化视图


由于您使用的是Oracle 11g,您可能会创建一个。

不幸的是,物化视图不是一个选项,因为它们会持久化。@pentike的“本地副本”在某种程度上不是意味着持久化吗?您可以随时刷新mat视图。是的,但要求不在永久性存储上存储任何数据,因此,如果断电,连接表的任何部分都不会保留在远程站点上。我知道这在原意视图中没有多大意义,但这不是我的要求。@Sebas这个基于ram的物化视图听起来很有希望,我会检查一下。执行计划是否与没有问题的站点相同?我不知道如果桌子小,你为什么会注意到不同。但是在这种情况下,
driving\u站点
提示可能会有所不同,或者只是直接引用远程表而不是通过视图。也不太清楚你在做什么-你在循环中做了很多单独的选择吗?听起来您可能认为您需要一个PL/SQL表。