报错如下:
查看日志,导致异常连接的问题是归档日志满导致的
解决方案:
1、可以进入rman
使用rman删除归档
su - oracle
export ORACLE_SID=orcl
rman target /
crosscheck ARCHIVELOG all;
deletenopromptexpiredarchivelogall;
deletenopromptarchivelogall completedbefore'sysdate - 7';
查看归档使用率,和大小
进入sqlplus:
show parameter recovery
如果要增大归档目录:
alter system set db_recovery_file_dest_size =100G;
查看归档使用率:
select *from V$RECOVERY_AREA_USAGE;
这时我们需要部署定时删除归档脚本
vi del.archivelog.sh
#!/bin/bash
source~/.bash_profile
#记录归档删除的日志
exec>>/home/del_log/log/bak_log/del_arch`date +%F-%H`.log
$ORACLE_HOME/bin/rman target / <
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time'sysdate-7';
exit;
EOF
添加定时任务
crontab -e
00* * */home/del_log/log/del.archivelog.sh2>&1>/dev/null&
2、无法进入sqlplus和rman
1、物理删除归档
先确认归档路径,直接物理删除归档
2、停止监听
lsnrctl stop
3、强制关库
因为此时已经无法SQLPLUS登录了,选择强制关库。
ps-ef|grep ora_dbw0_$ORACLE_SID
kill -9 PID
4、修改参数文件重新启动数据库
sqlplus / as sysdba
create pfile='/tmp/pfile.ora' from spfile;
将快速恢复区修改大一点启动库,原来20,修改到40G。
vi /tmp/pfile.ora
*.db_recovery_file_dest_size=40960m
重新启动数据库:
sqlplus / as sysdba
startup pfile='/tmp/pfile.ora';
create spfile from pfile;
5、 RMAN删除归档
rman target /
crosscheck ARCHIVELOG all;
deletenopromptexpiredarchivelogall;
deletenopromptarchivelogall completedbefore'sysdate - 7';
欢迎关注公众号《小周的数据库进阶之路》,更多精彩知识和干货尽在其中。
标签:log,pfile,数据库,sqlplus,del,归档,Oracle,rman From: https://blog.csdn.net/qq_36936192/article/details/145320377