oracle快照详解
oracle快照底层原理

oracle快照底层原理Oracle数据库中的快照(snapshot)是一种数据备份技术,它允许用户在一些时间点上创建数据库的一份完整副本,以便在需要时进行恢复或查询。
Oracle快照底层原理涉及到数据文件、redo日志和Undo段等核心组件,下面将详细介绍这些组件的作用和相互关系。
1. 数据文件(Data Files):Oracle数据库将数据存储在数据文件中,其中包含表、索引等对象的数据和元信息。
数据文件是数据库的基本单位,每个表空间可以包含一个或多个数据文件。
快照的底层原理涉及到数据文件的备份和恢复。
2. Redo日志(Redo Log):Redo日志是Oracle数据库中的一种事务日志,用于记录数据库的变化,包括数据修改操作和其他重要事件。
当数据库执行事务操作时,相关的变化会先写入Redo日志文件,然后再将修改写入数据文件。
通过Redo 日志,可以实现对数据库的完整恢复。
3. Undo段(Undo Segment):Undo段是用于支持事务的回滚和数据一致性的关键组件。
当一个事务开始执行时,相关的变化会先写入Undo段。
如果事务需要回滚,数据库可以利用Undo段中的数据将变化恢复到事务开始之前的状态。
在Oracle数据库中,快照的底层原理可以分为两个主要过程:快照创建和快照恢复。
快照创建过程如下:1. 快照进程(Snapshot Process):Oracle数据库通过一个后台进程来实现快照功能,该进程负责创建和管理快照。
2. 数据文件备份:快照创建时,Oracle会首先对数据文件进行备份,以保证快照的一致性和完整性。
这里的备份可以理解为创建数据文件的一个副本。
3. Redo日志备份:接下来,Oracle会备份Redo日志,以保证在需要恢复数据库时,可以使用快照创建时的Redo信息进行恢复操作。
4. Undo段备份:最后,Oracle会备份当前事务的Undo信息,这样在需要恢复数据时,可以使用保存的Undo段数据将相关事务的变化恢复到快照创建时的状态。
如何获取AWR报告

简介awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告。
获取方法要获取awr报告,首先需要两个数据库快照,Oracle默认每个一个小时创建一个数据库快照,默认只保留最近7天的快照信息。
方法一1:登陆对应的数据库服务器2:找到oracle磁盘空间(d:oracle\product\10.2.0\db_1\RDBMS\Admin)3:执行cmd-cd d:回车4: cd d:oracle\product\10.2.0\db_1\RDBMS\Admin 回车5:sqlplus 用户名/密码@服务连接名(例:sqlplus carmot_esz_1/carmot@igrp)6:执行@awrrpt.sql 回车方法二1、用system用户登录PL/SQL2、查看快照,查询出来的快照snap_id,SQL如下select * from sys.wrh$_active_session_history order by snap_id desc;3、直接通过sql获取即可SELECT * FROM TABLE( dbms_workload_repository.awr_report_html((select dbidfrom v$database), 1,31187, -- begin snap_id 比如上午8点的时候的snap_id31188 --end snap_id 比如下午5点的时候的snap_id))4、把查看的结果全部展开,并全选COPY 出来,保存到txt 文件,并修改后缀为html, 即生成AWR报告。
5、如果展开结果出错,。
Oracle自带性能分析报告工具-awr介绍和分析报告

Oracle自带性能分析工具-AWR介绍和分析华三通信技术1 Oracle 10g的AWR性能优化工具简介AWR (Automatic Workload Repository)既自动工作负载信息库是Oracle10g新提供的收集数据库统计信息的置工具。
它比之前的statspack有显著的改进,收集的信息也更多、更全面,使用方法也更简单。
它主要采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,如包括AWR存区,历史数据存储文件和ASH等部件。
AWR报告的容繁多,官方文档也没有对所有参数给出说明。
AWR产生的报表包括以下几部分。
报表具体容参见如下插入的对象。
1、Report SummeryCache sizesLoad profileInstance Efficiency Percentages (Target 100%)Shared Pool StatisticsTop 5 Timed Events2、RAC StatisticsGlobal Cache Load ProfileGlobal Cache Efficiency Percentages (Target local+remote 100%)Global Cache and Enqueue Services - Workload CharacteristicsGlobal Cache and Enqueue Services - Messaging Statistics3、Wait Events StatisticsTime Model StatisticsWait ClassWait EventsBackground Wait EventsOperating System StatisticsService StatisticsService Wait Class Stats4、SQL StatisticsSQL ordered by Elapsed TimeSQL ordered by CPU TimeSQL ordered by GetsSQL ordered by ReadsSQL ordered by ExecutionsSQL ordered by Parse CallsSQL ordered by Sharable Memory SQL ordered by Version CountSQL ordered by Cluster Wait Time Complete List of SQL Text5、Instance Activity StatisticsInstance Activity StatsInstance Activity Stats - Absolute Values Instance Activity Stats - Thread Activity 6、IO StatsTablespace IO StatsFile IO Stats7、Buffer Pool Statistics8、Advisory StatisticsInstance Recovery StatsBuffer Pool AdvisoryPGA Aggr SummaryPGA Aggr Target StatsPGA Aggr Target HistogramPGA Memory AdvisoryShared Pool AdvisorySGA Target AdvisoryStreams Pool AdvisoryJava Pool Advisory9、Wait StatisticsBuffer Wait StatisticsEnqueue Activity10、Undo StatisticsUndo Segment SummaryUndo Segment Stats11、Latch StatisticsLatch ActivityLatch Sleep BreakdownLatch Miss SourcesParent Latch StatisticsChild Latch Statistics12、Segment StatisticsSegments by Logical ReadsSegments by Physical ReadsSegments by Row Lock WaitsSegments by ITL WaitsSegments by Buffer Busy WaitsSegments by Global Cache Buffer Busy Segments by CR Blocks ReceivedSegments by Current Blocks Received 13、Dictionary Cache StatisticsDictionary Cache StatsDictionary Cache Stats (RAC)14、Library Cache StatisticsLibrary Cache ActivityLibrary Cache Activity (RAC) 15、Memory StatisticsProcess Memory SummarySGA Memory SummarySGA breakdown difference 16、Streams StatisticsStreams CPU/IO UsageStreams CaptureStreams ApplyBuffered QueuesBuffered SubscribersRule Set17、Resource Limit Stats18、init.ora Parameters19、Global Enqueue Statistics20、Global CR Served Stats21、Global CURRENT Served Stats22、Global Cache Transfer Stats2 AWR配置2.1 AWR统计数据的缺省配置AWR 实质上是一个 Oracle 的置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
Oracle数据库中快照的使用

Oracle数据库中快照的使⽤oracle数据库的快照是⼀个表,它包含有对⼀个本地或远程数据库上⼀个或多个表或视图的查询的结果。
正因为快照是⼀个主表的查询⼦集,使⽤快照可以加快数据的查询速度;在保持不同数据库中的两个表的同步中,利⽤快照刷新,数据的更新性能也会有很⼤的改善表快照的建⽴:先建表的快照⽇志,根据表的⽇志,才能在快照中执⾏快刷新create snapshot log on table_name;⼆、在dmtcx⽤户下建⽴到sffw⽤户的数据库链link_sf;---- 建⽴了到sffw⽤户的数据库链后才能从sffw⽤户下的表yh_qfcx中获取数据。
---- Create database link link_sf ---- Connect to sffw identified by xxxxxxx using 'rs6000'; 三、在dmtcx⽤户下建⽴快照s_yh_qfcx; Create snapshot s_yh_qfcx as Select yhh,qf6+qf5+qf4+qf3+qf2+qf1+qf qfje From yh_qfcx@link_sf Where tjbz='K' and bz6+bz5+bz4+bz3+bz2+bz1+bz>0; 四、根据需要修改快照刷新的间隔时间;---- dmtcx⽤户下的快照s_yh_qfcx为了与sffw⽤户下的主表yh_qfcx保持同步,需要不断刷新快照。
只有设定了快照的刷新间隔时间,oracle才会⾃动刷新该快照。
---- 快照的刷新有两种⽅式:快速刷新和完全刷新。
快速刷新需要快照的主表先有快照⽇志存在;完全刷新时oracle执⾏快照查询,将结果放⼊快照。
快速刷新⽐完全刷新快,因为快速刷新将主数据库的数据经⽹络发送到快照的数据少,仅需传送主表中修改过的数据,⽽完 Alter snapshot s_yh_qfcx refresh fast Start with sysdate+1/1440 next sysdate+1/144; {此SQL语句的意思为:设定oracle⾃动在1分钟 (1/24*60)后进⾏第⼀次快速刷新,以后每隔10分钟 (10/24*60)快速刷新⼀次。
快照(计算机存储和备份)

快照(计算机存储)来自维基百科,开放性的百科全书(译者:闫斌)在计算机系统中,快照是系统在某个时间点的状态。
该术语的产生源于类似摄影中的快照。
它可以指系统状态的实际副本或由某些系统提供的功能。
目录1.原理2.实现2.1卷管理器2.2文件系统2.3在数据库中的应用2.4在虚拟化中的应用2.5其他应用3.参见4.注意5.外部链接原理要完成一份大数据集的完整备份可能会花去大量时间。
在多任务或多用户系统中,当数据正在备份时,可能会有数据写入数据集。
这就阻碍了备份的原子性,并引入了版本不一致,这可能会导致数据损坏。
例如,如果一个用户移动一个文件到一个已经备份的文件夹中,那么这个文件在备份介质上会完全丢失,因为在添加文件前备份操作已经发生。
版本不一致也可能导致文件损坏,例如在读取文件时改变文件的大小和内容。
一个安全备份实时数据的方法是在备份过程中使写访问失效,或者停止正在访问数据的应用程序,或者使用操作系统提供的加锁应用程序接口(locking API)强制执行只读访问。
这对于低可用性系统(台式电脑和小型工作组服务器,常规的停机时间是可以接收的)可以容忍。
但是高可用性系统不能容忍业务停止。
为避免停机时间,高可用性系统可能转为采用执行基于快照(在某个时间点上数据集的只读副本)的备份,并允许应用程序继续写入数据。
大多数快照实现是高效的,可以在O(1)时间内创建快照。
换句话说,创建快照所需要的时间和I/O不会随着数据集合的大小而增加,而直接备份则会随着数据集合的大小按相应比例的增加备份时间和I/O。
在某些系统中,一旦数据集合进行了初始快照,随后的快照仅复制更改的数据,并使用系统初始快照的指针引用。
这种基于指针的机制比数据重复克隆消耗更少的磁盘容量。
读写快照有时也被称为分支快照,因为它们隐式地创建了数据集的分支版本。
除了备份和数据恢复,由于读写快照在管理大的文件集合变更方面的非常有用,它经常用在虚拟化、沙盒以及虚拟主机安装领域。
oracle快照详解

oracle快照详解Oracle 物化视图一. 理论部分Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。
物化视图存储基于远程表的数据,也可以称为快照。
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。
物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。
物化视图可以查询表,视图和其它的物化视图。
通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。
如果你想修改本地副本,必须用高级复制的功能。
当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。
在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。
REFRESH 子句[refresh [fast|complete|force][on demand | commit][start with date] [next date][with {primary key|rowid}]]默认情况下,如果没指定刷新方法和刷新模式,则Oracle默认为FORCE和DEMAND。
物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。
三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。
创建物化视图时可以指定多种选项,下面对几种主要的选择进行简单说明:创建方式(Build Methods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。
Oracle系统表大全

数据字典dict总是属于Oracle用户sys的。
、用户:select username from dba_users;改口令alter user spgroup identified by spgtest;2、表空间:select * from dba_data_files;select * from dba_tablespaces;//表空间select tablespace_name,sum(bytes), sum(blocks)from dba_free_space group by tablespace_name;//空闲表空间select * from dba_data_fileswhere tablespace_name='RBS';//表空间对应的数据文件select * from dba_segmentswhere tablespace_name='INDEXS';3、数据库对象:select * from dba_objects;CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PAC KAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。
4、表:select * from dba_tables;analyze my_table compute statistics;>dba_tables后6列select extent_id,bytes from dba_extentswhere segment_name='CUSTOMERS' and segment_type='TABLE'order by extent_id;//表使用的extent的信息。
segment_type='ROLLBACK'查看回滚段的空间分配信息列信息:select distinct table_namefrom user_tab_columnswhere column_name='SO_TYPE_ID';5、索引:select * from dba_indexes;//索引,包括主键索引select * from dba_ind_columns;//索引列select i.index_name,i.uniqueness,c.column_namefrom user_indexes i,user_ind_columns cwhere i.index_name=c.index_nameand i.table_name ='ACC_NBR';//联接使用6、序列:select * from dba_sequences;7、视图:select * from dba_views;select * from all_views;text 可用于查询视图生成的脚本8、聚簇:select * from dba_clusters;9、快照:select * from dba_snapshots;快照、分区应存在相应的表空间。
ORACLE性能AWR报告的使用和分析

ORACLE性能AWR报告的使用和分析Oracle性能AWR报告(Automatic Workload Repository)是Oracle 数据库提供的一个强大的性能诊断工具,可以帮助管理员识别和解决数据库性能问题。
AWR报告收集和保存数据库的性能指标和统计信息,以便在需要时进行分析和比较。
本文将介绍AWR报告的使用和分析过程,包括如何收集AWR报告、AWR报告的内容和结构、及如何分析AWR报告。
一、收集AWR报告AWR报告只能在Oracle数据库中收集,首先需要启用AWR功能。
在Oracle数据库中,AWR功能默认是开启的。
你可以使用以下命令查看AWR 功能是否已经开启:```SELECT name FROM v$statname WHERE name LIKE '%AWR%';```如果显示了AWR相关的统计项,则表示AWR功能已经启用。
要收集AWR报告,需要按照以下步骤操作:1. 连接到数据库,在SQLPlus或类似的工具中执行以下命令,以开启AWR快照:```EXECDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(;```2.执行一段时间(建议至少30分钟)的正常工作负载。
3.再次执行以下命令,以关闭AWR快照:```EXECDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(;```4.通过以下命令查看AWR报告的快照ID:```SELECT snap_id FROM dba_hist_snapshot ORDER BY snap_id;```5.选择要分析的快照ID,使用以下命令生成AWR报告:``````根据提示输入快照ID和报告类型(HTML或文本),即可生成AWR报告。
二、AWR报告的内容和结构AWR报告提供了丰富的性能指标和统计信息,以帮助诊断数据库性能瓶颈。
AWR报告通常包括以下几个部分:1.报告概述:包含报告生成的时间、数据库版本、报告周期等信息,并提供了一个整体的性能评估。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 物化视图一. 理论部分Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。
物化视图存储基于远程表的数据,也可以称为快照。
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。
物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。
物化视图可以查询表,视图和其它的物化视图。
通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。
如果你想修改本地副本,必须用高级复制的功能。
当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。
在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。
REFRESH 子句[refresh [fast|complete|force][on demand | commit][start with date] [next date][with {primary key|rowid}]]默认情况下,如果没指定刷新方法和刷新模式,则Oracle默认为FORCE和DEMAND。
物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。
三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。
创建物化视图时可以指定多种选项,下面对几种主要的选择进行简单说明:创建方式(Build Methods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。
BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。
默认为BUILD IMMEDIATE。
查询重写(Query Rewrite):包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。
分别指出创建的物化视图是否支持查询重写。
查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。
默认为DISABLE QUERY REWRITE。
刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。
刷新的模式有两种:ON DEMAND和ON COMMIT。
ON DEMAND和ON COMMIT物化视图的区别在于其刷新方法的不同,ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新,即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。
对基表,平常的COMMIT在0.01秒内可以完成,但在有了ON COMMIT视图后,居然要6秒。
速度减低了很多倍。
ON COMMIT视图对基表的影响可见一斑。
刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。
1. FAST:增量刷新用物化视图日志来发送主表已经修改的数据行到物化视图中.如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志,故当用FAST选项创建物化视图,必须创建基于主表的视图日志。
SQL> CREATE MATERIALIZED VIEW LOG ON emp;Materialized view log created.对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。
2. COMPLETE:刷新对整个物化视图进行完全的刷新。
3. FORCE:当指定FORCE子句,如果增量刷新可用Oracle将完成增量刷新,否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or FORCE),Force选项是默认选项。
4. NEVER:指物化视图不进行任何刷新。
默认值是FORCE ON DEMAND。
在建立物化视图的时候可以指定ORDER BY语句,使生成的数据按照一定的顺序进行保存。
不过这个语句不会写入物化视图的定义中,而且对以后的刷新也无效。
物化视图日志:如果需要进行快速刷新,则需要建立物化视图日志。
物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。
还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
可以指明ON PREBUILD TABLE语句将物化视图建立在一个已经存在的表上。
这种情况下,物化视图和表必须同名。
当删除物化视图时,不会删除同名的表。
这种物化视图的查询重写要求参数QUERY_REWRITE_INTEGERITY必须设置为trusted或者stale_tolerated。
物化视图可以进行分区。
而且基于分区的物化视图可以支持分区变化跟踪(PCT)。
具有这种特性的物化视图,当基表进行了分区维护操作后,仍然可以进行快速刷新操作。
对于聚集物化视图,可以在GROUP BY列表中使用CUBE或ROLLUP,来建立不同等级的聚集物化视图。
主键和ROWID子句:WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句). PRIMARY KEY是默认选项,为了生成PRIMARY KEY子句,应该在主表上定义主键,否则应该用基于ROWID的物化视图.主键物化视图允许识别物化视图主表而不影响物化视图增量刷新的可用性。
Rowid物化视图只有一个单一的主表,不能包括下面任何一项:1. Distinct 或者聚合函数.2. Group by,子查询,连接和SET操作1.主键物化视图:下面的语法在远程数据库表emp上创建主键物化视图SQL> CREATE MATERIALIZED VIEW mv_emp_pkREFRESH FAST START WITH SYSDATENEXT SYSDATE + 1/48WITH PRIMARY KEYAS SELECT * FROM emp@remote_db;Materialized view created.注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下:SQL> CREATE MATERIALIZED VIEW LOG ON emp;Materialized view log created.2.Rowid物化视图:下面的语法在远程数据库表emp上创建Rowid物化视图SQL> CREATE MATERIALIZED VIEW mv_emp_rowid REFRESH WITH ROWID AS SELECT * FROM emp;3.子查询物化视图: 下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图SQL> CREATE MATERIALIZED VIEW mv_empdeptAS SELECT * FROM emp e WHERE EXISTS(SELECT * FROM dept d WHERE e.dept_no = d.dept_no)刷新时间:START WITH子句通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的间隔时间.SQL> CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATENEXT SYSDATE + 2WITH PRIMARY KEYAS SELECT * FROM emp;在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每两天刷新一次.create materialized view MV_LVY_LEVYDETAILDATATABLESPACE ZGMV_DATA --保存表空间BUILD DEFERRED --延迟刷新不立即刷新refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新on demand --按照指定方式刷新start with to_date('24-11-2005 18:00:10', 'dd-mm-yyyy hh24:mi:ss') --第一次刷新时间next TRUNC(SYSDATE+1)+18/24 --刷新时间间隔asSELECT * FROM emp;物化视图由于是物理真实存在的,故可以创建索引。
二. 物化视图实例物化视图的快速刷新采用了增量的机制,在刷新时,只针对基表上发生变化的数据进行刷新。
因此快速刷新是物化视图刷新方式的首选。
但是快速刷新具有较多的约束,而且对于采用ON COMMIT模式进行快速刷新的物化视图更是如此。
对于包含聚集和包含连接的物化视图的快速刷新机制并不相同,而且对于多层嵌套的物化视图的快速刷新更是有额外的要求。
如此多的限制一般很难记全,当建立物化视图失败时,Oracle给出的错误信息又过于简单,有时无法使你准确定位到问题的原因。
Oracle提供的DBMS_MVIEW.EXPLAIN_MVIEW过程可以帮助你快速定位问题的原因。
下面通过一个例子来说明,如果通过这个过程来解决问题。
建立一个快速刷新的嵌套物化视图:SQL> CREATE TABLE B (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));表已创建。
SQL> CREATE TABLE C (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));表已创建。
SQL> CREATE TABLE A (ID NUMBER, BID NUMBER, CID NUMBER, NUM NUMBER,2 CONSTRAINT FK_A_B_BID FOREIGN KEY (BID) REFERENCES B(ID),3 CONSTRAINT FK_A_C_BID FOREIGN KEY (CID) REFERENCES C(ID));表已创建。