在oracle數據庫的開發(fā)環(huán)境和測試環(huán)境中,數據庫的日志模式和自動歸檔模式一般都是不設置的,這樣有利于系統應用的調整,也免的生成大量的歸檔日志文件將磁盤空間大量的消耗。但在系統上線,成為生產環(huán)境時,將其設置為日志模式并自動歸檔就相當重要了,因為,這是保證系統的安全性,有效預防災難的重要措施。這樣,通過定時備份數據庫和在兩次備份間隔之間的日志文件,可以有效的恢復這段時間的任何時間點的數據,可以在很多時候挽回或最大可能的減少數據丟失。雖然ORACLE數據庫的日志模式和自動歸檔設置并不復雜,但其中的一些概念和操作過程還是容易混淆的,現在根據本人的經驗,分析介紹如下,所用環(huán)境為UNIX(HPUX,SOLARIES,AIX,TRU64UNIX)和ORACLE8.
一要使OARCLE數據庫進行日志的自動歸檔,需要做兩方面的事情,一是數據庫日志模式的設置(database log mode,可為Archive Mode和No Archive Mode),另外就是自動歸檔模式設置(Automatic archival,可為Enabled和Disabled)。二如何查看數據庫的現行日志和自動歸檔模式的設置:
可用archive log list命令來查看。
例如:
運行在日志自動歸檔模式下的數據庫系統查看結果如下(一般是生產環(huán)境)
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
沒有啟動數據庫日志模式和自動歸檔的數據庫系統查看結果如下(一般是測試環(huán)境)
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
三數據庫日志模式的設置
在創(chuàng)建數據庫時,可以在CREATE DATABASE 語句中指定數據庫的日志模式。假如沒有指明,則缺省為NOARCHIVELOG模式。由于如果在創(chuàng)建數據庫時指明是Archive Mode的話,會增加約20%的創(chuàng)建時間,而在以后啟動INSTANCE時再設置的話,一般只用去幾秒的時間,所以一般在創(chuàng)建數據庫時是不設置為ARCHIVE MODE的。
如要確定一系統數據庫的日志模式設置,除了(二)中的方法外也可以執(zhí)行如下操作查看:
SVRMGR> Select * from V$DATABASE
NAME CREATED LOG_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狀態(tài),但不要打開。
SVRMGRL> startup mount
注意:如果是使用OPS的話,請只打開一個數據庫實例進行模式切換操作。
4. 切換數據庫日志模式。
SVRMGRL> alter database archivelog;(設置數據庫為歸檔日志模式)
或
SVRMGRL> alter database noarchivelog;(設置數據庫為歸檔日志模式)
5. 打開數據庫
SVRMGRL> alter database open;
#p#副標題#e#
6. 確認數據庫現在處于歸檔日志模式。
SVRMGRL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination for example: $ORACLE_HOME/dbs/arch
Oldest on-line log sequence 275
Next log sequence 277
Current log sequence 278
7. 將這個時間點的redo logs歸檔
SVRMGRL> archive log all;
8. 確認新產生的日志文件已在相應的歸檔目錄下面。
四自動歸檔模式設置(Automatic archival,可為Enabled和Disabled),在該模式下,數據庫啟動一個arch進程,專門負責將redo logs寫到系統歸檔設備的相應目錄下。
在數據庫的參數文件中設置參數(一般是在$ORACLE_HOME/dbs/init*.ora文件中):
LOG_ARCHIVE_START=
LOG_ARCHIVE_DEST=
LOG_ARCHIVE_FORMAT=
LOG_ARCHIVE_START:
如要求自動歸檔的話,則設為TRUE,如要求為非自動歸檔的話,則設為FALSE
LOG_ARCHIVE_DEST:
該參數設定了archive logs 歸檔存放的路徑.
LOG_ARCHIVE_FORMAT:
該參數設定了archive logs的命名格式. 例如,如將格式設為: arch%s.arc
log 文件將為: arch1.arc, arch2.arc, arch3.arc
這幾個參數設置只有在數據庫實例啟動前設置才能生效,如果在數據庫運行中進行設置,要使其生效,必須重起數據庫。
如果數據庫正在運行中,不能即刻重起,要設置其為自動歸檔模式,則做如下操作:
SVRMGRL> ALTER SYSTEM ARCHIVE LOG START;
如要設置其為非自動歸檔模式(取消自動歸檔),則:
SVRMGRL> ALTER SYSTEM ARCHIVE LOG STOP;
但如果數據庫重起后,給語句修改的結果就失效了,自動歸檔的設置還是按照系統參數文件中的LOG_ARCHIVE_START的值來設置。
五幾種設置情況:
(1) Database log mode Archive Mode
Automatic archival Enabled
這是在大部分生產環(huán)境中的ORACLE數據庫日志及歸檔模式設置,這種情況下,做好數據庫的定期備份(有熱備和冷備)和歸檔日志備份,可有效的將數據庫恢復到有歸檔日志的全部時間點。
(2) Database log mode Archive Mode
Automatic archival Disabled
這種情況下,數據庫不能自動歸檔,需要進行手工歸檔。如果所有在線日志都寫滿了,又沒有的及時進行手工歸檔的話,由于LGWR沒有可用的在線日志可寫,數據庫將會掛在這兒,只有進行手工歸檔后,有可用的在線日志后才能繼續(xù)。在生產環(huán)境中應該避免這種情況。
手工歸檔操作如下:
SVRMGRL> ALTER SYSTEM ARCHIVE LOG ALL;
數據庫將會把在線日志進行歸檔處理
(3) Database log mode NO Archive Mode
Automatic archival Enabled
有些相對欠缺經驗的管理員在進行設置時,只在數據庫參數文件中設置了LOG_ARCHIVE_START=TRUE,然后在數據庫起來后查看到ARCH歸檔進程已經起來了,可是盡管ORACLE已經作了幾次日志切換,但還是沒有歸檔日志,這時的設置就是這種情況,如果數據庫不是處在ARVHIVELOG模式,redolog 還是不會被歸檔。
(4) Database log mode NO Archive Mode
Automatic archival Disabled
這種設置是剛安裝的oracle數據庫的缺省設置,開發(fā)環(huán)境也大部分如此。即沒有進行歸檔。
關鍵詞標簽:ORACLE,數據庫
相關閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數據庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數據處理 Oracle刪除表的幾種方法