Oracle登陆时提示ORA-00257错误

今天登陆Oracle时提示:ORA-00257: archiver error. Connect internal only, until freed

网上查了一下,是archivelog日志存满了导致的。

我们可以使用以下步骤来修复:

-- 登陆sqlplus
sqlplus sys as sysdba
-- 查看日志状态:第三条语句可以看到ARCHIVED LOG的占用比例
show parameter log_archive_dest;
archive log list;
select * from V$FLASH_RECOVERY_AREA_USAGE;
-- 查找日志的目录的配置大小:/home/data/oracle/flash_recovery_area
show parameter recover;
-- 日志目录:cd /home/data/oracle/flash_recovery_area/TEST/archivelog/

删除日志文件使用rman

-- 进入rman:connected to target database: TEST (DBID=2277543455)
rman target /
-- 检查无用的日志
crosscheck archivelog all;
-- 删除过期的日志
delete expired archivelog all;
-- 删除七天前的日志
delete archivelog until time 'sysdate-7';
-- 执行完成可以再到sqlplus查询日志占用比例
-- 重启
shutdown immediate
startup

我们可以修改日志文件容量大小配置,也可以设置一个定时任务用脚本来定时删除。

-- 大小修改
alter system set db_recovery_file_dest_size=10G scope=both;