在生产中,难免碰到各种场景。下面记录一下redo log被删除掉的处理方法。
数据库版本:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
一、shutdow immediate情况下被删除redo
这种情况下最容易处理,数据完全不会丢失。
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1887350784 bytes
Fixed Size 2229464 bytes
Variable Size 1207962408 bytes
Database Buffers 671088640 bytes
Redo Buffers 6070272 bytes
Database mounted.
SQL> recover database until cancel;
Media recovery complete.
SQL> alter database open resetlogs;
Database altered.
open的时候需要resetlogs,open之后,立刻做一次全库备份。
二、数据库open的情况下被删除redo
打开情况下分两种情况,即当前日志被删除和非当前日志被删除。
1、非当前日志被删除
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------- ------------ ---------------
1 1 1 52428800 512 1 YES INACTIVE