對歸檔模式下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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DG歸檔日誌缺失恢復
- 測試在丟失歸檔日誌的情況下,跳過部分歸檔日誌進行資料恢復資料恢復
- Oralce資料庫關閉歸檔日誌並且刪除歸檔日誌資料庫
- oracle dg 歸檔日誌恢復情況Oracle
- 歸檔路徑更改後,如何對資料庫進行恢復(轉)資料庫
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- 手工rm刪除歸檔日誌對備份歸檔日誌的影響
- oracle資料庫歸檔日誌量陡增分析Oracle資料庫
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- DM7使用DMRAMN對多次故障恢復後使用不同資料庫的歸檔進行恢復資料庫
- 歸檔日誌挖掘
- PostgreSQL 歸檔日誌SQL
- oracle歸檔日誌Oracle
- 【BBED】丟失歸檔檔案情況下的恢復
- Rman在run命令塊裡臨時設定歸檔目錄,歸檔日誌能否恢復主要看預設的歸檔路徑
- 歸檔oracle alert日誌Oracle
- 14. 日誌歸檔
- Oracle歸檔日誌清理Oracle
- 達夢資料庫DM8之刪除歸檔日誌檔案資料庫
- Oracle資料庫歸檔模式的切換ELOracle資料庫模式
- pt-archiver工具歸檔和恢復資料一例Hive
- 批量註冊歸檔日誌
- DM7使用dmrestore工具利用不同資料庫的歸檔恢復資料庫REST資料庫
- rac歸檔模式/非歸檔模式下檔案建至本地儲存修復方法-ORA-01157模式
- 測試,ogg從歸檔日誌中抽取資料
- RMAN備份整庫和歸檔日誌的方法
- SQL資料庫怎麼進行資料歸檔和歸檔管理?SQL資料庫
- 教你自動恢復MySQL資料庫的日誌檔案(binlog)MySql資料庫
- 達夢資料庫[-718]收集到的歸檔日誌不連續資料庫
- Oracle設定多個歸檔路徑生成多份歸檔日誌,Rman備份時也只備份其中的一份歸檔日誌Oracle
- MogDB/openGauss誤刪未歸檔的xlog日誌如何解決
- ArgoWorkflow教程(四)---Workflow & 日誌歸檔Go
- logminer異機挖掘歸檔日誌
- Oracle資料庫歸檔模式的開啟和關閉Oracle資料庫模式
- 通過RMAN設定standby接收日誌後主庫歸檔日誌才可刪除
- 從備份片中恢復某個指定得歸檔或者資料檔案
- oracle 刪除過期的歸檔日誌Oracle
- PostgreSQL的xlog/Wal歸檔及日誌清理SQL