關於 Oracle 歸檔日誌
歸檔日誌(Archive Log)是非活動的重做記錄備份.通過使用歸檔日誌,可以保留所有重做記錄,當資料庫處於ARCHIVELOG模式並進行日誌切換式,後台進程ARCH會將重做日誌的內容儲存到歸檔日誌中.當資料庫出現介質失敗時,使用資料檔案備份,歸檔日誌和重做日誌可以完全恢複資料庫.
1.查看當前資料庫是否處于歸檔模式:
select name,log_mode from v$database;
archive log list;
2.改變非歸檔模式到歸檔模式:
conn / as sysdba --(以DBA身份串連資料庫)
shutdown immediate; --(立即關閉資料庫)
startup mount; --(啟動執行個體並載入資料庫,但不開啟) 啟動資料庫到mount狀態
alter database archivelog; --(更改資料庫為歸檔模式)
alter database open; --(開啟資料庫)
alter system archive log start; --(啟用自動歸檔)
exit --(退出)
3.改變歸檔模式到非歸檔模式:
1)SQL>SHUTDOWN NORMAL/IMMEDIATE;
2)SQL>STARTUP MOUNT;
3)SQL>ALTER DATABASE NOARCHIVELOG;
4)SQL>ALTER DATABASE OPEN;
4.啟用自動歸檔: LOG_ARCHIVE_START=TRUE
歸檔模式下,記錄檔組不允許被覆蓋(重寫),當記錄檔寫滿之後,如果沒有進行手動歸檔,那麼系統將掛起,直到歸檔完成為止.
這時只能讀而不能寫.
運行過程中關閉和重啟歸檔日誌進程
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START
5.手動歸檔: LOG_ARCHIVE_START=FALSE
歸檔當前記錄檔
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
歸檔序號為052的記錄檔
SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
歸檔所有記錄檔
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
改變歸檔日誌目標
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';
6.歸檔日誌操作
select group#,sequence#,bytes/1024/1024 byte_mb,members,status from v$log;--查看組號,每組檔案數(成員數),檔案大小和狀態
SELECT group#,member FROM v$logfile;--查看組號和檔案位置
ALTER DATABASE ADD LOGFILE GROUP 2 ('E:\APP\DELL\ORADATA\SRITSUB\REDO02.LOG') SIZE 100M;--添加日誌組並指定檔案位置和大小
alter database add logfile member 'D:\Oracle\PRODUCT\10.2.0\ORADATA\TEST\redo0401.log' to group 4;--添加日誌成員
ALTER SYSTEM SWITCH LOGFILE;--切換日誌組
ALTER SYSTEM CHECKPOINT;--改變檢查點
ALTER DATABASE DROP LOGFILE GROUP 2;--刪除日誌組
alter database drop logfile member 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\redo0401.log';--刪除日誌成員
7.oracle重做日誌組的三種狀態:current,active,inactive
current:表示該日誌組為當前日誌組,oracle正在使用該日誌組;
active:當current redo組發生日誌切換時,狀態會改變為active,在這個狀態下,如果資料庫
為歸檔模式,archive進程會歸檔active日誌組;
如果發生資料庫crash,該日誌組也是執行個體恢複必需的日誌組;
inactive:當active日誌組歸檔完畢並且oracle判斷不需要進行執行個體恢複時,會將其狀態修改為inactive,等待下一輪的使用;
所以當日誌組為inactive的時候,如果資料庫為歸檔模式.那麼日誌肯定是歸檔完成了。