oracle的snapshot
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的snapshot相关的知识,希望对你有一定的参考价值。
oracle的snapshot是什么?可以解释下么?谢谢!
snapshot就是快照oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。相当于主表的查询子集,使用快照可以加快数据的查询速度;在保持不同数据库中的两个表的同步中,利用快照刷新,数据的更新性能也会有很大的改善。 参考技术A 简单点说oracle的snapshot(快照):定期刷新的一个有实际存储的view 他的另一个名称叫实例化视图,只是相当于一个视图,但是要占用存储空间存储数据,会定时刷新 参考技术B 快照,就是数据库某一时刻的信息都截取下来,可以是性能的信息,也可以是部分数据某时刻的信息
DBMS_Snapshot.refresh 在 11g 上不起作用,物化视图错误
【中文标题】DBMS_Snapshot.refresh 在 11g 上不起作用,物化视图错误【英文标题】:DBMS_Snapshot.refresh not working on 11g , materialized view error 【发布时间】:2011-05-18 12:23:37 【问题描述】:我在Oracle 10g
上执行DBMS_Snapshot.refresh
它工作正常,但是当我在Oracle 11g
上执行相同操作时,它会出现以下错误
DBMS_SNAPSHOT.refresh('Table1','F');
BEGIN DBMS_SNAPSHOT.refresh('Table1','F'); END;
.
*
ERROR at line 1:
ORA-23401: materialized view "localuser"."Table1" does not
exist
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2558
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2771
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2740
ORA-06512: at line 1
非常感谢任何帮助
问候。
南迪什
【问题讨论】:
这个错误看起来很自我解释。错误信息到底有什么不清楚的地方? 【参考方案1】:好的,这可能有很多原因。
您尚未在 11g 中重新创建 MV。您无法刷新 MV 来创建它。
您没有为 MV 所在的架构重新创建同义词(公共或私有)。
您没有在另一个架构中重新创建对 MV 的授权,因此请创建它们。
您可以尝试 DBMS_MVIEW 而不是 DBMS_SNAPSHOT。
exec dbms_mview.refresh('Table1');
【讨论】:
【参考方案2】:错误消息表明它正在以区分大小写的方式查找"Table1"
。请尝试传入'TABLE1'
。
【讨论】:
【参考方案3】:我的情况略有不同。 DBMS_MVIEW.REFRESH('ABC.XYZ') 调用发生在 oracle 存储过程 (SCHEMA1.PROC1) 中。我以其他用户 (UserA) 的身份调用 SP。我已将所有权限授予用户,但没有放弃。显然,oracle 似乎并不关心用户拥有的权限,它会寻找包所有者的权限.. 这很奇怪,与我到处准备的相反.. 但它确实有效
没用:
将任何实体化视图授予 UserA;
将 ABC.MLOG$_XYZ 上的选择授予 UserA;
工作:
将任何物化视图授予 SCHEMA1;
将 ABC.MLOG$_XYZ 上的选择授予 UserA,SCHEMA1;
【讨论】:
以上是关于oracle的snapshot的主要内容,如果未能解决你的问题,请参考以下文章