丟失重做日誌讀書筆記
在網上看到關於丟失重做日誌的文件,自己做了一下。下面是過程。
OS:WINDOWS XP SP2
DB:ORACLE 9.2.0.1
聯機日誌分為當前聯機日誌和非當前聯機日誌,非當前聯機日誌的損壞是比較簡單的,一般透過clear命令就可以解決問題。
損壞當前聯機日誌:
歸檔模式下當前日誌的損壞有兩種情況,
一、是資料庫是正常關閉,日誌檔案中沒有未決的事務需要例項恢復,當前日誌組的損壞就可以直接用alter database clear unarchived logfile group n來重建。
二、是日誌組中有活動的事務,資料庫需要媒體恢復,日誌組需要用來同步,有兩種補救辦法
A. 最好的辦法就是透過不完全恢復,可以保證資料庫的一致性,但是這種辦法要求在歸檔方式下,並且有可用的備份
B. 透過強制性恢復,但是可能導致資料庫不一致。
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\zero>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 1月 27 16:24:56 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已連線。
SP2-0614: 伺服器版本太低,不能實現此功能
SP2-0614: 伺服器版本太低,不能實現此功能
SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
1、進行非當前重做日誌的故障模擬和恢復
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 NO CURRENT
3 225 YES INACTIVE
4 224 YES INACTIVE
SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> host move LOGZERO4.ORA logzero04.ora.bak
系統找不到指定的檔案。
SQL> host move D:\oracle\oradata\zero\LOGZERO4.ORA D:\oracle\oradata\zero\logzero04.ora.bak
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 NO INVALIDATED
3 225 YES INACTIVE
4 224 YES INACTIVE
SQL> alter database clear logfile group 4;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
SQL> host del D:\oracle\oradata\zero\logzero04.ora.bak;
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 YES INACTIVE
3 225 YES INACTIVE
4 228 NO CURRENT
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> select group#,sequence#,archived,status from v$log;
select group#,sequence#,archived,status from v$log
*
ERROR 位於第 1 行:
ORA-01034: ORACLE not available
2、進行當前重做日誌(未歸檔)故障模擬和恢復(有資料庫備份)
SQL> host move D:\oracle\oradata\zero\LOGZERO4.ORA D:\oracle\oradata\zero\logzero04.ora.bak
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 YES INACTIVE
3 0 YES UNUSED
4 0 NO CLEARING_CURRENT
SQL> alter database clear unarchived logfile group 1;
資料庫已更改。
SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
由於之前沒有備份,所以在此處暫時物理恢復。
SQL> host move D:\oracle\oradata\zero\logzero04.ora.bak D:\oracle\oradata\zero\LOGZERO4.ORA
SQL> alter database open;
資料庫已更改。
完成之後,在rman裡面做一次資料庫全備份。然後進行下面操作
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\LOGZERO4.ORA D:\oracle\oradata\zero\logzero04.ora.bak
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter database clear unarchived logfile group 4;
資料庫已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 230 NO CURRENT
2 227 YES INACTIVE
3 229 YES INACTIVE
4 0 YES UNUSED
SQL> host del D:\oracle\oradata\zero\logzero04.ora.bak;
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 230 NO CURRENT
2 227 YES INACTIVE
3 229 YES INACTIVE
4 0 YES UNUSED
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO01.LOG D:\oracle\oradata\zero\REDO01.LOG.BAK
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 1 (執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO01.LOG'
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 1 (執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO01.LOG'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 NO CLEARING_CURRENT
2 227 YES INACTIVE
3 229 YES INACTIVE
4 0 YES UNUSED
SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> host del D:\oracle\oradata\zero\redo01.log.bak;
SQL>
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 1 YES INACTIVE
2 2 YES INACTIVE
3 3 NO CURRENT
4 0 YES UNUSED
SQL> alter system archive log current;
系統已更改。
SQL> alter system archive log current;
系統已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 NO CURRENT
2 2 YES INACTIVE
3 3 YES INACTIVE
4 4 YES INACTIVE
注意,在使用resetlogs開啟資料庫之後,sequence#重置了。
3、進行當前重做日誌(未歸檔)故障模擬和恢復(無資料庫備份)
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO01.LOG D:\oracle\oradata\zero\REDO01.LOG.BAK
SQL> host move D:\oracle\oradata\zero\REDO01.LOG.BAK D:\oracle\oradata\zero\REDO01.LOG
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 YES INACTIVE
2 6 NO CURRENT
3 3 YES INACTIVE
4 4 YES INACTIVE
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO01.LOG D:\oracle\oradata\zero\REDO01.LOG.BAK
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 1 (執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO01.LOG'
SQL> host move D:\oracle\oradata\zero\REDO01.LOG.BAK D:\oracle\oradata\zero\REDO01.LOG
SQL> alter database open;
資料庫已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 YES INACTIVE
2 6 YES INACTIVE
3 7 NO CURRENT
4 4 YES INACTIVE
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO03.LOG D:\oracle\oradata\zero\REDO03.LOG.BAK
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 3 (執行緒 1) 的成員
ORA-00312: 聯機日誌 3 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO03.LOG'
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 YES INACTIVE
2 6 YES INACTIVE
3 7 NO CURRENT
4 4 YES INACTIVE
SQL> alter database clear unarchived logfile group 3;
alter database clear unarchived logfile group 3
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 3 (執行緒 1) 的成員
ORA-00312: 聯機日誌 3 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO03.LOG'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> create pfile='d:\init.ora' from spfile;
檔案已建立。
SQL> shutdown immediate;
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
在init.ora裡面加入_allow_resetlogs_corruption=TRUE引數。然後利用init.ora啟動例項
SQL> startup mount pfile ='d:\init.ora';
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount pfile ='d:\init.ora';
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> create spfile from pfile='d:\init.ora';
檔案已建立。
SQL> shutdown immediate;
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system archive log current;
系統已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 2 YES INACTIVE
2 3 YES ACTIVE
3 1 YES INACTIVE
4 4 NO CURRENT
SQL>
至此,資料庫恢復完成,但是資料庫資料可能會出現不一致。
OS:WINDOWS XP SP2
DB:ORACLE 9.2.0.1
聯機日誌分為當前聯機日誌和非當前聯機日誌,非當前聯機日誌的損壞是比較簡單的,一般透過clear命令就可以解決問題。
損壞當前聯機日誌:
歸檔模式下當前日誌的損壞有兩種情況,
一、是資料庫是正常關閉,日誌檔案中沒有未決的事務需要例項恢復,當前日誌組的損壞就可以直接用alter database clear unarchived logfile group n來重建。
二、是日誌組中有活動的事務,資料庫需要媒體恢復,日誌組需要用來同步,有兩種補救辦法
A. 最好的辦法就是透過不完全恢復,可以保證資料庫的一致性,但是這種辦法要求在歸檔方式下,並且有可用的備份
B. 透過強制性恢復,但是可能導致資料庫不一致。
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\zero>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 1月 27 16:24:56 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已連線。
SP2-0614: 伺服器版本太低,不能實現此功能
SP2-0614: 伺服器版本太低,不能實現此功能
SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
1、進行非當前重做日誌的故障模擬和恢復
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 NO CURRENT
3 225 YES INACTIVE
4 224 YES INACTIVE
SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> host move LOGZERO4.ORA logzero04.ora.bak
系統找不到指定的檔案。
SQL> host move D:\oracle\oradata\zero\LOGZERO4.ORA D:\oracle\oradata\zero\logzero04.ora.bak
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 NO INVALIDATED
3 225 YES INACTIVE
4 224 YES INACTIVE
SQL> alter database clear logfile group 4;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
SQL> host del D:\oracle\oradata\zero\logzero04.ora.bak;
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 YES INACTIVE
3 225 YES INACTIVE
4 228 NO CURRENT
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> select group#,sequence#,archived,status from v$log;
select group#,sequence#,archived,status from v$log
*
ERROR 位於第 1 行:
ORA-01034: ORACLE not available
2、進行當前重做日誌(未歸檔)故障模擬和恢復(有資料庫備份)
SQL> host move D:\oracle\oradata\zero\LOGZERO4.ORA D:\oracle\oradata\zero\logzero04.ora.bak
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 226 YES INACTIVE
2 227 YES INACTIVE
3 0 YES UNUSED
4 0 NO CLEARING_CURRENT
SQL> alter database clear unarchived logfile group 1;
資料庫已更改。
SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\LOGZERO4.ORA'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
由於之前沒有備份,所以在此處暫時物理恢復。
SQL> host move D:\oracle\oradata\zero\logzero04.ora.bak D:\oracle\oradata\zero\LOGZERO4.ORA
SQL> alter database open;
資料庫已更改。
完成之後,在rman裡面做一次資料庫全備份。然後進行下面操作
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\LOGZERO4.ORA D:\oracle\oradata\zero\logzero04.ora.bak
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter database clear unarchived logfile group 4;
資料庫已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 230 NO CURRENT
2 227 YES INACTIVE
3 229 YES INACTIVE
4 0 YES UNUSED
SQL> host del D:\oracle\oradata\zero\logzero04.ora.bak;
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 230 NO CURRENT
2 227 YES INACTIVE
3 229 YES INACTIVE
4 0 YES UNUSED
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO01.LOG D:\oracle\oradata\zero\REDO01.LOG.BAK
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 1 (執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO01.LOG'
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 1 (執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO01.LOG'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 NO CLEARING_CURRENT
2 227 YES INACTIVE
3 229 YES INACTIVE
4 0 YES UNUSED
SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> host del D:\oracle\oradata\zero\redo01.log.bak;
SQL>
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 1 YES INACTIVE
2 2 YES INACTIVE
3 3 NO CURRENT
4 0 YES UNUSED
SQL> alter system archive log current;
系統已更改。
SQL> alter system archive log current;
系統已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 NO CURRENT
2 2 YES INACTIVE
3 3 YES INACTIVE
4 4 YES INACTIVE
注意,在使用resetlogs開啟資料庫之後,sequence#重置了。
3、進行當前重做日誌(未歸檔)故障模擬和恢復(無資料庫備份)
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO01.LOG D:\oracle\oradata\zero\REDO01.LOG.BAK
SQL> host move D:\oracle\oradata\zero\REDO01.LOG.BAK D:\oracle\oradata\zero\REDO01.LOG
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 YES INACTIVE
2 6 NO CURRENT
3 3 YES INACTIVE
4 4 YES INACTIVE
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO01.LOG D:\oracle\oradata\zero\REDO01.LOG.BAK
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 1 (執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO01.LOG'
SQL> host move D:\oracle\oradata\zero\REDO01.LOG.BAK D:\oracle\oradata\zero\REDO01.LOG
SQL> alter database open;
資料庫已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 YES INACTIVE
2 6 YES INACTIVE
3 7 NO CURRENT
4 4 YES INACTIVE
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host move D:\oracle\oradata\zero\REDO03.LOG D:\oracle\oradata\zero\REDO03.LOG.BAK
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 3 (執行緒 1) 的成員
ORA-00312: 聯機日誌 3 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO03.LOG'
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 YES INACTIVE
2 6 YES INACTIVE
3 7 NO CURRENT
4 4 YES INACTIVE
SQL> alter database clear unarchived logfile group 3;
alter database clear unarchived logfile group 3
*
ERROR 位於第 1 行:
ORA-00313: 無法開啟日誌組 3 (執行緒 1) 的成員
ORA-00312: 聯機日誌 3 執行緒 1: 'D:\ORACLE\ORADATA\ZERO\REDO03.LOG'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> create pfile='d:\init.ora' from spfile;
檔案已建立。
SQL> shutdown immediate;
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
在init.ora裡面加入_allow_resetlogs_corruption=TRUE引數。然後利用init.ora啟動例項
SQL> startup mount pfile ='d:\init.ora';
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> recover database until cancel;
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount pfile ='d:\init.ora';
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> create spfile from pfile='d:\init.ora';
檔案已建立。
SQL> shutdown immediate;
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system archive log current;
系統已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 2 YES INACTIVE
2 3 YES ACTIVE
3 1 YES INACTIVE
4 4 NO CURRENT
SQL>
至此,資料庫恢復完成,但是資料庫資料可能會出現不一致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/79499/viewspace-417646/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 聯機重做日誌丟失的恢復
- 丟失聯機重做日誌檔案的恢復
- rman恢復--丟失聯機重做日誌的恢復
- 7.管理重做日誌(筆記)筆記
- Oracle重做日誌檔案損壞或丟失後的恢復Oracle
- 丟失重做日誌怎麼處理
- 丟失當前current重做日誌檔案下恢復資料庫資料庫
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案
- 丟失所有重做日誌檔案的恢復例子丟失所有重做日誌檔案的恢復例子如下:
- 重做日誌
- 聯機重做日誌、歸檔日誌、備用重做日誌
- 讀書日誌
- 重做日誌管理
- 為oracle新增重做日誌組及重做日誌成員Oracle
- redo重做日誌管理
- Oracle的重做日誌Oracle
- 恢復重做日誌
- 從丟失日誌組中恢復流程
- 丟失非活動日誌組的恢復
- MySQL重做日誌(redo log)MySql
- 重做日誌的恢復
- 重做日誌基礎操作
- oracle 恢復重做日誌Oracle
- dml操作重做日誌分析
- oracle丟失的是所有的redo日誌組Oracle
- Oracle DataGuard歸檔日誌丟失處理方法Oracle
- 聯機日誌檔案丟失解決方法
- 【redo】日誌檔案的丟失解決方法
- 利用incremental backup恢復丟失日誌的standbyREM
- oracle丟失日誌檔案的恢復( 轉)Oracle
- 讀書筆記...筆記
- 讀書筆記筆記
- oracle線上調整重做日誌Oracle
- logmnr分析線上重做日誌
- 手工建立多路重做日誌組
- 重做日誌大小的設定
- Oracle重做日誌調整技巧Oracle
- 《讀書與做人》讀書筆記筆記