归档日志满导致数据库挂起故障处理
来源:互联网 发布:显示二维码的数据 编辑:程序博客网 时间:2024/06/11 18:48
归档日志满导致的数据库挂起故障处理
当数据库运行在归档模式时,如果没有做好备份策略或归档文件和备份文件放到同一个逻辑区,则偶尔会遇到归档日志满导致系统挂起事故。在这样情况下,重启数据库不仅没有用而且将问题更复杂化(记得重启后在HA模式下的共享存储也不见了,进行了手工mount后进行手工删除部分归档日志)。
根据实际环境有不同处理方法,如下是比较通用的处理过程:
1、查看数据库日志文件(alert_log)
2、查看用于归档日志或备份的磁盘空间
3、删除归档日志物理文件,归档日志一般都是位于目录下
4、把归档日志的物理文件删除后,Oracle就可以恢复正常了,但是还没完全把归档日志删除干净。登录Rman,执行如下 两条命令:
crosscheck archivelog all;
delete noprompt expired archivelog all;
本人也经历了几次,虽然当时没有做记录,现在觉得还是有必要进行总结分享。
当数据库运行在归档模式时,如果没有做好备份策略或归档文件和备份文件放到同一个逻辑区,则偶尔会遇到归档日志满导致系统挂起事故。在这样情况下,重启数据库不仅没有用而且将问题更复杂化(记得重启后在HA模式下的共享存储也不见了,进行了手工mount后进行手工删除部分归档日志)。
根据实际环境有不同处理方法,如下是比较通用的处理过程:
1、查看数据库日志文件(alert_log)
2、查看用于归档日志或备份的磁盘空间
3、删除归档日志物理文件,归档日志一般都是位于目录下
4、把归档日志的物理文件删除后,Oracle就可以恢复正常了,但是还没完全把归档日志删除干净。登录Rman,执行如下 两条命令:
crosscheck archivelog all;
delete noprompt expired archivelog all;
本人也经历了几次,虽然当时没有做记录,现在觉得还是有必要进行总结分享。
1、查看数据库日志文件(alert_sid.log)
查看日志文件最后100行记录:$tail -100lf alert_sid.log
2、查看用于归档日志或备份的磁盘空间
在Linux或Unix下可以通过查看空间使用情况: $df -h
如果使用Oracle ASM存储技术,则通过如下命令查看:
$export ORACLE_SID=+ASM1
$asmcmd
ASMCMD> lsdg
3、删除归档日志物理文件,归档日志一般都是位于归档目录下
删除归档日志既可以手工删除,也可以通过RMAN来删除。如果采用手工删除则需要进行本文第4步骤来清理控制文件内容。
在文件系统管理模式下手工删除方法:
$ls -lrt --该命令按时间升序显示文件
$rm filename --filename为要删除的文件名
在ASM管理模式下手工删除方法:
ASMCMD> cd archivelog
ASMCMD> ls
2011_10_05/
2011_10_06/
ASMCMD> cd 2011_10_05
ASMCMD> ls -lrt ----该命令按时间升序显示文件
ASMCMD> rm filename --filename为要删除的文件名
4、把归档日志的物理文件删除后,Oracle就可以恢复正常了,但是还没完全把归档日志删除干净。登录Rman,执行如下 两条命令:
RMAN> crosscheck archivelog all;
RMAN> delete noprompt expired archivelog all;
通过如上处理过程,可以让系统运行恢复正常。但是通过这个方式后清理出来空间肯能并不是很大。在一般情况先如果采用RMAN备份方案,则建议将执行如下几行Rman命令,这样可能清理因备份不安计划执行等原因造成一些过期或重复的备份文件;
RMAN> crosscheck backup;
RMAN> delete noprompt expired backup;
RMAN> delete noprompt obsolete;
RMAN> resync catalog;
最终还要总结其他两种情况:
删除某几天前所有归档日志的方法
当出现应急情况下,如果对数据库备份方案熟悉,则通过如下Rman命令也可以删除某几天之前的所有归档日志。删除7天前所有归档日志:
RMAN>run{
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';
}
RMAN>crosscheck archivelog all;
RMAN>delete noprompt expired archivelog all;
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /archivelog -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
RMAN>crosscheck archivelog all;
RMAN>delete expired archivelog all;
db_recovery_file_dest_size 参数
从Oracle10g开始,db_recovery_file_dest_size参数一般用来存放归档日志(archivelog)和rman的备份集(backupset),默认值一般为2G,当备份和归档日志超过该参数是也会出现ORA-19815错误。解决办法就是增大db_recovery_file_dest_size 的参数值:
SQL> show parameter db_recovery_file_dest_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 2G
SQL> alter system set db_recovery_file_dest_size=4G;
系统已更改。
SQL> show parameter db_recovery_file_dest_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 4G
SQL>
通过以上街上Rman命令删除不必要的数据并同步控制文件或catalog库内容。
- 归档日志满导致数据库挂起故障处理
- 归档日志卷空间不足导致数据库故障解决方法
- 一次因为归档日志写满磁盘导致的数据库异常以及恢复处理过程
- oracle dataguard 主库归档日志缺失,导致主备库不一致故障处理
- Oracle latch:library cache 导致 数据库挂起 故障
- (二)数据库故障处理的案例-处理归档不能执行
- 归档日志满导致插入数据失败.
- 数据库故障处理的案例-归档目录空间满(一)
- oralce10g 归档目录空间满导致归在线重做日志文件无法归档。最后数据库不能正常使用
- 关于归档日志空间被占满而导致数据库down掉的问题
- oracle 日志文件无法归档导致的数据库无法启动
- 归档空间满后,挂起,只能重启数据库?
- java日志丢失故障处理导致的死锁问题
- oracle归档日志满的处理方法!
- oracle归档日志满的处理
- oracle归档日志满了处理方式
- ORA-00257归档满故障的处理过程
- ORA-03113: end-of-file on communication channel ORA-00257: archiver error. Connect 归档日志满导致数据库没有办法启动
- PMP考试六大管理学定律
- boa服务器移植使用
- Android 文件下载
- Lua中的操作系统库
- pat1010
- 归档日志满导致数据库挂起故障处理
- (10) Linux ----- 使用pscp实现Windows 和 Linux服务器间远程拷贝文件
- 关于chrome插件开发(二)
- 最高法审结海富投资诉甘肃世恒案:确立PE投资对赌原则
- 最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
- ffmpeg之rtsp分析流程
- Android Drawable Resource学习(十二)、ShapeDrawable还是GradientDrawable?
- DG搭建Windows 下注意
- 而如今的她,坚强而隐忍