日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle 联机重做日志文件(ONLINE LOG FILE)

發布時間:2025/3/20 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 联机重做日志文件(ONLINE LOG FILE) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--=========================================

-- Oracle?聯機重做日志文件(ONLINE LOG FILE)

--=========================================

?

一、Oracle中的幾類日志文件

????Redo?log?files??????-->聯機重做日志

????Archive?log?files???-->歸檔日志

????Alert?log?files?????-->告警日志

????Trace files?????????-->跟蹤日志

????????user_dump_dest??????????-->用戶跟蹤日志

????????backupground_dump_dest??-->進程跟蹤日志

???

????--查看后臺進程相關目錄

????????SQL>?show parameter?dump

?

????????NAME?????????????????????????????????TYPE????????VALUE

????????------------------------------------ ----------- ------------------------------

????????background_core_dump?????????????????string??????partial

????????background_dump_dest?????????????????string??????/u01/app/oracle/admin/orcl/bdump

????????core_dump_dest???????????????????????string??????/u01/app/oracle/admin/orcl/cdump

????????max_dump_file_size???????????????????string??????UNLIMITED

????????shadow_core_dump?????????????????????string??????partial

????????user_dump_dest???????????????????????string??????/u01/app/oracle/admin/orcl/udump??

???????

????關于Oracle?常用目錄及路徑請參考:Oracle?常用目錄結構(10g)

????關于Oracle?體系結構請參考:Oracle實例和Oracle數據庫(Oracle體系結構)

?

二、聯機重做日志的規劃管理

????1.聯機重做日志?????

????????記錄了數據的所有變化(DML,DDL或管理員對數據所作的結構性更改等)

????????提供恢復機制(對于意外刪除或宕機利用日志文件實現數據恢復)

????????可以被分組管理

???????

????2.聯機重做日志組

????????由一個或多個相同的聯機日志文件組成一個聯機重做日志組

????????至少兩個日志組,每組一個成員(建議每組兩個成員,分散放開到不同的磁盤)

????????由LGWR后臺進程同時將日志內容寫入到一個組的所有成員

????????????LGWR的觸發條件

????????????????在事務提交的時候(COMMIT)

????????????????Redo?Log?Buffer?三分之一滿

????????????????Redo?Log?Buffer?多于一兆的變化記錄

????????????????在DBWn寫入數據文件之前

???????????

????3.聯機重做日志成員

????????重做日志組內的每一個聯機日志文件稱為一個成員

????????一個組內的每一個成員具有相同的日志序列號(log?sequence number),且成員的大小相同

????????每次日志切換時,Oracle服務器分配一個新的LSN號給即將寫入日志的日志文件組

????????LSN號用于唯一區分每一個聯機日志組和歸檔日志

????????處于歸檔模式的聯機日志,LSN號在歸檔時也被寫入到歸檔日志之中

???????

????4.日志文件的工作方式

????????日志文件采用按順序循環寫的方式

????????當一組聯機日志組寫滿,LGWR則將日志寫入到下一組,當最后一組寫滿則從第一組開始寫入

????????寫入下一組的過程稱為日志切換

????????切換時發生檢查點過程

????????檢查點的信息同時寫入到控制文件

???

????5.聯機日志文件的規劃

????????總原則

????????????分散放開,多路復用

????????????日志所在的磁盤應當具有較高的I/O

????????????一般日志組大小應滿足自動切換間隔至少15-20分鐘左右業務需求

????????????建議使用rdo結尾的日志文件名,避免誤刪日志文件。如redo1.rdo,redo2.rdo

????????規劃樣例

????????????Redo?Log?Group1?????Redo?Log?Group2?????Redo?Log?Group3

???????????

????????????Member1?????????????Member1??????????????Member1????????????-->Physical Disk 1

???????????

????????????Member2?????????????Member2??????????????Member2????????????-->Physical Disk 2

???????????

????????????Member3?????????????Member3??????????????Member3????????????-->Physical Disk 3

???????????

????6.日志切換和檢查點切換

????????ALTER?SYSTEM SWITCH LOGFILE;???--強制手動切換

???????

????????ALTER?SYSTEM CHECKPOINT;

???????

????????強制設置檢查點間隔

????????ALTER?SYSTEM?SET?FAST_START_MTTR_TARGET?=?n

???????

????7.添加日志文件組

????????ALTER?DATABASE?ADD?LOGFILE [GROUP?n]

????????????('$ORACLE_BASE/oradata/u01/logn1.rdo',

?????????????'$ORACLE_BASE/oradata/u01/logn2.rdo')

????????????SIZE?mM;

???????????

????8.添加日志成員

????????ALTER?DATABASE?ADD?LOGFILE MEMBER

????????'$ORACLE_BASE/oradata/u01/logn1.rdo'?TO?GROUP?1,

????????'$ORACLE_BASE/oradata/u01/logn2.rdo'?TO?GROUP?2;

???????

????9.刪除日志成員

????????不能刪除組內的唯一一個成員

????????不能刪除處于active?和current?狀態組內的成員

????????刪除處于active?和current?狀態組內的成員,應使用日志切換使其處于INACTIVE狀態后再刪除

????????對于組內如果一個成員為NULL?值,一個為INVALID,且組處入INACTIVE,僅能刪除INVALID狀態成員

????????刪除日志成員,物理文件并沒有真正刪除,需要手動刪除

????????刪除日志文件后,控制文件被更新

????????對于處于歸檔模式下的數據庫,刪除成員時確保日志已被歸檔,查看v$log視圖獲得歸檔信息

????????ALTER?DATABASE?DROP?LOGFILE MEMBER?'$ORACLE_BASE/oradata/u01/logn1.rdo'

???????

????10.刪除日志組

????????一個實例至少需要兩個聯機日志文件組

????????活動或當前的日志組不能被刪除

????????組內成員狀態有NULL?值或INVALID狀態并存,組不可刪除

????????日志組被刪除后,物理文件需要手動刪除(對于非OMF)

????????ALTER?DATABASE?DROP?LOGFILE?GROUP?n

???????

????11.日志的重定位及重命名

????????所需權限

????????????ALTER?DATABASE?系統權限

????????????復制文件到目的位置操作系統權限(寫權限)

????????CURRENT狀態組內的成員不能被重命名

????????建議該行為之前備份數據庫

????????重命名或重定位之后建議立即備份控制文件

????????重定位及重命名的兩種方法

????????????添加一個新成員到日志組,然后刪除一個舊的成員

????????????使用ALTER?DATABASE?RENAME?FILE?命令(不區分歸檔與非歸檔模式)

????????????????復制聯機日志文件到新路徑:ho cp <oldfile> <newfile>

????????????????執行ALTER?DATABASE?RENAME?FILE?'<oldfile>'?TO?'<newfile>'

????????????對于處于CURRENT狀態的需要改名且不切換的情況下

????????????????辦法是切換到MOUNT狀態下再執行上述操作

???????????????????????????????

????12.清空日志文件組

????????ALTER?DATABASE?CLEAR LOGIFLE?GROUP?n

????????ALTER?DATABASE?CLEAR UNARCHIVED LOGFILE?GROUP?n?--使用unarchived?避免歸檔

???

????13.日志周期循環及切換分析

???????

????????Group?1??????Group?2??????Group?3

???????

????????Current??????Inactive?????Inactive

????????---------- Log Switch -------------

????????Active???????Current??????Inactive

????????---------- Log Switch -------------

????????Active???????Active???????Current

????????---------- Log Switch -------------

????????Current??????Inactive?????Inactive

???????

????????--Active?和Current?稱之為在一個循環周期之內(按順序寫日志)

????????--Inactive?稱為一個周期之外(一個新的循環)

????????--新一輪循環開始如在歸檔狀態則先歸檔再清空,否則直接清空日志

????????--數據庫啟動時Active?和Current?狀態的日志不能丟失,否則出錯

???????

????14.日志的監視

????????查看日志視圖中的物理日志文件是否存在、位置、大小等

????????????SELECT?'ho cp '||member?FROM?v$logfile;

????????查看日志文件所處的磁盤空間是否足夠

????????????SQL>?ho df?-h

????????查看組內是否存在多個成員,如為單一成員應考慮增加日志成員

????????日志切換的間隔時間,應滿足15-20分鐘業務需求,如果切換間隔很短,應當增加日志文件的大小

????????????增加方法,先刪除日志組,再重建該組(對于current和active的需要切換再做處理)

?

????????--查看切換時間間隔(下面的示例中為手工切換的時間,不作考慮)

????????SQL>?SELECT?TO_CHAR(first_time,'yyyy-mm-dd hh24:mi:ss'),group#?FROM?v$log;

???

????????TO_CHAR(FIRST_TIME,?????GROUP#

????????------------------- ----------

????????2010-07-20 09:43:18??????????1

????????2010-07-19 22:44:30??????????2

????????2010-07-19 22:44:32??????????3?????????

???????

????15.日志的異常處理(參照演示中9小節)

????????不一致的情況(啟動時)

????????????ALTER?DATABASE?CLEAR LOGFILE?GROUP?n

????????????ALTER?DATABASE?CLEAR UNARCHIVED LOGFILE?GROUP?n

???????????

三、與日志有關的動態性能視圖

????????V$LOG

????????V$LOGFILE

???????

????????V$LOG中STATUS的狀態值

????????????UNUSED:?從未對該聯機日志寫入任何內容,一般為新增加聯機日志文件或是使用resetlog后的狀態

????????????CURRENT:當前重做日志文件,表示該重做日志文件為活動狀態,能夠被打開和關閉

????????????ACTIVE:處于活動狀態,不屬于當前日志,崩潰恢復需要該狀態,可用于塊恢復,可能歸檔,也可能未歸檔

????????????CLEARING:表示在執行alter?database?clear logfile命令后正將該日志重建為一個空日志,重建后狀態變為unused

????????????CLEARING_CURRENT:當前日志處于關閉線程的清除狀態。如日志某些故障或寫入新日志標頭時發生I/O錯誤

????????????INACTIVE:實例恢復不在需要聯機重做文件日志組,可能歸檔也可能未歸檔

???????????

????????V$LOGFILE中STATUS的狀態值

????????????INVALID?:表明該文件不可訪問

????????????STALE?:表明文件內容不完全

????????????DELETED?:?表明該文件不再使用

????????????NULL?:表明文件正在使用

?

四、演示

????--1.查看當前數據庫的日志

????????SQL>?SELECT?*?FROM?v$log;

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????5???52428800??????????1?NO??CURRENT????????????????2758062 19-JUL-10

?????????????????2??????????1??????????3???52428800??????????2 YES INACTIVE???????????????2695010 16-JUL-10

?????????????????3??????????1??????????4??104857600??????????2 YES INACTIVE???????????????2716552 18-JUL-10

?????????????????

?

????????SQL>?SELECT?*?FROM?v$logfile?ORDER?BY?group#;??

?

????????????GROUP# STATUS??TYPE????MEMBER??????????????????????????????????????????????????IS_

????????---------- ------- ------- ------------------------------------------------------- ---

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/orcl/redo01.log?????????????????NO

?????????????????2 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo02.log?????????????????NO

?????????????????2 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo2.log??????????????????NO

?????????????????3 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo03.log?????????????????NO

?????????????????3 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo3.log??????????????????NO??

?????????????????

????--2.添加日志組

????????SQL>?SELECT?*?FROM?v$logfile;

?

????????????GROUP# STATUS??TYPE????MEMBER??????????????????????????????????????????????????IS_

????????---------- ------- ------- ------------------------------------------------------- ---

?????????????????2 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo2.log??????????????????NO

?????????????????2 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo02.log?????????????????NO

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/orcl/redo01.log?????????????????NO

?????????????????3 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo3.log??????????????????NO

?????????????????3 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo03.log?????????????????NO

?????????????????4?????????ONLINE??/u01/app/oracle/oradata/orcl/redo4.log??????????????????NO

?????????????????4?????????ONLINE??/u01/app/oracle/oradata/orcl/redo04.log?????????????????NO

?????????????????

????--3.添加日志成員

????????SQL>?ALTER?DATABASE?ADD?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo1.log'?TO?GROUP?1;

?

????????Database?altered.

?

????????SQL>?SELECT?*?FROM?v$logfile?WHERE?group#?=?1?;

?

????????????GROUP# STATUS??TYPE????MEMBER??????????????????????????????????????????????????IS_

????????---------- ------- ------- ------------------------------------------------------- ---

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/orcl/redo01.log?????????????????NO

?????????????????1 INVALID ONLINE??/u01/app/oracle/oradata/orcl/redo1.log??????????????????NO

?????????????????

????--4.刪除日志成員

????????SQL>?ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo01.log';

????????ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo01.log'

????????*

????????ERROR at line 1:??--redo01.log處于NULL狀態且該日志組為current狀態不能刪除

????????ORA-00362:?member?is?required?to?form a valid logfile?in?group?1

????????ORA-01517:?log?member:?'/u01/app/oracle/oradata/orcl/redo01.log'

?

?

????????SQL>?ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo04.log';

?

????????Database?altered.

?

????????SQL>??ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo4.log';

?????????ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo4.log'

????????*

????????ERROR at line 1:???--最后一個日志成員不能被刪除

????????ORA-00361:?cannot remove last?log?member?/u01/app/oracle/oradata/orcl/redo4.log?for?group?4

?

????--5.日志切換

????????SQL>?SELECT?*?FROM?v$log;??--當前的日志組處于CURRENT狀態

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????5???52428800??????????2?NO??CURRENT????????????????2758062 19-JUL-10

?????????????????2??????????1??????????3???52428800??????????2 YES INACTIVE???????????????2695010 16-JUL-10

?????????????????3??????????1??????????4??104857600??????????2 YES INACTIVE???????????????2716552 18-JUL-10

?????????????????4??????????1??????????0???31457280??????????1 YES UNUSED???????????????????????0

?

????????SQL>?ALTER?SYSTEM SWITCH LOGFILE;??--進行日志切換

?

????????System altered.

?

????????SQL>?SELECT?*?FROM?v$log;????--原來的日志組4的unused狀態變為current狀態

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????5???52428800??????????2 YES ACTIVE?????????????????2758062 19-JUL-10

?????????????????2??????????1??????????3???52428800??????????2 YES INACTIVE???????????????2695010 16-JUL-10

?????????????????3??????????1??????????4??104857600??????????2 YES INACTIVE???????????????2716552 18-JUL-10

?????????????????4??????????1??????????6???31457280??????????1?NO??CURRENT????????????????2759277 19-JUL-10

?

????????SQL>?ALTER?SYSTEM SWITCH LOGFILE;???--再次進行日志切換

?

????????System altered.

?

????????SQL>?SELECT?*?FROM?v$log;??????????--日志組1變為current且組4變為active?狀態

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????5???52428800??????????2 YES ACTIVE?????????????????2758062 19-JUL-10

?????????????????2??????????1??????????7???52428800??????????2?NO??CURRENT????????????????2759293 19-JUL-10

?????????????????3??????????1??????????4??104857600??????????2 YES INACTIVE???????????????2716552 18-JUL-10

?????????????????4??????????1??????????6???31457280??????????1 YES ACTIVE?????????????????2759277 19-JUL-10???????

?

????由上可得知,在日志切換時對于unused組將優先作為下一組切換對象

????????--再次刪除redo01.log還是收到錯誤提示

????????SQL>?ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo01.log';

????????ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo01.log'

????????*

????????ERROR at line 1:

????????ORA-00362:?member?is?required?to?form a valid logfile?in?group?1

????????ORA-01517:?log?member:?'/u01/app/oracle/oradata/orcl/redo01.log'

?

????????SQL>?ALTER?SYSTEM SWITCH LOGFILE;??--再次進行日志切換

?

????????System altered.

?

????????SQL>?SELECT?*?FROM?v$log;??????????--group1變為inactive

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????5???52428800??????????2 YES INACTIVE???????????????2758062 19-JUL-10

?????????????????2??????????1??????????7???52428800??????????2 YES ACTIVE?????????????????2759293 19-JUL-10

?????????????????3??????????1??????????8??104857600??????????2?NO??CURRENT????????????????2759420 19-JUL-10

?????????????????4??????????1??????????6???31457280??????????1 YES INACTIVE???????????????2759277 19-JUL-10

?

????????--反復多切幾次日志之后redo01.log被成功刪除?????

????????SQL>??ALTER?DATABASE?DROP?LOGFILE MEMBER?'/u01/app/oracle/oradata/orcl/redo01.log';

?

????Database?altered.

?????????

????--6.刪除日志組(CURRENT和ACTIVE狀態的不能被刪除)

????????SQL>?SELECT?*?FROM?v$log;

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????9???52428800??????????1 YES ACTIVE?????????????????2759487 19-JUL-10

?????????????????2??????????1?????????11???52428800??????????2?NO??CURRENT????????????????2759502 19-JUL-10

?????????????????3??????????1??????????8??104857600??????????2 YES ACTIVE?????????????????2759420 19-JUL-10

?????????????????4??????????1?????????10???31457280??????????1 YES ACTIVE?????????????????2759499 19-JUL-10

?????????????????

????????SQL>?ALTER?DATABASE?DROP?LOGFILE?GROUP?4;

????????ALTER?DATABASE?DROP?LOGFILE?GROUP?4

????????*

????????ERROR at line 1:???--處于活動狀態的group4?用于災難恢復,不能被刪除

????????ORA-01624:?log?4 needed?for?crash recovery?of?instance orcl?(thread 1)

????????ORA-00312:?online?log?4 thread 1:?'/u01/app/oracle/oradata/orcl/redo4.log'

?

????????SQL>?ALTER?SYSTEM SWITCH LOGFILE;???--進行日志切換

?

????????System altered.

?

????????SQL>?/

?

????????System altered.

?

????????SQL>?SELECT?*?FROM?v$log;????--group 4的狀態變為inactvie

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1?????????13???52428800??????????1?NO??CURRENT????????????????2759720 19-JUL-10

?????????????????2??????????1?????????11???52428800??????????2 YES ACTIVE?????????????????2759502 19-JUL-10

?????????????????3??????????1?????????12??104857600??????????2 YES ACTIVE?????????????????2759718 19-JUL-10

?????????????????4??????????1?????????10???31457280??????????1 YES INACTIVE???????????????2759499 19-JUL-10

?

????????SQL>?ALTER?DATABASE?DROP?LOGFILE?GROUP?4;???--成功刪除group 4

?

????????Database?altered.

?

????????SQL>?ho ls?/u01/app/oracle/oradata/orcl/redo*

????????/u01/app/oracle/oradata/orcl/redo01.log??/u01/app/oracle/oradata/orcl/redo1.log

????????/u01/app/oracle/oradata/orcl/redo02.log??/u01/app/oracle/oradata/orcl/redo2.log

????????/u01/app/oracle/oradata/orcl/redo03.log??/u01/app/oracle/oradata/orcl/redo3.log

????????/u01/app/oracle/oradata/orcl/redo04.log??/u01/app/oracle/oradata/orcl/redo4.log

?

????????SQL>?ho rm?/u01/app/oracle/oradata/orcl/redo04.log???--刪除物理文件

?

????????SQL>?ho rm?/u01/app/oracle/oradata/orcl/redo4.log????--刪除物理文件

?

????--7.日志的重定位及重命名(僅演示ALTER DATABASE RENAME FILE?命令)

????????SQL>?SELECT?name,log_mode?FROM?v$database;

?

????????NAME??????LOG_MODE

????????--------- ------------

????????ORCL??????ARCHIVELOG

?

????????SQL>?SELECT?*?FROM?v$logfile?ORDER?BY?group#;

?

????????????GROUP# STATUS??TYPE????MEMBER??????????????????????????????????????????????????IS_

????????---------- ------- ------- ------------------------------------------------------- ---

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/orcl/redo01.log?????????????????NO

?????????????????2?????????ONLINE??/u01/app/oracle/oradata/orcl/redo02.log?????????????????NO

?????????????????2?????????ONLINE??/u01/app/oracle/oradata/orcl/redo2.log??????????????????NO

?????????????????3 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo03.log?????????????????NO

?????????????????3 STALE???ONLINE??/u01/app/oracle/oradata/orcl/redo3.log??????????????????NO

?

????????SQL>?ho cp?/u01/app/oracle/oradata/orcl/redo01.log?/u01/app/oracle/oradata/redo01.rdo??????

?

????????SQL>?ALTER?DATABASE?RENAME?FILE?'/u01/app/oracle/oradata/orcl/redo01.log'

??????????2????TO?'/u01/app/oracle/oradata/redo01.rdo';

?

????????Database?altered.

?

????????SQL>?SELECT?*?FROM?v$logfile?WHERE?group#?=?1;

?

????????????GROUP# STATUS??TYPE????MEMBER??????????????????????????????????????????????????IS_

????????---------- ------- ------- ------------------------------------------------------- ---

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/redo01.rdo??????????????????????NO

???????

?

????--8.清空日志文件組(只有非active?和非current狀態的組才能被清空)

????????SQL>?SELECT?*?FROM?v$log;

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1?????????13???52428800??????????1 YES ACTIVE?????????????????2759720 19-JUL-10

?????????????????2??????????1?????????14???52428800??????????2?NO??CURRENT????????????????2761383 19-JUL-10

?????????????????3??????????1?????????12??104857600??????????2 YES INACTIVE???????????????2759718 19-JUL-10

?????????????????

????????SQL>?ALTER?DATABASE?CLEAR LOGFILE?GROUP?1;

????????ALTER?DATABASE?CLEAR LOGFILE?GROUP?1

????????*

????????ERROR at line 1:?????--active?狀態不能被清空

????????ORA-01624:?log?1 needed?for?crash recovery?of?instance orcl?(thread 1)

????????ORA-00312:?online?log?1 thread 1:?'/u01/app/oracle/oradata/redo1.rdo'

?

????????SQL>??ALTER?DATABASE?CLEAR LOGFILE?GROUP?2;

?????????ALTER?DATABASE?CLEAR LOGFILE?GROUP?2

????????*

????????ERROR at line 1:????--current?狀態不能被清空

????????ORA-01624:?log?2 needed?for?crash recovery?of?instance orcl?(thread 1)

????????ORA-00312:?online?log?2 thread 1:?'/u01/app/oracle/oradata/orcl/redo2.log'

????????ORA-00312:?online?log?2 thread 1:?'/u01/app/oracle/oradata/orcl/redo02.log'

?

?

????????SQL>??ALTER?DATABASE?CLEAR LOGFILE?GROUP?3;

?

????????Database?altered.

?

?

????????SQL>?SELECT?*?FROM?v$log;???--group 3被清空后狀態變為unused

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1?????????13???52428800??????????1 YES INACTIVE???????????????2759720 19-JUL-10

?????????????????2??????????1?????????14???52428800??????????2?NO??CURRENT????????????????2761383 19-JUL-10

?????????????????3??????????1??????????0??104857600??????????2 YES UNUSED?????????????????2759718 19-JUL-10

?????????????

????--9.日志異常處理

????????--啟動時提示日志不一致

????????SQL>?startup

????????ORACLE instance started.

?

????????Total System Global Area??251658240 bytes

????????Fixed?Size??????????????????1218796 bytes

????????Variable?Size??????????????83887892 bytes

????????Database?Buffers??????????163577856 bytes

????????Redo Buffers????????????????2973696 bytes

????????Database?mounted.

????????ORA-00341:log?1?of?thread 1,wrong?log?#?in?header

????????ORA-00312:online?log?1 thread 1:'/u01/app/oracle/oradata/orcl/redo1a.rdo'??

????????ORA-00312:online?log?1 thread 1:'/u01/app/oracle/oradata/orcl/redo1b.rdo'

?

????????SQL>?ALTER?DATABASE?CLEAR LOGFILE?GROUP?1;

?

????????Database?altered.

?

????????SQL>?ALTER?DATABASE?OPEN;

?

????????Database?opened.

?

????????--日志文件丟失(非current狀態日志組)

????????SQL>?startup

????????ORACLE instance started.

?

????????Total System Global Area??251658240 bytes

????????Fixed?Size??????????????????1218796 bytes

????????Variable?Size??????????????88082196 bytes

????????Database?Buffers??????????159383552 bytes

????????Redo Buffers????????????????2973696 bytes

????????Database?mounted.

????????ORA-00313:?open?failed?for?members?of?log?group?1?of?thread 1

????????ORA-00312:?online?log?1 thread 1:?'/u01/app/oracle/oradata/orcl/redo1a.rdo'

????????ORA-00312:?online?log?1 thread 1:?'/u01/app/oracle/oradata/orcl/redo1b.rdo'

?

????????SQL>?ALTER?DATABASE?CLEAR LOGFILE?GROUP?1;

?

????????Database?altered.

?

????????SQL>?ALTER?DATABASE?OPEN;

?

????????Database?altered.

?

????????--日志文件丟失(current狀態日志組)

????????SQL>?startup

????????ORACLE instance started.

?

????????Total System Global Area??251658240 bytes

????????Fixed?Size??????????????????1218796 bytes

????????Variable?Size??????????????83887892 bytes

????????Database?Buffers??????????163577856 bytes

????????Redo Buffers????????????????2973696 bytes

????????Database?mounted.

????????ORA-00313:?open?failed?for?members?of?log?group?3?of?thread 1

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3a.rdo'

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3b.rdo'

?

????????--查看告警日志

????????SQL>?ho tail?-n 30?/u01/app/oracle/admin/orcl/bdump/alert_orcl.log

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3a.rdo'

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

????????Tue Jul 20 10:45:58 2010

????????Errors?in?file?/u01/app/oracle/admin/orcl/bdump/orcl_lgwr_4112.trc:

????????ORA-00313:?open?failed?for?members?of?log?group?3?of?thread 1

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3b.rdo'

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3a.rdo'

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

????????Tue Jul 20 10:45:58 2010

????????ARC0:?STARTING ARCH PROCESSES

????????Tue Jul 20 10:45:58 2010

????????ARC1:?Becoming the?'no FAL'?ARCH

????????ARC1:?Becoming the?'no SRL'?ARCH

????????Tue Jul 20 10:45:58 2010

????????ARC2:?Archival started

????????ARC0:?STARTING ARCH PROCESSES COMPLETE

????????ARC0:?Becoming the heartbeat ARCH

????????ARC2 started?with?pid=18,?OS id=4137

????????Tue Jul 20 10:45:58 2010

????????ORA-313 signalled during:?ALTER?DATABASE?OPEN...

???????

????????--查看物理日志文件是否存在

????????SQL>?ho ls?/u01/app/oracle/oradata/orcl/redo3a.rdo

????????ls:?/u01/app/oracle/oradata/orcl/redo3a.rdo:?No?such?file?or?directory

?

????????SQL>?ho ls?/u01/app/oracle/oradata/orcl/redo3b.rdo

????????ls:?/u01/app/oracle/oradata/orcl/redo3b.rdo:?No?such?file?or?directory

???????

--嘗試使用清空日志組命令

????????SQL>?ALTER?DATABASE?CLEAR LOGFILE?GROUP?3;

????????ALTER?DATABASE?CLEAR LOGFILE?GROUP?3

????????*

????????ERROR at line 1:???--系統處于非歸檔模式,且group 3狀態為CURRENT

????????ORA-00350:?log?3?of?instance orcl?(thread 1)?needs?to?be archived

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3a.rdo'

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3b.rdo'

?

????????--嘗試使用不歸檔清空日志

????????SQL>?ALTER?DATABASE?CLEAR UNARCHIVED LOGFILE?GROUP?3;

????????ALTER?DATABASE?CLEAR UNARCHIVED LOGFILE?GROUP?3

????????*

????????ERROR at line 1:??

????????ORA-00313:?open?failed?for?members?of?log?group?3?of?thread 1

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3b.rdo'

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

????????ORA-00312:?online?log?3 thread 1:?'/u01/app/oracle/oradata/orcl/redo3a.rdo'

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

?

????????--使用帶控制文件的介質恢復

????????SQL>?RECOVER?DATABASE?USING?BACKUP?CONTROLFILE;

????????ORA-00279:?change 2835232 generated at 07/20/2010 10:40:23 needed?for?thread 1

????????ORA-00289:?suggestion?:?/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2010_07_20/o1_mf_1_39_%u_.arc

????????ORA-00280:?change 2835232?for?thread 1?is?in?sequence #39

?

?

????????Specify?log:?{<RET>=suggested?|?filename?|?AUTO?|?CANCEL}

?

????????ORA-00308:?cannot?open?archived?log?'/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2010_07_20/o1_mf_1_39_%u_.arc'

????????ORA-27037:?unable?to?obtain?file?status

????????Linux Error:?2:?No?such?file?or?directory

????????Additional information:?3

?

????????--使用resetlogs選項打開數據庫

????????SQL>?ALTER?DATABASE?OPEN?RESETLOGS;

?

????????Database?altered.??????

?

????????SQL>?SELECT?*?FROM?v$log;???--系統重建group 3

?

????????????GROUP#????THREAD#??SEQUENCE#??????BYTES????MEMBERS ARC STATUS???????????FIRST_CHANGE# FIRST_TIM

????????---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

?????????????????1??????????1??????????2???31457280??????????2?NO??CURRENT????????????????2835234 20-JUL-10

?????????????????2??????????1??????????1???31457280??????????2 YES INACTIVE???????????????2835233 20-JUL-10

?????????????????3??????????1??????????0???31457280??????????2 YES UNUSED???????????????????????0??????????

?????????????????

????????SQL>?SELECT?*?FROM?v$logfile;???--為group 3增加了兩個成員redo3a.rdo?,redo3b.rdo??

?

????????????GROUP# STATUS??TYPE????MEMBER??????????????????????????????????????????????????IS_

????????---------- ------- ------- ------------------------------------------------------- ---

?????????????????2?????????ONLINE??/u01/app/oracle/oradata/orcl/redo2a.rdo?????????????????NO

?????????????????2?????????ONLINE??/u01/app/oracle/oradata/orcl/redo2b.rdo?????????????????NO

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/orcl/redo1a.rdo?????????????????NO

?????????????????3?????????ONLINE??/u01/app/oracle/oradata/orcl/redo3a.rdo?????????????????NO

?????????????????3?????????ONLINE??/u01/app/oracle/oradata/orcl/redo3b.rdo?????????????????NO

?????????????????1?????????ONLINE??/u01/app/oracle/oradata/orcl/redo1b.rdo?????????????????NO??????

?

????????對于CURRENT組的也可以使用隱藏參數來解決

????????步驟:

????????????alter?system?set?"_allow_resetlogs_corruption"?=?true scope?=?spfile;

???????????

????????????recover?database?using bakcup controlfile;

???????????

????????????alter?database?open?resetlogs;

???????????

????????????shutdown?immediate;

???????????

????????????startup mount;

???????????

????????????alter?database?open?resetlogs;

???????????

????????????alter?system reset "_allow_resetlogs_corruption" scope?=?spfile sid?=?'*'

???

????????對于歸檔模式下的日志文件丟失,同樣可以按上述步驟處理

轉:http://blog.csdn.net/leshami/article/details/5749556

轉載于:https://www.cnblogs.com/andy6/p/5728715.html

總結

以上是生活随笔為你收集整理的Oracle 联机重做日志文件(ONLINE LOG FILE)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。