將資料庫修改為歸檔模式

與刃爭鋒發表於2013-12-26
資料庫如果不是處於歸檔日誌執行模式,基本上也就離完犢子不遠了.

檢視歸檔狀態(目前為非歸檔)
sql>select log_mode from v$database;

LOG_MODE

-------------------
NOARCHIVELOG

sql>archive log list
------------------------------------------------- 
Database log mode   No Archive Mode
Automatic archival     Disabled
Archive destination    USE_DB_RECOVERY_FILE_DEST
------------------------------------------------- 

sql>select * from v$archive_processes;
------------------------------------------------- 
PROCESS STATUS    LOG_SEQUENCE STAT
-------------------------------------------------
         0 STOPPED               0 IDLE
         1 STOPPED               0 IDLE
   ……
-------------------------------------------------

修改為歸檔模式.首先要關閉資料庫,啟動到mount狀態.
sql>shutdown immediate
sql>startup mount

修改為歸檔模式
sql>alter database archivelog;

--(oracle 9i還要設定log_archive_start 這是個靜態引數,oracle10g則不用設定了.sql>alter system set log_archive_start=true scope=spfile;)

驗證修改結果
sql>select log_modefrom v$database;
LOG_MODE
---------------------
ARCHIVELOG

開啟資料庫
sql>alter database open;

設定歸檔格式

log_archive_format是設定歸檔命名規則的靜態引數,設定後重啟資料庫才生效.對log_archive_dest和log_archive_dest_n指定的歸檔有效.

常用引數如下
%s:包含日誌序列號作為檔名的一部分.
%t:包含執行緒號作為檔名的一部分.
%r:包含重置日誌ID可確保歸檔日誌檔名是唯一的,甚至在使用某些高階恢復技術重置了日誌序列號之後也是如此.
%d:包含資料庫ID作為檔名的一部分.

resetlogs防止恢復的時候會報錯,歸檔預設副檔名是dbf,習慣設定成arc.


!格式必須包含%s,%t和%r. 

%d是可選的,但多個資料庫共享一個歸檔日誌目錄,則必須包含這個萬用字元.

例如:_%t_%s_%r.arc

sql>select name from v$database;
NAME
--------
BOB

sql>alter system set log_archive_format='bob_%t_%s_%r.arc' scope=spfile;


重啟資料庫才生效.

sql>archive log list
-------------------------------------------------------- 
Databaselog mode           Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
-------------------------------------------------------- 
sql>altersystem switch logfile;

archive變成Enabled,我們沒有設定歸檔目的地,預設USE_DB_RECOVERY_FILE_DEST使用DB_RECOVERY_FILE_DEST目錄,也就是我們常說的閃回目錄.

切換日誌
sql>alter system archive log current; 
sql>alter system switch logfile; 

檢視歸檔程式,開啟了2個歸檔程式
sql>select * from v$archive_processes;
--------------------------------------------------------------
PROCESS STATUS     LOG_SEQUENCE STAT
--------------------------------------------------------------
         0 ACTIVE                0 IDLE
         1 ACTIVE                0 IDLE
         2 STOPPED               0 IDLE
 ...

10版本的archivelog stop/start及alter system archive log stop/start命令已經不用了,只要在歸檔模式下就是自動歸檔模式.

設定歸檔目錄
預設的歸檔目錄(Archive destination)是:USE_DB_RECOVERY_FILE_DEST,如果取消DB_RECOVERY_FILE_DEST引數的設定,就會找standby_archive_dest引數,預設是'?/dbs/arch'但是沒有真實目錄存在,所以雖然能開啟歸檔但是不能實現歸檔.

先將此引數log_archive_dest設為空,然後再指定新的歸檔路徑.
sql>alter system set log_archive_dest=''scope=spfile;

比如要配置兩個歸檔路徑: 
sql>alter system set log_archive_dest_1='location=D:\oracle\archivelog1 reopen=500';
sql>alter system set log_archive_dest_2='location=D:\oracle\archivelog2 reopen=500';
(一旦設定多個歸檔目錄,用archive log list;顯示出的資訊歸檔路徑就是log_archive_dest_n中n的最大值.)


設定歸檔日誌檔名稱
sql>alter system set log_archive_format='bob_%t_%s_%r.arc' scope=spfile;

重啟資料庫例項後,所有設定生效

再看下新生成的歸檔日誌

sql>select * from v$archived_log;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25025926/viewspace-1064463/,如需轉載,請註明出處,否則將追究法律責任。

相關文章