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;