建立快照一般写start with sysdate+1/10000, 表示建好后马上刷新一次,感觉你写start with sysdate是有点问题的,sysdate时候这个快照还正在创建,等创建好以后已经过了sysdate,可能意味着永远没有start,也就没有next了,这个只是看着有点怀疑,不很确定,你自己改了试下就知道了,此外你源表的快照日志应该是已经建了的吧?tableemp确定是表吗?什么版本的ORACLE?
创新互联秉承实现全网价值营销的理念,以专业定制企业官网,网站建设、成都网站制作,微信小程序定制开发,网页设计制作,手机网站制作设计,全网营销推广帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
首先,在master数据库上创建一个可选的快照日志log。假如您不想做快速刷新,可以不需要创建日志log。
注意:快速刷新不支持复杂的查询。
最后在快照站点snapshot site上创建一个snapshot/materialized 视图。
最后参考此示例:
MASTER SITE:
SQL create materialized view log on table EMP;
SNAPSHOT SITE:
SQL create materialized view emp
refresh fast with primary key
start with sysdate
next sysdate + 1/(24*60)
as (select * from emp);
先说一下Oracle快照。快照是一种查询,目的是为了使两个远程数据库的表进行同步。创建快照语句是CREATE SNAPSHOT ... AS subquery;
对应快照可以创建快照日志,存放快照主表的更新数据,可用这些数据刷新快照的主表。
问题中给出的语句就是创建快照日志:CREATE SNAPSHOT LOG ON
你还是系统的看一下关于AWR报告的资料吧,系统默认是一小时自己创建一次快照,但是根据快照来取某个时间段的报告,则需要DBA介入。通过你提问问题的方式,建议你系统查找awr的资料,不然即使给你提供了包,你也不会用。
snapshot就是快照
oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。相当于主表的查询子集,使用快照可以加快数据的查询速度;在保持不同数据库中的两个表的同步中,利用快照刷新,数据的更新性能也会有很大的改善。