今天登入Oracle又遇到了ORA-16020: less destinations available than specified by LOG_ARCHIVE_MIN_SUCCEED_DEST這個問題,具體解決如下:
1. 用sys使用者登入
sql>sys/sys as sysdba
2. 看看archiv log所在位置
SQL> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_10 string
log_archive_dest_state_1 string
log_archive_dest_state_2 string
3. 一般VALUE為空白時,可以用archive log list;檢查一下歸檔目錄和log sequence
4. 檢查flash recovery area的使用方式,可以看見archivelog已經很大了,達到96.62
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
註:V$FLASH_RECOVERY_AREA_USAGE必須是10.2以上的版本才有此視圖,低於此版本的這是select提示該視圖或表不存在,因為我現在用的版本是9i的所有無法顯示。
5. 計算flash recovery area已經佔用的空間
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
如果在第四中你的oracle能正常執行該語句,那麼你可以接著進行第五步操作,反之則就直接跳過第五步。
6. 找到recovery目錄, show parameter recover
SQL> show parameter recover;
recovery_parallelism integer 0
也是是因為版本太低,所有查詢結果沒有顯示歸檔位置用的值和存放的位置
7.根據我的oracle的情況,我試著執行了下alter database clear unarchived logfile group 1
SQL> alter database clear unarchived logfile group 1;
alter database open;
執行到這一步,我的問題解決了,原來是因為資料庫裡有不能歸檔的日誌,也許對這個錯誤還有別的解決方案,所以以上我只是針對我遇到的情況來進行描述。