1、問題現象:
本來想做一下分區表的實驗,結果用普通用戶登錄Oracle的時候出現了ORA-00257錯誤,但可以用sys用戶登錄。
- SQL> connect XXX/XXXX;
- ERROR:
- ORA-00257:archiver error.Connect internal only,until freed.
2、問題分析:
可以通過 ho oerr ora 00257 來查看錯誤的詳細信息,突然記起昨天晚上用rman做映像備份的時候也出錯了,後面就有事去了就沒有管了。從錯誤的字面大概可以瞭解到是沒有空間了,需要釋放。由於rman備份是放到flash_recovery_area 裏面的,且flash_recovery_area有大小的限制。
首先查一下 flash_recovery_area的大小吧。
- SQL> show parameter db_recovery
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- db_recovery_file_dest string /oracle/app/oracle/flash_recovery_area
- db_recovery_file_dest_size big integer 3852M
- SQL> !
- [oracle@node flash_recovery_area]$ cd /oracle/app/oracle/flash_recovery_area/
- [oracle@node flash_recovery_area]$ du -sh
- 3.8G .
或者查看 v$flash_recovery_area_usage動態表
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 9.72 0 9
BACKUP PIECE 41.8 .39 4
IMAGE COPY 48.4 0 4
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
從上面可以得出是由於flash_recovery_area目錄空間滿了。
3、解決辦法:
方法一:刪除歸檔日誌;
略
方法二:擴大 db_recovery_file_dest_size的有大小
alter system set db_recovery_file_dest_size=10g;