ORA-00257 (線上更改歸檔路徑,刪除歸檔日誌)

lhb_immortal發表於2011-10-12

 


10G,11G中,歸檔模式開啟後,預設的歸檔路徑是閃回區(db_recovery_file_dest)。因為閃回區,預設只有4G的儲存空間。對於業務量大的資料庫,log_archive_dest設定在這裡顯然是不合適的。因為閃回區很容易被歸檔日誌佔滿。導致 ORA-00257 錯誤。

因此,建立好資料庫後,可以考慮兩種方法來解決這個問題:

1). 增加閃回區大小 。

2). 更改歸檔路徑。

1. 增加歸檔日誌儲存空間
        alter system set DB_RECOVERY_FILE_DEST_SIZE=10g;
2. 刪除歸檔日誌
     

        RMAN>delete noprompt archivelog all;    (刪除所有歸檔日誌)

        RMAN> delete expired archivelog all;      (刪除過期歸檔日誌,先crosscheck archivelog all)

        RMAN>delete archivelog all complete before 'sysdate-7'; (保留7天歸檔)

       RMAN>

3. 更改歸檔日誌的儲存路徑
   3.1 檢視歸檔日誌儲存路徑設定
       SQL> show parameter log_archive_dest_1
 
                NAME                                 TYPE        VALUE
                ------------------------------------ ----------- ------------------------------
                log_archive_dest_1                   string     
                log_archive_dest_10                  string     
                log_archive_dest_11                  string     
                log_archive_dest_12                  string     
                log_archive_dest_13                  string     
                log_archive_dest_14                  string     
                log_archive_dest_15                  string     
                log_archive_dest_16                  string     
                log_archive_dest_17                  string     
                log_archive_dest_18                  string     
                log_archive_dest_19                  string     

           通過以上命令我們看到,log_archive_dest_1 的值是空,這說明,該設定使用的預設值,預設儲存位置位於閃回區。
           這裡需要注意的是,更改歸檔日誌的儲存路徑不是更改log_archive_dest 的值,而是更改log_archive_dest_1的值。

     3.2    執行更改命令

            
                SQL> ALTER SYSTEM SET log_archive_dest_1 = 'location=D:/';
 
                System altered
 
                SQL> show parameter log_archive_dest_1
 
                NAME                                 TYPE        VALUE
                ------------------------------------ ----------- ------------------------------
                log_archive_dest_1                   string      location=D:/
                log_archive_dest_10                  string     
                log_archive_dest_11                  string     
                log_archive_dest_12                  string     
                log_archive_dest_13                  string     
                log_archive_dest_14                  string     
                log_archive_dest_15                  string     
                log_archive_dest_16                  string     
                log_archive_dest_17                  string     
                log_archive_dest_18                  string     
                log_archive_dest_19                  string 

                修改後,歸檔日誌的儲存路徑就會存儲存在D:/ 下,注意,該路徑必須存在。
                如果要改為預設值怎麼辦?把value的值變為空就好了。

                alter system set log_archive_dest_1 = '';

                如下:
                SQL> alter system set log_archive_dest_1 = '';
 
                System altered
 
                SQL> show parameter log_archive_dest_1
 
                NAME                                 TYPE        VALUE
                ------------------------------------ ----------- ------------------------------
                log_archive_dest_1                   string     
                log_archive_dest_10                  string     
                log_archive_dest_11                  string     
                log_archive_dest_12                  string     
                log_archive_dest_13                  string     
                log_archive_dest_14                  string     
                log_archive_dest_15                  string     
                log_archive_dest_16                  string     
                log_archive_dest_17                  string     
                log_archive_dest_18                  string     
                log_archive_dest_19                  string     

                恢復預設的儲存必須使用引號,引號內為空。如果通過location來指定空值會報錯:

                SQL> alter system set log_archive_dest_1='location=';
                alter system set log_archive_dest_1='location='
                *
                第 1 行出現錯誤:
                ORA-32017: 更新 SPFILE 時失敗
                ORA-16179: 不允許使用 SPFILE 對 "log_archive_dest_1" 進行增量更改

-----------------------------------------------    The End   ---------------------------------------------

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

相關文章