1、2.1恢复准备知识相关概念1、重做记录重做记录是一组描述数据库改动的改动向量集例:SQLUPDATESCSETSNO=122WHERESNO=121执行次序如下:1)生成重做记录改动向量2)记录存入日志缓冲区(最终磁盘)3)将重做运用到数据快上2.1恢复准备知识2、SCN(系统修改号)重要的数据结构、定义数据库在某个确切时刻提交的版本例:事物1做一次update和提交,赋予scn20,在五分种之后提交的下一个事物会接到一个大于或等于21的scn,如果第二个事物接到一个比21大的scn,例如25,意味着2.1恢复准备知识检查点检查点是一个数据库事件,他把修改数据从高速缓存写入磁盘,并更新控制文件
2、和数据文件2.1恢复准备知识前滚前滚包括对相应的数据块依次运用重做记录注意:例如改动11需要运用版本号为10的数据块,在运用改动后,版本号加1而变成11,然后改动12应该运用这个数据块必须将所有的改动顺序应用到数据块版本号5块版本号7文件10块20改动6文件10块20改动7块版本号6数据块202.1恢复准备知识回滚也称为事务恢复Oracle用于回滚未提交事务的一种机制这样就有可能出现下面的情况:1、己经写好了日志文件、并且整个事务所做的修改都己经确认了(CommitTran),但是Buffer里的数据页还没有写回到磁盘,服务器停机了。2、写好了日志文件,事务所做的部分修改己经写回了磁盘,但是事
3、务并没有提交,服务器停机了。当出现1的情况时,就需要“前滚”,按照事务日志记录的操作,一步一步重做。当出现2的情况时,就需要“回滚”,按照事务日志记录的操作,一步一步撤消所做的操作。NOARCHIVELOG日志组1日志组2LGWRLGWR新内容覆盖旧内容只能在关闭数据库时进行备份只能恢复到完全备份点必须备份完整数据库ARCHIVELOG只有归档后新内容才能覆盖旧内容允许在数据库打开时备份可以完全恢复数据库日志组1日志组2日志组1日志组2LGWRLGWRLGWRLGWRARCHARCHARCH2.2oracle恢复类型Oracle恢恢复复实例恢复例恢复介介质恢复恢复完全恢复完全恢复不完全恢不完全
4、恢复复数据数据块恢恢复复线程恢复程恢复2.2.1实例恢复InstanceRecovery-由Oracle自动完成,无需DBA干预如果实例异常关闭(宕机,shutdownabort),并且数据文件,控制文件,联机日志都没有丢失。在下次启动时,要利用联机日志的内容进行恢复,这种恢复就是实例恢复(InstanceRecovery)2.2.1实例恢复为什么?Oracle修改数据在内存中进行采用 “延时写”在数据库运行过程中,内存的内容总是比磁盘数据新2.2.1实例恢复所以当数据库正常关闭时(ShutdownImmediate,shutdownnormal,shutdowntracsactional),
5、Oracle会把SGA内容全部写回磁盘后才关闭数据库,这时内存和磁盘就完全同步了。所以正常关闭数据库后数据不会丢失,但是如果数据库是异常关闭(突然短线,shutdownabort),内存中的数据来不及同步到磁盘,这是就会产生了数据不一致,Oracle在次打开数据库时,就需要进行实例恢复2.2.1实例恢复原理相关Oracle的Redo机制保证了数据库恢复的可行性保存代表修改的redo记录修改数据Redo记录和commit记录写到联机日志文件提交生成commit记录空间小触发日志切换2.2.1实例恢复Oracle根据SCN来判断数据文件是否需要恢复的数据库在正常运行时,每个数据文件的终止SCN(S
6、TOPSCN)会被设置为无穷大(NULL),而其他的那些SCN应该完全一样。如果数据库正常关闭,关闭之前会执行一个检查点动作,每个数据文件的终止SCN会被设置成启动SCN(StartSCN)。如果数据库异常关闭,终止SCN来不及设置为启动SCN,仍然保持NULL。2.2.1实例恢复所以正常关闭:stopscn=startscn异常关闭:stopscn!=startscn注意:当发生checkpoint时,会把SCN写到四个地方去。三个地方于controlfile内,一个在datafileheader2.2.1实例恢复小结InstanceRecovery主要包括3个阶段:根据联机日志内容进行Ro
7、llover。打开数据库,提供服务SMON或者用户进程进行Rollback。演示:?2.2.2介质恢复什么是介质恢复 如果发生数据文件丢失或者破坏,就需要使用备份和归档日志来进行恢复,这种恢复就是 介质恢复,要求:它需要有备份,归档日志,联机日志一起才能完成。分为 安全恢复和不完全恢复两种。2.2.2介质恢复采用介质恢复的前提如果介质故障是在数据库采用不归档日志方式操作的情况下发生的那么用物理备份来完成恢复是不大可能的?所以如果DBA采用不归档方式,可以采用的回复方法只能是:从脱机备份中恢复利用完全数据库导出重建数据库2.2.2介质恢复所以保障安全,采用归档是身份重要的,否则一旦出现介质故障,
8、就几乎肯定会丢失数据和数据文件2.2.2介质恢复插入:恢复数据库的语法RECOVERAUTOMATICFROMlocationDATABASE|UNTILCANCEL|UNTILTIMEdate|UNTILCHANGEintegerUSINGBACKUPCONTROLFILE2.2.2介质恢复不完全恢复不完全恢复是指数据库无法恢复到发生故障那一点的状态,而只能恢复到之前一段时间的状态,这就以为着承受一定量的数据损失注意:当不完全恢复完成时,数据库必须用alterdatabaseopenresetlogs命令打开保证已经跳过的重做记录绝不会再被意外的运用2.2.2介质恢复Oracle运行时包括参
9、数文件,控制文件,数据文件,联机日志,那么哪些文件会导致不完全恢复呢?联机日志文件会导致数据丢失联机日志文件会导致数据丢失2.2.2介质恢复我们来看一下联机日志损坏的恢复方法:先用SQL查看一下出问题的联机日志是什么状态:SQLSelectthread#,group#,statusfromv$log;如果是Inactive状态的联机日志,因为它里面的记录已经同步到数据文件,所以只需要把该日志删掉即可。如果是Active/current状态的连接日志,因为他们里面有记录没有同步到数据文件,可以通过如下方式来恢复:2.2.2介质恢复关闭所有实例在受损实例上,启动到mount状态执行alterdat
10、abaseopenresetlogs如果在第三步出现错误,并其实需要不完全恢复,就执行一下:recoverdatabaseuntilcancel实例启动成功后,启动其他实例立即对数据库进行一次全备。不完全恢复步骤2.2.2介质恢复什么是完全恢复它是把数据库恢复到发生故障时的状态,名字中的完全指没有任何数据损失要求:备份,从备份之后的所有归档日志,联机日志都可用完全恢复是最简单的一种恢复,只需要两个命令:restoredatabase和recoverdatabase2.2.2介质恢复完全恢复步骤企业管理器恢复1、进行备份恢复的windows用户应为管理员组2、该用户具备 以批处理方式登录wind
11、ows系统的权限,这可在本地安全策略中设置3、安装ORACLE的OEMSERVER4、sysman/oem_temp登录OEMSERVER5、把安装ORACLE的机器添加到节点。注意,在该服务器上要启动oracleagent服务,才可搜索到此服务器节点6、在OEMSERVER的“配置”-“首选项”-首选身份证明中,设该节点的身份证明为windows用户名和密码,该用户应为管理员组,可做为批处理登录windows。7、在OEMSERVER的“配置”-“首选项”-首选身份证明中,设该节点上安装的全局数据库的身份证明为sys/密码,以sysdba身份。8、在OEMSERVER中找到数据库,右击后选“备份管理”-创建备份配置/备份配置库,添加一个备份配置,该配置中的通道名称不能有中文名称。通道中的格式定义为 操作系统路径名称文件名,其中文件名可包括参数。注意,路径名必须为已存在的文件夹名称,oracle不会自动创建文件夹。9、在OEMSERVER中找到数据库,右击后选“备份管理”-备份可进行备份10、在OEMSERVER中找到数据库,右击后选“备份管理”-恢复 可进行恢复2.3数据块恢复