ALTER DATABASE CLEAR UNARCHIVED LOGFILE的使用
在進入今天主題之前,先來討論一個v$log動態效能檢視的兩個欄位:
我們需要注意上圖中的兩個欄位:STATUS和ARCHIVED。
STATUS有3種狀態:CURRENT,ACTIVE和INACTIVE;在發生日誌切換的時候,會觸發資料庫執行一次CHECKPOINT,CHECKPOINT會觸發DBWn程式將記憶體中的髒資料寫入到硬碟,一旦寫入完成,之前的日誌組的STATUS就會變成INACTIVE,表示如果此時發生當機,不再需要改日誌組的日誌進行例項恢復,反之,需要用到該日誌組的日誌完成例項恢復;在實際的工作中發現,對於一個”不忙“的資料庫,日誌組ACTIVE的狀態可能持續數小時,如果此時停電或異常關閉,將可能丟失兩個日誌組的資料;從這點來說,為了資料的安全,日誌組成員不應設定的過大,應該有一個“適合”的大小。
ARCHIVED有兩種狀態:YES,NO;YES表示ARCH程式已經將該日誌組的Online Redo LogFile複製到歸檔目的地,成為一個Archived Redo Logfile,NO表示還沒有複製完成。日誌組的狀態和日誌組是否歸檔之間是沒有必然的聯絡,它們分別由不同的程式來控制。在出現故障,需要手動恢復的時候,我們應該注意觀察最新的日誌組狀態及是否歸檔,這可能幫助到我們的恢復過程,另外,V$LOG的資料來源於控制檔案,所以恢復的控制檔案或重建的控制檔案不能說明資料庫最新的日誌組狀態。
下面透過一個簡單的例子來討論ALTER DATABASE CLEAR UNARCHIVED LOGFILE的使用:
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期五 1月 4 23:22:26 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 267825152 bytes
Fixed Size 1384044 bytes
Variable Size 109052308 bytes
Database Buffers 150994944 bytes
Redo Buffers 6393856 bytes
資料庫裝載完畢。
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
4 1 41 CURRENT
3 1 0 UNUSED
SQL> alter database clear unarchived logfile group 4;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
3 1 42 CURRENT
4 1 0 UNUSED
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 267825152 bytes
Fixed Size 1384044 bytes
Variable Size 109052308 bytes
Database Buffers 150994944 bytes
Redo Buffers 6393856 bytes
資料庫裝載完畢。
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
4 1 0 UNUSED
3 1 42 CURRENT
SQL> alter database clear unarchived logfile group 3;
alter database clear unarchived logfile group 3
*
第 1 行出現錯誤:
ORA-01624: 日誌 3 是緊急恢復例項 orcl (執行緒 1) 所必需的
ORA-00312: 聯機日誌 3 執行緒 1: 'F:\APP\ORACLE\ORADATA\ORCL2\REDO03.LOG'
SQL> alter database open;
資料庫已更改。
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
3 1 42 INACTIVE
4 1 43 CURRENT
SQL> alter system switch logfile;
系統已更改。
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 267825152 bytes
Fixed Size 1384044 bytes
Variable Size 109052308 bytes
Database Buffers 150994944 bytes
Redo Buffers 6393856 bytes
資料庫裝載完畢。
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
4 1 43 ACTIVE
3 1 44 CURRENT
SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
第 1 行出現錯誤:
ORA-01624: 日誌 4 是緊急恢復例項 orcl (執行緒 1) 所必需的
ORA-00312: 聯機日誌 4 執行緒 1: 'F:\APP\ORACLE\ORADATA\ORCL2\REDO04.LOG'
總結:ALTER DATABASE CLEAR UNARCHIVED LOGFILE只能用於清除正常關閉下的CURRENT狀態的日誌組。
相關文章:
《Redo丟失的4種情況及處理方法》:http://blog.itpub.net/23135684/viewspace-626935/
--end--
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-1098300/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UNRECOVERABLE DATAFILE clause in the ALTER DATABASE CLEAR LOGFILE statementDatabase
- ORA-279 signalled during: alter database recover logfileDatabase
- [alter system dump學習1]alter system dump logfile
- alter system archive log current和alter system switch logfileHive
- alter system switch logfile和alter system archive log current的區別Hive
- alter system switch logfile 和 alter system archive log current 的區別Hive
- alter database和alter system和alter session的區別DatabaseSession
- ALTER SYSTEM SWITCH LOGFILE ALTER SYSTEM ARCHIVELOG CURRENT 區別Hive
- alter database in OracleDatabaseOracle
- [轉]alter system switch logfile和alter system archive log current的區別Hive
- zt:alter system switch logfile與ALTER SYSTEM ARCHIVE LOG CURRENT的區別Hive
- alter database datafile offline and alter database tablespace ...offlineDatabase
- alter database archivelog manual__導致oracle10g switch logfile不自動歸檔DatabaseHiveOracle
- alter database create datafileDatabase
- alter database create datafile '' as ''Database
- ALTER DATABASE RESETLOGS 的作用Database
- alter system archive log current / all / switch logfileHive
- alter system switch logfile hang住的一種可能
- ALTER DATABASE 與 ALTER TABLESPACE OFFLINE的區別Database
- alter system switch logfile的執行時間是多久。
- alter database open resetlogs;Database
- 忍不住問下alter system 和alter database的區別Database
- alter database offline 與 alter database offline drop效果比對Database
- alter database ... create datafile的原理及用途Database
- alter database disable thread 2Databasethread
- DATA GUARD 中alter database 命令Database
- ALTER DATABASE DATAFILE OFFLINEDatabase
- alter system switch logfile手工日誌切換小記
- Oracle DBA命令參考——alter databaseOracleDatabase
- alter database datafile .... offline drop的問題Database
- alter database backup controlfile to trace的問題Database
- 在alter database mount時的一點收穫Database
- alter database backup controlfile to trace的含義Database
- alter database datafile 4 offline drop;Database
- 恢復一則 alter database create datafile '' as ''Database
- alter database datafile offline drop 與 alter tablespace drop datafile 區別Database
- alter database drop datafile 與 drop tablespace file 的區別Database
- oracle switch logfile日誌切換及alter system checkpoint作了什麼Oracle