歸檔日誌

kingsql發表於2016-11-14

log_archive_dest:指定歸檔檔案存放的路徑,該路徑只能是本地磁碟,預設為''。如果設定了log_archive_dest_n,就不能設定log_archive_dest,同樣的,如果設定了db_recovery_file_dest,也不能設定log_archive_dest;也就是說,設定了log_archive_dest,就不能設定log_archive_dest_n,也不能設定db_recovery_file_dest,不過可以設log_archive_duplex_dest,

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
 Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
SQL> show parameter db_recovery_file

NAME                                      TYPE                VALUE
------------------------------------ -----------       ---------------------------
db_recovery_file_dest            string              C:/oracle/product/10.2.0/flash_recovery_area
db_recovery_file_dest_size    big integer      8G

SQL> show parameter log_archive_dest_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string
log_archive_dest_9                   string
可以看到,我沒有設定log_archive_dest_n,只設定了db_recovery_file_dest;

SQL> alter system set log_archive_dest='C:/ARCHIVE';
alter system set log_archive_dest='C:/ARCHIVE'
*
第 1 行出現錯誤: 
ORA-02097: 無法修改引數, 因為指定的值無效
ORA-16018: 無法將 LOG_ARCHIVE_DEST 與 LOG_ARCHIVE_DEST_n 或DB_RECOVERY_FILE_DEST 一起使用

SQL> alter system set db_recovery_file_dest='';

系統已更改。

SQL> alter system set log_archive_dest='C:/ARCHIVE';

系統已更改。

SQL> alter system set log_archive_dest_1='C:/ARCHIVE1';
alter system set log_archive_dest_1='C:/ARCHIVE1'
*
第 1 行出現錯誤:
ORA-32017: 更新 SPFILE 時失敗
ORA-16179: 不允許使用 SPFILE 對 "log_archive_dest_1" 進行增量更改
log_archive_dest_n:預設值為''.ORACLE最多支援把日誌檔案歸檔到10g地方,n從1到10,歸檔地址可以為本地磁碟,或者網路裝置,如果設定了 log_archive_dest就不能設定log_archive_dest_n,但是如果設定了db_recovery_file_dest,也能夠設定log_archive_dest_n,預設的情況下歸檔日誌都是存放在db_recovery_file_dest目錄下,如果設定了log_archive_dest_n,那麼歸檔日誌就不會存放在db_recovery_file_dest,而是存放在log_archive_dest指定的目錄下

SQL> alter system set log_archive_dest='';

系統已更改。

SQL> archive log list
日誌模式            存檔模式
自動存檔             啟用
存檔終點            C:/ARCHIVE2
最早的聯機日誌序列     168
下一個存檔日誌序列   170
當前日誌序列           170
當前日誌序列           170       ----可以看到日誌切換之後 現在的日誌序列為170,

SQL> alter system set db_recovery_file_dest='C:/oracle/product/10.2.0/flash_recovery_area';

系統已更改。

SQL> alter system set log_archive_dest_1='location=C:/ARCHIVE1';

系統已更改。

SQL> alter system set log_archive_dest_2='location=C:/ARCHIVE2';

系統已更改。

SQL> ALTER SYSTEM SWITCH LOGFILE;

系統已更改。

SQL> select name from v$archived_log where recid >=170 ;---當設定了幾個log_archived_dest_就會從當前日誌號開始產生幾個相同的歸檔日誌

NAME
--------------------------------------------------------
C:/ARCHIVE1/ARC00170_0698319194.001     -----可以看到歸檔日誌沒有在db_recovery_file_dest中生成

C:/ARCHIVE2/ARC00170_0698319194.001    

總結一下:

1.如果資料庫設定了db_recovery_file_dest,就不能設定log_archive_dest,預設的歸檔日誌存放於db_recovery_file_dest中,如果設定了log_archive_dest_n,那麼歸檔日誌不再存放於db_recovery_file_dest中,而是存放於設定的log_archive_dest_n目錄中,如果想要歸檔日誌繼續存放在db_recovery_file_dest中,可以透過如下命令

alter system set log_archive_dest_2='location=USE_DB_RECOVERY_FILE_DEST';

2.log_archive_dest只能與 log_archive_duplex_dest共存,他們作用一樣。

3.還有一點就是,如果我們設定的log_archive_dest_n不正確,那麼ORACLE會在我們設定的上一級目錄歸檔,比如說我們設定log_archive_dest_1='location=C:/ARCHIVE1',如果 中沒有ARCHIVE1這個目錄,那麼ORACLE會在C盤歸檔,這個沒做 ,感興趣的可以做一做。

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

相關文章