什么是oracle的还原数据?
在oracle数据库中,当某个进程修改数据时,该数据的原始值即为还原数据,oracle会将还原数据存放到一个还原段中。
oracle引入还原数据的目的?
事务回滚,事务恢复,保证数据的读一致性
还原数据的管理方法?
!自动的还原数据管理
!手动的还原数据管理
什么是事务回滚?
当一个用户发了一些DML语句之后改了主意使用了ROLLBACK语句回滚了他所做的事务,此时oracle服务器就会将还原段中的原始数据写回到原来的数据行中
什么是事务恢复?
如果当事务正在进行期间实例崩溃了,则当数据库再次打开时oracle服务器就要还原(回滚)所有没有提交的变化,这种还原就是事务恢复的一部分,要使恢复真正成为可能,写到还原段上变化也要受到联机重做日志文件的保护
什么是读一致性?
当事务在进行期间,数据库中的其他用户不应该看到任何这些事务所做的没有提交的变化,另外,一个语句不应该看到任何在该语句开始执行后所做的变化,换句话说,一个语句在执行期间所看到的数据是禁止的
各种不同类型的oracle还原段?
!系统还原段
!非系统还原段
!延迟还原段
自动还原数据的管理?
通过还原表空间来管理还原数据,数据库管理员为每个实例分配一个还原表空间,该表空间要有足够空间以应付该实例的工作负荷,之后,oracle服务器就将自动维护和管理还原表空间中的还原数据。
如果要oracle自动管理还原数据,数据库管理员就必须在初始化参数文件中配置一下两个参数,还必须创建一个还原表空间:
!UNDO_MANAGEMENT:说明系统是使用自动(auto)还是手动(manual)模式
!UNDO_TABLESPACE:说明系统使用哪个还原表空间
如何创建与维护还原表空间?
共有两种方法来创建还原表空间
!通过在CREATE DATABASE命令中加入一个子句,在创建数据库时建立还原表空间。
!在创建数据库之后,使用CREATE UNDO TABLESPACE命令来建立还原表空间。
如何进行还原表空间之间的切换?
oracle规定在任何时刻只能将一个还原表空间赋予数据库,也就是说,在一个实例中可以由多个还原表空间存在,但是只能有一个为活动的。
可以使用ALTER SYSTEM SET UNDO_TABLESPACE来进行还原表之间的切换
如何删除还原表空间?
使用DROP TABLESPACE命令来删除还原表空间,用户无法删除当前正在使用的还原表空间,只有在一个还原表空间当前没有被使用时才能删除它。
也可以使用以下方法删除一个活动的还原表空间:
!切换到一个新的还原表空间
!等所有当前的事务完成后删除该还原表空间
如何使用UNDO_SUPPRESS_ERRORS参数?
oracle9i引入了一个叫UNDO_SUPPRESS_ERRORS的参数,如果该参数被设为TRUE,那么在还原数据管理的自动模式中试图手动操作时将不显示错误信息,由于该参数是一个动态参数,可以使用如下命令来动态的修改。
ALTER SESSION SET UNDO_SUPPRESS_ERRORS=TRUE
如何使用UNDO_RETENTION参数?
oracle9i引入UNDO_RETENTION参数保证了读一致性还原数据所保留的时间,单位为秒,由于该参数是动态参数,所以可以使用ALTER SYSTEM SET命令来动态的修改它。
增加UNDO_RETENTION值的好处及副作用?
增加UNDO_RETENTION的值虽然能在保证长查询语句的读一致性方面的改进,但是加大UNDO_RETENTION的值也将会增加数据库的磁盘空间的消耗,特别是当DML操作很频繁时,最后最为dba,还应该在读一致性和系统效率两者之间进行平衡。
常用的获取还原数据信息的数据字典?
v$parameter,dba_tablespaces,dba_data_files,v$undostat,v$rollname,v$rollstat,v$session,v$transaction。