ALTER DATABASE CLEAR UNARCHIVED LOGFILE的使用
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比新樂(lè)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式新樂(lè)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋新樂(lè)地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
在進(jìn)入今天主題之前,先來(lái)討論一個(gè)v$log動(dòng)態(tài)性能視圖的兩個(gè)字段:
我們需要注意上圖中的兩個(gè)字段:STATUS和ARCHIVED。
STATUS有3種狀態(tài):CURRENT,ACTIVE和INACTIVE;在發(fā)生日志切換的時(shí)候,會(huì)觸發(fā)數(shù)據(jù)庫(kù)執(zhí)行一次CHECKPOINT,CHECKPOINT會(huì)觸發(fā)DBWn進(jìn)程將內(nèi)存中的臟數(shù)據(jù)寫(xiě)入到硬盤(pán),一旦寫(xiě)入完成,之前的日志組的STATUS就會(huì)變成INACTIVE,表示如果此時(shí)發(fā)生宕機(jī),不再需要改日志組的日志進(jìn)行實(shí)例恢復(fù),反之,需要用到該日志組的日志完成實(shí)例恢復(fù);在實(shí)際的工作中發(fā)現(xiàn),對(duì)于一個(gè)”不忙“的數(shù)據(jù)庫(kù),日志組ACTIVE的狀態(tài)可能持續(xù)數(shù)小時(shí),如果此時(shí)停電或異常關(guān)閉,將可能丟失兩個(gè)日志組的數(shù)據(jù);從這點(diǎn)來(lái)說(shuō),為了數(shù)據(jù)的安全,日志組成員不應(yīng)設(shè)置的過(guò)大,應(yīng)該有一個(gè)“適合”的大小。
ARCHIVED有兩種狀態(tài):YES,NO;YES表示ARCH進(jìn)程已經(jīng)將該日志組的Online Redo LogFile拷貝到歸檔目的地,成為一個(gè)Archived Redo Logfile,NO表示還沒(méi)有拷貝完成。日志組的狀態(tài)和日志組是否歸檔之間是沒(méi)有必然的聯(lián)系,它們分別由不同的進(jìn)程來(lái)控制。在出現(xiàn)故障,需要手動(dòng)恢復(fù)的時(shí)候,我們應(yīng)該注意觀察最新的日志組狀態(tài)及是否歸檔,這可能幫助到我們的恢復(fù)過(guò)程,另外,V$LOG的數(shù)據(jù)來(lái)源于控制文件,所以恢復(fù)的控制文件或重建的控制文件不能說(shuō)明數(shù)據(jù)庫(kù)最新的日志組狀態(tài)。
下面通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)討論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
數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫(kù)。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jīng)啟動(dòng)。
Total System Global Area 267825152 bytes
Fixed Size 1384044 bytes
Variable Size 109052308 bytes
Database Buffers 150994944 bytes
Redo Buffers 6393856 bytes
數(shù)據(jù)庫(kù)裝載完畢。
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;
數(shù)據(jù)庫(kù)已更改。
SQL> alter database open;
數(shù)據(jù)庫(kù)已更改。
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 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jīng)啟動(dòng)。
Total System Global Area 267825152 bytes
Fixed Size 1384044 bytes
Variable Size 109052308 bytes
Database Buffers 150994944 bytes
Redo Buffers 6393856 bytes
數(shù)據(jù)庫(kù)裝載完畢。
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 行出現(xiàn)錯(cuò)誤:
ORA-01624: 日志 3 是緊急恢復(fù)實(shí)例 orcl (線程 1) 所必需的
ORA-00312: 聯(lián)機(jī)日志 3 線程 1: 'F:\APP\ORACLE\ORADATA\ORCL2\REDO03.LOG'
SQL> alter database open;
數(shù)據(jù)庫(kù)已更改。
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;
系統(tǒng)已更改。
SQL> shutdown abort
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jīng)啟動(dòng)。
Total System Global Area 267825152 bytes
Fixed Size 1384044 bytes
Variable Size 109052308 bytes
Database Buffers 150994944 bytes
Redo Buffers 6393856 bytes
數(shù)據(jù)庫(kù)裝載完畢。
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 行出現(xiàn)錯(cuò)誤:
ORA-01624: 日志 4 是緊急恢復(fù)實(shí)例 orcl (線程 1) 所必需的
ORA-00312: 聯(lián)機(jī)日志 4 線程 1: 'F:\APP\ORACLE\ORADATA\ORCL2\REDO04.LOG'
總結(jié):ALTER DATABASE CLEAR UNARCHIVED LOGFILE只能用于清除正常關(guān)閉下的CURRENT狀態(tài)的日志組。