数据库打不开,碰到日志丢失丢失,如果没有快速恢复的多路复用备份,那么可能就需要进行不完全恢复。
当进行不完全恢复时,就需要使用open resetlogs命令。
那么,什么是”不完全恢复“呢?
对于完全恢复:
- 数据库正在运行,你执行了shutdown immediate命令
--> 在这种情况下,所有文件都会有一个相同的scn(数据文件,redo和控制文件),在重新打开库时,数据库将以一个一致的状态开启(Oracle会去确认在每个文件中的所有内部标记并予以确认)。 - 如果你执行的命令是shutdown abort
--> 那么你的数据文件在关库时会还保持在模糊不清的状态下,你的数据文件、控制文件和redo的scn都不是一致的,因此当你启动数据库时会需要进行”crash recovery“即崩溃恢复处理,这会将所有文件恢复的一致的SCN后再运行以正常状态打开数据库。 - 如果你执行restore和recover命令时
--> 如果数据文件被恢复、使用当前的控制文件和redo日志进行恢复,你会注意到(数据文件的SCN值低,而控制文件和redo日志则SCN较高,或者之间的SCN相同)在这种情况下需要进行recover操作经文件都恢复到一致状态下才能正常开库。
对于不完全恢复:
举个简单例子,如果你的恢复并非要恢复到最新状态,即recover到某个scn(或某个时间点,某个sequence)之前,那么你就需要open resetlogs,因为你需要将redo logs置为新的日志文件并以重置开始。
关于resetlogs释义:
- 对当前在线重做日志进行归档(或是如果发现文件损坏或讹误则,则归