快樂的生活工作

下面指令,都請至該台DB SERVER cmd模式下執行

1.查看archive相關設定值

c:\>sqlplus / as sysdba
SQL> SHOW PARAMETER ARCH


NAME                                 TYPE        VALUE
---------------------------- -------- -------------------
.........(篇幅關係 上面還有,只取下面)
log_archive_dest_state_9     string   enable
log_archive_duplex_dest      string
log_archive_format           string   ARC%S_%R.%T
log_archive_local_first      boolean  TRUE
log_archive_max_processes    integer  2
log_archive_min_succeed_dest integer  1
log_archive_start            boolean  FALSE
log_archive_trace            integer  0
remote_archive_enable        string   true
standby_archive_dest         string   %ORACLE_HOME%\RDBMS
SQL>EXIT
 

 

  

2.查看寫入目錄路徑及目錄size限制
c:\>sqlplus / as sysdba
SQL> show parameter db_recovery

NAME                                           TYPE            VALUE
------------------------------------ --------------  ----------------------------------------
db_recovery_file_dest           string          D:\oracle\flash_recovery_area
db_recovery_file_dest_size  big integer 20G

上面的資訊表示  D:\oracle\flash_recovery_area\ 不能超過20G,
否則oracle會罷工的。

 

3.刪除archive log

1.執行下面指令,注意!!target 與 / 中間有空格
C:\>Rman target /          
RMAN> backup archivelog all delete input;

channel ORA_DISK_1: backup set complete, elapsed time: 00:29:36
channel ORA_DISK_1: deleting archive log(s)
archive log filename=D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00807_0618831482.001
recid=798 stamp=650904762
archive log filename=D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00808_0618831482.001
recid=799 stamp=650935209
..............
Finished backup at 02-MAY-08

RMAN>exit;

2.可能還會有另一份Archive log需刪除。
  查看 剛剛參數,一般預設如下
 
standby_archive_dest    string   %ORACLE_HOME%\RDBMS
  則
  檢查 D:\oracle\product\10.2.0\db_1\RDBMS\
  若還有ARC*.* 請自行刪除。

  

  補充:
    1.若是您手動到D:\oracle\flash_recovery_area\目錄
       刪除archive log,手動刪除的,
      就算執行了backup archivelog all delete input;
      因為元配不在,
      副的(D:\oracle\product\10.2.0\db_1\RDBMS\arc*.*)
      
也不會刪,

      以後請勿直接去os刪archive。
      直接執行下面指令,即可一併刪除。
      backup archivelog all delete input;
     

    2.使用backup archivelog all delete input; 仍不行?
      有可能磁碟容量大爆滿,rman要備份後刪除也不行
      可以改用下面的指令:
        C:\>Rman target /
        RMAN>delete force noprompt archivelog until time 'sysdate - 5';
        RMAN>exit;

      完成
     

    3.要是您無法使用EM的自動備份後刪除archivelog?

      同事傳授的方法:(使用rman的run script作法)

3.1 產生一bat如下:

          rman target=/ cmdfile=c:\rman.txt 

3.2 產生c:\rman.txt內容如下:(每次都只保留5天內的archive log)
         delete force archivelog until time 'sysdate - 5';
         exit;

3.3 最後把bat放到排程,每天執行一次。

4.大絕招增加空間(因為後來還是有遇到上面的方法都不行的)
     到db console 用 sqlplus / as sysdba登入 執行下面指令 增大空間到100g
     (每個人空間不一樣請自行更正) 

SQL> ALTER SYSTEM SET db_recovery_file_dest_size=100g scope=both;

SQL> shutdown immediate;

SQL> startup;

其實到補充3應該就要能可以了,原因是flash_recovery_area目錄下不只擺archive log 檔案還有backupfile目錄(備份檔案)。

一直以來遇到這類問題大家的焦點都擺在怎麼清除archive 其實若有定期做排程備份也是一個佔空間的原因,下次有時間在找出指令刪除備份檔


參考網站:
http://www.starblog.com.tw/post/2/6247
http://ss64.com/ora/rman.html     <--非常棒的網頁,有Syntax 介紹

創作者介紹
創作者 味味A 的頭像
味味A

味味A

味味A 發表在 痞客邦 留言(4) 人氣()


留言列表 (4)

發表留言
  • 何裕莒/小何
  • 謝謝你!

    才裝oracle 不到一個月,就遇到Archival Error ,在這邊找到解答,真是高興,謝謝你了.....

    小何 2010/01/21
  • 不客氣

    味味A 於 2010/01/22 10:34 回覆

  • kk
  • 謝謝您的分享
  • 錢錢
  • 請問archivelog是 redo的backup嗎??
  • freetoad
  • redo log file是每當資料庫資料有異動時由Oracle instance中的LGWR將記憶體中的 redo log buffer寫入的,redo log 預設三組,每個log size都比較小且是循環使用的。就是說一個redo log file(group) 寫滿後,才寫下一個。
    歸檔日誌archive log是database在archive mode時(預設無),一個redo log file(group)寫滿後,由ARCn將redo log備份到歸檔日誌文件下,然後這個redo log file(group)才能被下一次使用。
    不管database是否在archive mode,redo log預設會寫入的。