我們大家都知道在Oracle數據庫的實際開發環境與相關測試環境中,Oracle數據庫的實際日志模式與自動的Oracle歸檔模式,在一般的情況下是不設置的,主要目的是有利於系統應用的調整,也免的生成大量的歸檔日志文件將磁盤空間大量的消耗。
但在系統上線,成為生產環境時,將其設置為日志模式並自動歸檔就相當重要了,因為,這是保證系統的安全性,有效預防災難的重要措施。這樣,通過定時備份數據庫和在兩次備份間隔之間的日志文件,可以有效的恢復這段時間的任何時間點的數據,可以在很多時候挽回或最大可能的減少數據丟失。
雖然Oracle數據庫的日志模式和自動歸檔設置並不復雜,但其中的一些概念和操作過程還是容易混淆的,現在根據本人的經驗,分析介紹如下,所用環境為UNIX(HPUX,SOLARIES,AIX,TRU64UNIX)和Oracle8.
一要使OARCLE數據庫進行日志的自動歸檔
需要做兩方面的事情,一是數據庫日志模式的設置(database log mode,可為Archive Mode和No Archive Mode),另外就是自動Oracle歸檔模式設置(Automatic archival,可為Enabled和Disabled)。
二如何查看數據庫的現行日志和自動歸檔模式的設置:
可用archive log list命令來查看。
例如:
運行在日志自動Oracle歸檔模式下的數據庫系統查看結果如下(一般是生產環境)
- SVRMGR> archive log list
- Database log mode Archive Mode
- Automatic archival Enabled
- Archive destination/backup/archivelog
- Oldest online log sequence 2131
- Next log sequence to archive 2133
- Current log sequence 2133
沒有啟動數據庫日志模式和自動歸檔的數據庫系統查看結果如下(一般是測試環境)
- SVRMGR> archive log list
- Database log mode No Archive Mode
- Automatic archival Disabled
- Archive destination/u01/app/Oracle/product/8.0.5/dbs/arch
- Oldest online log sequence 194
- Current log sequence 196
三數據庫日志模式的設置
在創建數據庫時,可以在CREATE DATABASE 語句中指定數據庫的日志模式。假如沒有指明,則缺省為NOARCHIVELOG模式。由於如果在創建數據庫時指明是Archive Mode的話,會增加約20%的創建時間,而在以後啟動INSTANCE時再設置的話,一般只用去幾秒的時間,所以一般在創建數據庫時是不設置為ARCHIVE MODE的。
如要確定一系統數據庫的日志模式設置,除了(二)中的方法外也可以執行如下操作查看:
- SVRMGR> Select * from V$DATABASE
- NAME CREATEDLOG_MODE CHECKPOINT ARCHIVE_CH
- ---- ----------------- ------------ ---------- ----------
- ORCL 05/21/97 17:55:06 NOARCHIVELOG 172185 170808
將數據庫的日志模式設置切換(Archive Mode 和No Archive Mode之間的切換)的步驟和操作如下:
1. 關閉運行的數據庫實例
- SVRMGRL> shutdown
在進行日志模式切換之前,必須將運行的數據庫正常關閉。
2. 備份數據庫
該備份跟以後產生的日志一起用於將來的災難恢復(很重要,如要改為歸檔日志模式,沒有這個數據庫備份,僅有日志文件是無法從該時間點恢復的)。
3. 啟動數據庫實例到mount狀態,但不要打開。
- SVRMGRL> startup mount
注意:如果是使用OPS的話,請只打開一個數據庫實例進行Oracle歸檔模式切換操作。
4. 切換數據庫日志模式。
- SVRMGRL> alter database archivelog;
(設置數據庫為歸檔日志模式)
或
- SVRMGRL> alter database noarchivelog;
(設置數據庫為歸檔日志模式)
5. 打開數據庫
- SVRMGRL> alter database open;