重置日志选项用于下列情形后的第一次打开数据库的时候:
- 不完全恢复
- 基于备份控制文件的恢复
- CREATE CONTROLFILE...RESETLOGS
重置日志的最主要的作用就是丢弃不完全恢复中没有使用的重做日志并保证后续的恢复不再需要。为此,重置日志选项将所有联机日志和归档日志都做废掉。副作用就是此前的所有备份对将来的恢复都没有用了。
重做日志选项还初始化了控制文件中关于联机日志和重做线程的内容,清除了当前存在的联机重做日志的内容,如果联机日志文件不存在就创建,并重置了所有线程的日志序号。
8.1 模糊的文件
以重做日志选项方式打开数据库时最重要的事情就是检验所有的数据文件都被恢复到同一个时间点。这保证了单笔重做日志的所有变更都自动应用了。这点对其他的一致性原因也很重要。如果所有线程重做日志都应用到所有联机数据文件上,当然可以说数据库是一致的。
如果进行了不完全恢复,有可能某个文件不是从足够旧的备份中恢复过来。通常这点可以通过检测该数据文件的头部的检查点跟其他数据文件不一致而发现(脱机文件和只读文件是例外)。
另外一种可能性就是这个文件是“模糊的”。它可能包含了超出它检查点SCN的变更。由前面章节知数据文件头部维护了下面这些“模糊状态位”来判断数据文件是否是“模糊的”:
- 联机模糊位(见3.5,6.7.2)
- 热备份模糊位(见4,6.7.3)
- 介质恢复模糊位(见6.7.1)
不完全恢复后以重置日志方式打开数据库时如果联机数据文件的模糊被设置了则会打开失败。
热备份或崩溃恢复结束时会写一笔重做日志记录使得介质恢复可以决定何时可以清除这些模糊位。重做日志会报错如果这些模糊位还没有被清除。
当数据文件中有一个数据文件结束恢复时的检查点SCN跟其他数据文件的检查点SCN(重置日志SCN,见8.2)不一致时,重置日志会报错,除非是下面这几种情形:
1. 一个数据文件恢复到一个比重置SCN要早点的SCN是可以接受的,前提是该数据文件在二者之间已经没有重做日志可以应用。举例说明,该数据文件是只读的或者脱机的,且脱机范围覆盖了结束恢复时的SCN和重置SCN。这种情形下重做日志允许该数据文件设置为脱机。
2. 一个数据文件做检查点的SCN比重做SCN要晚,前提是它的创建SCN(在创建数据文件的时候分配的,保存在文件头中)显示它是在重置SCN以后创建的。重做日志时检查数据字典和控制文件会发现该数据文件在数据字典中不存在但控制文件中存在。结果,它会从控制文件中被清除。
8.2 重置SCN和计数器
控制文件的数据库信息部分记录了一个重置日志的SCN和时间点(合称重置日志数据)。重置日志数据是为了唯一标识每次重做日志打开数据库的操作,同时也保存在每个数据文件头和日志文件头。日志文件中的重置日志数据如果跟控制文件中记录的不一致就不能应用该日志文件中的重做日志。数据文件中的重做日志数据如果跟控制文件中记录的不一致则该数据文件就不能被访问或者恢复,除非某些特殊情形(如该数据文件所在表空间正常脱机或者是只读的)。这保证了被重置日志丢弃的重做日志不会再被应用到数据库中,也声明了此前的任何备份对将来的恢复都是无用的。因此重做日志后立即做一个备份时聪明之举。
8.3 重置日志对线程的影响
重置日志时,每个线程的控制文件记录都清除线程打开标记并将线程检查点SCN设置到重置SCN。因此看起来线程好像在重置SCN处关闭了。控制文件中数据库信息部分记录的启用的线程列表依旧可以使用。此时哪个线程在恢复结束被启用已经不重要了,因为此前的重做日志已经不需要了。所有线程的日志序号都被置为 1,其中一个线程的检查点被选为数据库检查点。
8.4 重置日志对日志文件的影响
所有联机日志都被清零,意味着所有的重做日志都被永久丢弃,除非在重做日志之前有备份联机日志,否则没有任何办法可以恢复这些联机日志。因此要恢复错误的清除联机日志的唯一方案就是联机日志有备份。要恢复一个错误的重做日志操作,必须先还原所有的数据文件、控制文件和联机日志文件,然后全部恢复。
每个启用的线程会挑选一个日志文件作为当前日志。那个日志头部将写为日志序号1.注意日志文件和相关的线程是从控制文件中取出来的(用控制文件中记录的线程号和它的日志集合)。如果这个控制文件是备份的控制文件,可能跟数据库最后一次打开的时候有点区别。
8.5 重置日志对联机数据文件的影响
所有联机数据文件头的检查点都更新为新的数据库检查点。新的重置数据会更新到各个联机数据文件头部。
8.6 重置日志对脱机数据文件的影响
脱机数据文件在控制文件中的记录显示需要做介质恢复。不过这是不可能的,因为它需要应用的重做日志的日志文件的重置数据已经不对了。这意味着包含这个数据文件的表空间必须被删除掉。有一个重要的例外就是该表空间是正常脱机的或者只读的,表空间的数据文件头中的检查点SCN都保存在TS$中,即表空间干净结束 SCN(见2.17)。只要数据文件不是“模糊的”且是在表空间干净结束SCN处做的检查点,在将数据文件联机时是不需要重做日志的。此时脱机文件头部的重置数据被忽略。因此在重做日志之前正常脱机的表空间是不受它脱机期间的重做日志操作影响的。
8.7 重置日志打开数据库时对数据字典和控制文件的检查
重做日志打开数据库后,数据字典FILE$中记录的数据文件会跟控制文件中记录的数据文件进行对比。这个操作在用CREATE CONTROLFILE命令后的第一次打开数据库也会进行的。不完全恢复结束的时侯数据库中的数据文件可能跟用来恢复的控制文件中记录数据文件不一致。使用备份的控制文件或者创建一个控制文件都有同样的问题。检查数据字典没有什么危害,因此每次数据库打开的时候都会做。不过正常情形下也要花时间去做没有什么道理。
FILE$中数据文件的入口会跟控制文件中每个数据文件号进行比较。因为FILE$反映的是数据库中的空间分配信息,它是正确的,控制文件中可能不对。如果FILE$中不存在的而控制文件中存在的数据文件将会从控制文件中清除掉。
如果一个数据文件在FILE$中存在而在控制文件中不存在,则会在控制文件中创建一个记录占位,记录在名字MISSINGnnnn下(MISSINGnnnn中nnnn是十进制形式的文件号)。MISSINGnnnn在控制文件中用来表示被脱机的文件和需要介质恢复的文件。实际文件可以通过将MISSINGnnnn重命名为实际文件名的途径来访问。
在重置打开的时候,重命名MISSINGnnnn能够访问实际数据文件的前提是该数据文件是只读的或者正常脱机的。换句话说如果重命名MISSINGnnnn为一个不是正常脱机或只读的数据文件,并不能使得该数据文件可以访问,因为它还需要重置打开数据库前的重做日志来进行介质恢复。如果是这样,这个表空间就得被删除了。
如果是因为执行了CREATE CONTROLFILE...NORESETLOGS后打开数据库时进行数据字典检查而不是因为重置打开数据库的话,需要介质恢复将该数据文件更新到最新状态。
另外一个步骤就是重复上面操作使控制文件中的数据文件记录跟数据字典中的一致。对不完全恢复而言,这个就要求还原所有的备份再重新恢复了。
继第九章Oracle恢复内部原理(恢复相关的
V$视图)
**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name: guoyJoe
QQ: 252803295
Email: oracledba_cn@hotmail.com
Blog:http://blog.csdn.net/guoyJoe
ITPUB:http://www.itpub.net/space-uid-28460966.html
OCM:http://education.oracle.com/education/otn/YGuo.HTM
_____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!
答案在:http://blog.csdn.net/guoyjoe/article/details/8624392
DSI&Core Search():127149411
分享到:
相关推荐
1. Oracle数据库备份与恢复原理:了解在Oracle数据库中进行备份和恢复的基本原理,包括控制文件和数据文件的作用,以及重做日志(redo log)的机制。 2. 数据库形态(Oracle Incarnation)的概念:理解数据库形态的...
10. **重做日志组问题**: 如果重做日志组丢失或损坏,需要根据具体情况恢复日志文件,确保数据库的事务一致性。 11. **数据库打开**: 在所有恢复步骤完成后,执行`alter database open`或`alter database open ...
### 重置在线重做日志(迁移) 在数据库管理中,有时为了适应实际生产环境的需求,需要对数据库中的在线重做日志进行物理位置的迁移。本文档旨在提供一份详细的操作指南,帮助DBA(数据库管理员)或相关技术人员更...
根据提供的文件信息,本文将详细解析NETBACKUP在Oracle数据库中的恢复步骤与脚本内容,重点探讨如何通过NETBACKUP实现Oracle数据库恢复到指定时间点的功能。 ### 一、NETBACKUP简介 NETBACKUP是Veritas公司开发的...
### Oracle日志文件大全知识点详解 #### 一、Oracle中的几类日志文件 Oracle数据库管理系统使用多种类型的日志文件来记录系统运行期间的各种活动,这些日志文件不仅有助于数据库的管理和维护,还为故障诊断提供了...
在Oracle数据库环境中,数据安全和恢复是至关重要的环节。当Oracle 11g数据库遭遇崩溃时,如何有效地恢复数据,特别是dbf(数据文件)变得尤为关键。Oracle 11g版本,即11.2.0,提供了多种恢复策略来应对这种情况。...
### Oracle RAC恢复到单机方案—仅有一个全备 #### 概述 在Oracle Real Application Clusters (RAC)环境中,当面临只有历史全备(热备)且无增量备份和归档备份的情况下,若需要将数据恢复到单机环境,会面临一定...
Oracle提供了一个隐含参数`_allow_resetlogs_corruption`,在启用后,允许在重置日志时忽略潜在的数据损坏。然而,这应作为最后手段,因为可能会永久丢失数据。在使用此参数前,应先尝试其他恢复策略,并充分理解其...
### ORACLE日志丢失的恢复 在Oracle数据库管理与维护过程中,日志文件的重要性不言而喻。它们记录了数据库的所有事务操作,是实现数据恢复的关键。本文将围绕“Oracle日志丢失的恢复”这一主题,详细介绍如何处理...
总之,Oracle11g的DBF恢复数据是一个涉及多个层面的过程,需要对Oracle数据库的内部机制有深入理解。通过有效的备份策略、详细的恢复计划和熟练的操作技巧,可以确保在面临数据灾难时能够迅速恢复,最小化业务中断。
5. 恢复数据库状态:如果需要,可以通过数据库恢复模式或重置日志来让数据库正常工作。 五、注意事项 在进行Oracle数据库非常规恢复操作时,需要特别注意以下几点: 1. 在进行强制open数据库或使用工具操作前,...
总之,Oracle数据库的备份与恢复是一个复杂且细致的过程,需要对Oracle的内部机制有深入理解。通过实践和测试,我们可以更好地掌握这些技能,确保在面对数据危机时能够迅速恢复,保护企业的数据资产。
### Oracle RMAN 异机不完全恢复 #### 实验背景 在实际的数据库管理工作中,可能会遇到因误操作导致的数据丢失或损坏的情况。在这种情况下,如何有效地利用备份数据完成数据库的恢复工作至关重要。本实验模拟了一...
在 Oracle 非归档模式下,丢失全部联机日志文件后,数据库无法启动,需要进行处理以恢复数据库。以下是处理方法的详细步骤和注意事项: 第一步:备份数据文件和参数文件 在进行任何处理前,首先需要备份数据文件和...
如果控制文件是从备份中恢复的,那么需要使用`startup mount`并使只读表空间离线,然后使用`startup mount`和`alter database open resetlogs`来打开数据库并重置日志。这一步骤会创建新的redo log序列,因为原有的...
Oracle数据库恢复是一个复杂的过程,涉及多个步骤,旨在确保在数据丢失或系统故障后能恢复到一致的状态。以下是对Oracle恢复流程图的详细说明: 1. **Startup Mount**: 当Oracle数据库遇到问题时,首先需要启动实例...
总结起来,处理Oracle日志文件丢失的问题,关键步骤包括:以SYSDBA身份登录,关闭数据库,挂起启动,执行介质恢复,最后打开数据库并重置日志。此外,良好的数据库管理和备份策略是防止这类问题的关键。对于大型企业...