1、问题现象:

本来想做一下分区表的实验,结果用普通用户登录Oracle的时候出现了ORA-00257错误,但可以用sys用户登录。

 
  1. SQL> connect XXX/XXXX;  
  2. ERROR:  
  3. 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的大小吧。

 

 
  1. SQL> show parameter db_recovery  
  2.  
  3. NAME                                 TYPE        VALUE  
  4.  
  5. ------------------------------------ ----------- ------------------------------  
  6.  
  7. db_recovery_file_dest                string      /oracle/app/oracle/flash_recovery_area  
  8.  
  9. db_recovery_file_dest_size          big integer 3852M  
  10.  
  11. SQL> !  
  12.  
  13. [oracle@node flash_recovery_area]$ cd /oracle/app/oracle/flash_recovery_area/  
  14.  
  15. [oracle@node flash_recovery_area]$ du -sh  
  16.  
  17. 3.8G    .  
  18.  

或者查看 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;