oracle ORA-00257异常处理及定时清理归档日志

ORA-00257: archiver error. Connect internal only, until freed

数据库出现以上报错,为归档日志满了,需要删除归档日志:

1.查看日志占用空间

…>sqlplus / as sysdba

select * from V$FLASH_RECOVERY_AREA_USAGE;

其他信息查询语句:

select * from v$recovery_file_dest;  --查看归档日志的存放地址和实际大小;

select count(*) from v$archived_log where archived='YES' and deleted='NO'; --文件数

2.删除日志

通过rman删除,打开cmd命令窗口执行以下语句:

…>rman target sys/pass

检查一些无用的archivelog

RMAN> crosscheck archivelog all;

删除截止到前7天的所有archivelog

RMAN> delete archivelog until time 'sysdate-7' ;

RMAN> 是否确定要删除以上对象 (输入 YES NO)? yes

删除后再查询占用空间:

 3.修改归档日志大小

…>sqlplus / as sysdba

(1)查看归档日志大小:

SQL>show parameter recovery

(2)修改归档日志大小:

SQL>alter system set db_recovery_file_dest_size=32G scope=spfile;

(3)重启数据库,查看大小

SQL> shutdown immediate

SQL> startup

SQL> show parameter recovery

如果要修改目录,执行以下语句:

SQL> alter system set db_recovery_file_dest='/u01/app/oracle/archivelog' scope=spfile;

4.设置定时任务删除归档日志

(1)创建del_archivelog.txt

connect target  /
run{
    crosscheck archivelog all;
    DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-5';
    delete expired archivelog all;
}

(2)创建del_archivelog.bat

@echo off
set "filename=del_archivelog_task_log_%date:~0,4%%date:~5,2%%date:~8,2%.txt"
(
echo.
echo =========================  正在清除过期归档文件,请稍等...... %date% %time%  =========================
echo.
rman cmdfile=F:\app\删除归档日志脚本\del_archivelog.txt
echo.
echo =========================              【结束清理 %date% %time%】                  =========================
echo.
)>>F:\app\删除归档日志脚本\%filename% 2>&1<nul
pause

(3)创建定时任务

 

 

 

 

参考资料:

Oracle【ORA-00257错误】解决办法及归档模式切换总结整理 - Szfei - 好记性不如烂博客 - 博客园

Oracle Windows/Linux定期清理归档日志_幻星☞飞的博客-CSDN博客

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值