對歸檔模式下CLEAR 未歸檔日誌後恢復資料庫的一點看法
在資料上看到過如果不是當前聯機日誌出問題,且如果日誌未歸檔,可以用clear unarchived 命令清空歸檔日誌,達到開啟資料庫的目的。
然而,很少資料提到clear後應該做一些什麼後續工作來保證資料的安全。
根據恢復的理論,要想完全恢復資料庫,從備份某一個檔案後的日誌不能出現斷點,否則將恢復不成功。下面用試驗來證明clear不做備份的嚴重後果:
試驗步驟:
(1)關閉資料庫,備份某資料檔案,把自動歸檔關閉
(2)往資料庫中insert一批資料,檢視當前日誌,記錄下來,並切換日誌,此時可使insert資料時對於的日誌是未歸檔
(3)關閉資料庫,破壞步驟2中未被歸檔的日誌
(4)startup mount、clear unarchived logfile
(5)開啟資料庫後重新往資料庫中插入一批記錄,並切換幾次日誌,最後將所有日誌手工歸檔
(6)關閉資料庫,還原檔案
(7)recover檔案
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
-----備份資料檔案-----
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135339388 bytes
Fixed Size 454012 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 禁用
存檔終點 D:oracleoradataarc
最早的概要日誌序列 11
下一個存檔日誌序列 11
當前日誌序列 11
SQL> conn suk/suk
已連線。
SQL> create table a as select * from dba_users;
表已建立。
SQL> select * from a;
行將被截掉
USERNAME USER_ID PASSWORD ACCOUNT_STATUS LOCK_DATE EXP
------------------------------ ---------- ------------------------------ -------------------------------- ---------- ---
SYS 0 DAD94A5D1B6405DC OPEN
SYSTEM 5 3EC1CAE40BBBC728 OPEN
DBSNMP 19 E066D214D5421CCC OPEN
SUK 61 DD5C4BF6D7A511DE OPEN
SQL> conn / as sysdba
已連線。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
4 1 11 10485760 1 NO CURRENT 1391287 12-12月-05
5 1 0 10485760 1 YES UNUSED 1391143 12-12月-05
6 1 0 10485760 1 YES UNUSED 1391024 12-12月-05
SQL> alter system switch logfile;
系統已更改。
SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 禁用
存檔終點 D:oracleoradataarc
最早的概要日誌序列 11
下一個存檔日誌序列 11
當前日誌序列 12
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
4 1 11 10485760 1 NO ACTIVE 1391287 12-12月-05
5 1 12 10485760 1 NO CURRENT 1408674 12-12月-05
6 1 0 10485760 1 YES UNUSED 1391024 12-12月-05
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
------------刪除redo04----------------
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135339388 bytes
Fixed Size 454012 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 4 (執行緒 1) 的成員
ORA-00312: 聯機日誌 4 執行緒 1: 'D:ORACLEORADATAORACLE9IREDO04.ORA'
SQL> alter database clear unarchived logfile group 4;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
SQL> conn suk/suk
已連線。
SQL> create table b as select * from user_users;
表已建立。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
4 1 0 10485760 1 YES UNUSED 1391287 12-12月-05
5 1 12 10485760 1 NO CURRENT 1408674 12-12月-05
6 1 0 10485760 1 YES UNUSED 1391024 12-12月-05
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> alter system switch logfile;
系統已更改。
SQL> conn / as sysdba
已連線。
SQL> archive log all;
已存檔一個日誌。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
----------將最初備份的檔案複製回來------------------
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135339388 bytes
Fixed Size 454012 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01113: 檔案 11 需要介質恢復
ORA-01110: 資料檔案 11: 'D:ORACLEORADATAORACLE9ISUK_UNIF01.DBF'
SQL> recover datafile 11;
ORA-00279: 更改 1407900 (在 12/12/2005 15:24:08 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORACLEORADATAARCARC00011.001
ORA-00280: 更改 1407900 對於執行緒 1 是按序列 # 11 進行的
指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 無法開啟存檔日誌 'D:ORACLEORADATAARCARC00011.001'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
ORA-00308: 無法開啟存檔日誌 'D:ORACLEORADATAARCARC00011.001'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
從過程可以看出,資料檔案恢復失敗。也就是說,如果對日誌執行clear操作,則clear前的備份是沒有意義的(只能做不完全恢復到clear前的狀態)
因此,我們做完clear操作後,應立刻對資料庫做一次全備。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63746/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle歸檔日誌丟失後的資料庫恢復Oracle資料庫
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- 在歸檔模式下丟失日誌檔案的恢復模式
- 兩個日誌組未能歸檔之後恢復資料庫資料庫
- 無歸檔日誌恢復rman資料
- REDO日誌損壞,非歸檔模式資料檔案恢復模式
- 非歸檔模式恢復資料庫模式資料庫
- Oracle叢集資料庫中恢復歸檔日誌Oracle資料庫
- 非歸檔模式下恢復資料庫兩例模式資料庫
- Oracle資料庫恢復:歸檔日誌損壞案例一則Oracle資料庫
- 歸檔模式下資料庫全恢復的過程模式資料庫
- 恢復控制檔案後,沒有最後一個歸檔日誌的備份,也沒新增歸檔日誌資訊,怎麼恢復?
- 歸檔模式下資料檔案丟失的恢復模式
- DG歸檔日誌缺失恢復
- 恢復歸檔日誌檔案的常用方法
- 非歸檔模式下,丟失日誌檔案的一次恢復過程模式
- 測試在丟失歸檔日誌的情況下,跳過部分歸檔日誌進行資料恢復資料恢復
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- 恢復之非歸檔模式下的恢復模式
- 冷備份+歸檔日誌的恢復
- 非歸檔丟失日誌檔案的恢復
- 跳過歸檔日誌的非常規恢復(一)
- 歸檔模式下丟失普通資料檔案並恢復模式
- 歸檔模式下,線上刪除資料檔案的完全恢復模式
- Oralce資料庫關閉歸檔日誌並且刪除歸檔日誌資料庫
- 將資料庫轉換為歸檔日誌模式資料庫模式
- 歸檔模式無備份丟失資料檔案後恢復模式
- 歸檔模式有備份丟失資料檔案後恢復模式
- 沒備份,歸檔日誌存在,丟失資料檔案的恢復
- 非歸檔模式下線上日誌檔案破壞後例項恢復案例模式
- 備份與恢復--從備份的歸檔日誌中恢復資料
- oracle dg 歸檔日誌恢復情況Oracle
- oracle歸檔模式下imp匯入資料,產生的歸檔日誌大小記錄Oracle模式
- 歸檔日誌無法歸檔導致資料庫hang住資料庫
- RAC下啟動日誌歸檔模式模式
- Oracle控制檔案在缺失歸檔日誌的情況下的恢復Oracle
- 【備份恢復】非歸檔模式下丟失任意資料檔案 恢復操作模式
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案