ORA-00257: archiver error. Connect internal only, until freed
默认的恢复区包含了如下内容,如果产生归档日志满等情况,需要重新设置恢复区大小。
CONTROL FILE REDO LOG ARCHIVED LOG BACKUP PIECE IMAGE COPY FLASHBACK LOG FOREIGN ARCHIVED LOG
如果数据已经被停止可重新拉起,在mount状态下修改
$ sqlplus / as sysdba SQL> startup nomount; SQL> alter database mount;
恢复区使用和分配情况
查询闪回配置路径和大小
SQL> show parameter recover;
查询闪回区使用占比
SQL> col FILE_TYPE for a25 SQL> select * from v$flash_recovery_area_usage;
查询闪回区位置、分配和使用
SQL> col name for a30 SQL> set line 100 SQL> select name,space_limit/1024/1024/1024,space_used/1024/1024/1024,number_of_files from v$recovery_file_dest;
修改恢复区大小和位置
修改恢复区大小,如果只是设置问题,磁盘空间充足可以直接增大配置
SQL> alter system set db_recovery_file_dest_size=50G scope=both;
如果是无法在当前空间扩充,删除当前的恢复区,重新设置。
SQL>alter system set db_recovery_file_dest='/u01/backup/newflasharea';
清除归档日志释放空间
如果是空间有限想清除不在使用的日志,使用CROSSCHECK和DELETE OBSOLETE指令删除不需要的文件,或者使用DELETE EXPIRED 指令删除那些不需要的备份文件。或者使用RMAN的BACKUP RECOVERY AREA指令将恢复区中的文件复制到磁带中。
$ rman target /
切换到rman命令后检查归档日志是否失效:
RMAN> crosscheck archivelog all;
删除失效归档日志,即删除物理文件已丢失但记录在rman中的归档日志
-- 删除过期的归档日志 RMAN> delete expired archivelog all; -- 删除指定日期前的归档日志 RMAN> delete archivelog until time 'sysdate-30';