资源描述
,提要,单击此处编辑母版文本样式,第二级,第三级,第四级,提要,单击此处编辑母版文本样式,第二级,第三级,第四级,第九讲,回滚表空间,二零一零年六月,目标,学习此章,需要掌握以下知识,:,了解回滚表空间的基本概念和作用,了解回滚表空间的工作原理,知道回滚表空间的管理,知道如何查看回滚表空间的信息,相关概念,回滚,让数据恢复到指定(或上一个)时点。通俗地说,就是让数据回退到某个,DML,操作之前的状态,回滚数据,原始的、修改之前的数据副本,为更改数据的每个事务处理而捕获,至少保留到事务处理结束,用于支持读一致性和闪回查询,以及从失败的事务处理中进行恢复。,相关概念(续),回滚数据,重做数据,记录,如何回滚更改,如何重新生成更改,用于,回滚、读取一致性,向前滚动数据库更改,存储,回滚表空间(回滚段),联机重做日志文件,避免,在多用户系统中读取不一致,数据丢失,概述,用于保存和管理回滚数据,不能包含其他对象,必须使用本地管理的模式,一个数据库中可以没有回滚表空间,也可以有多个回滚表空间,但是一次只能有一个回滚表空间被指定为可写入回滚数据的当前还原表空间。,工作原理,应用,保证读一致性,回滚段的分类,System,:为,system,表空间中的对象使用。,Non-system,:为其他表空间中的对象使用,自动模式:需要回滚表空间,手动模式:,手动建立,rollback,segment,并进行管理,private,:适用于单一实例,public,:适用于多个实例,不推荐使用手动模式,回滚表空间大小的设置,由三个因素决定:,undo_retention,(,UR,),每秒产生的回滚数据块的数目(,UPS,),,db_block_size,(,DBS,),UndoSpace=U,R,*,(,U,PS,*,DBS,),+,DBS,*,24,利用查询来获得:,回滚表空间大小的设置(续),利用Database Control所提供的Undo Advisory来帮助估算,自动回滚管理概述,回滚数据(,undo data,)在回滚表空间中管理。,为每个实例分配足够的空间创建回滚表空间来满足数据库的负载。,Oracle,服务器自动在回滚表空间中管理回滚数据。,自动回滚管理配置,在初始化参数文件中设置两个初始化参数:,UNDO_MANAGMENT,:根据需求可设置为,ATUO,或者,MANUAL,UNDO_TABLESPACE,:指定一个,undo,表空间,至少创建一个回滚表空间,回滚信息分类,未提交的回滚信息:,支持当前运行的事务处理,如果用户要回退或事务处理失败时,需要用到这类信息。绝对不会覆盖未提交的回滚信息。,提交的回滚信息:,不再需要用来支持运行的事务处理,但是为了符合还原保留期间隔,仍然要用到这类信息。这也称为,“,未过期,”回滚,信息。当不是因为缺少空间而导致活动事务处理失败时,就会保留提交的回滚信息。,过期的回滚信息:,不再需要用来支持运行的事务处理。活动事务处理需要空间时会覆盖过期的回滚信息。,回滚保留期,(,undo retention,),当启用自动,回滚,管理的时候,通常有一个当前的,回滚,保留期(,undo retention period,),这是,oracle,数据库默认的保留,回滚,信息的最短时间。,由参数,undo_retention,指定。,回滚保留期(续),若回滚表空间的大小固定,忽略,undo_retention,,,oracle,会根据表空间的大小和当前系统的装载量确定最好的回滚保留期。,当表空间剩余空间低的时候就可能覆盖未过期的还原信息。,若回滚表空间是自动扩展的,oracle,会把回滚保留期的时限提高到最长查询之上,并尝试保证由,undo_retention,参数指定的最小回滚保留期,当回滚表空间剩余空间低的时候,表空间会自动扩展而不是覆盖未过期的回滚数据。,如果自动扩展的回滚表空间设置了最大值,则表空间达到最大值后还是会覆盖未过期的还原数据,ORA-01555:snapshot too old,报错,Oracle,数据库基于回滚表空间的大小和系统的活动自动调整撤销保留期的大小。可以通过制定初始化参数,UNDO_RETENTION,(秒级)来制定最少的回滚保留期。数据库会尽自己最大的努力来保证指定的最小的回滚保留期。,当分配给新交易的空间变小的时候,数据库开始覆盖过期的回滚信息。如果回滚表空间在覆盖了所有过期的信息之后依旧没有剩余空间,数据库就开始覆盖未过期的回滚信息。如果被覆盖的回滚数据在长时间查询中需要被访问,就会返回,ORA-01555:snapshot too old,的报错。,查看回滚保留期,确保回滚保留期(,Retention Guarantee,),创建回滚表空间,CREATE DATABASE db01,.,UNDO TABLESPACE undo1,DATAFILE/u01/oradata/undoldb01.dbf SIZE 20M,AUTOEXTEND ON,CREATE UNDO TABLESPACE undo1,DATAFILE/u01/oradata/undo1db01.dbf,SIZE 20M;,第一种方法:创建数据库时直接创建,第二种方法:使用,CREATE UNDO TABLESPACE,创建,修改和删除回滚表空间,使用,alter tablespace,命令,和修改一般的表空间一样,使用,DROP TABLESPACE,命令删除,undo,表空间,一个,undo,表空间只有当前没有任何实例使用的时候才能被删除。,删除一个当前活动的,undo,表空间:,将当前,active undo,表空间切换出去。,在当前所有交易结束之后将,undo,表空间删除。,切换回滚表空间,可以在多个回滚表空间之间进行切换。,一个数据库一次只能声明一个回滚表空间。,一个数据库中可以存在很多回滚表空间,但是只有一个表空间是,active,状态。,使用,ALTER SYSTEM,命令动态实现表空间切换。,ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS,查看回滚信息,V$UNDOSTAT,视图包含了管理和优化回滚空间的数据。查看此视图能帮助估计出对当前工作负载需要多少回滚空间。数据库也用此信息来帮助优化回滚空间使用率。这种视图只有在自动回滚管理模式下才有意义。,V$ROLLSTAT,视图,在自动回滚管理模式下,此视图的信息反映了在回滚表空间中回滚段的行为。,V$TRANSACTION,包含了回滚段的信息。,DBA_UNDO_EXTENTS,显示了回滚表空间中每个区的状态和大小。,DBA_HIST_UNDOSTAT,显示了,V$UNDOSTAT,的快照信息。,总结,通过本章的学习,应达到,:,了解回滚表空间的基本概念和作用,了解回滚表空间的工作原理,知道回滚表空间的管理,知道如何查看回滚表空间的信息,
展开阅读全文