oracle归档日志写满错误解决方法
2016-09-13 23:20
330 查看
最近一年,手头上负责的项目要部署到很多个地方,由于项目组里没有人对oracle比较熟悉,只能给自己增加一个DBA的角色了。由于短时间内要部署很多单位,备份策略没有设置好,结果过了一个月,用户报告程序开始连不上数据库了,并且发给我错误报告。主要是ora-16038、 ora-19809、 ora-00312三个错误,意思很明确,就是归档日志写满了,没法继续写入归档日志了,导致数据库被暂停了,等待继续写入归档日志到硬盘。
由于用户业务比较紧张,先考虑紧急处理方案,先将数据库恢复正常,然后再给用户数据库设计合理的备份方案,使数据库以后不再出现类似错误了。
(为保护用户信息,使用密码,连接 指示符使用manager和orcl代替用户实际数据)
使用rman清理归档日志和备份,看可不可以清理出来一部分空间,如果清理出来足够的空间,则数据库应该可以恢复正常了。
如果使用了快速恢复区,检查db_recovery_file_dest和db_recovery_file_dest_size,如果目录所在位置还有空间,只需增大db_recovery_file_dest_size就可以使数据库恢复正常。
如果没有使用快速恢复区,检查 show parameter
log_archive_dest,根据目录位置,看可不可以增大归档的目录的大小,比如删除目录所在分区的其他文件。如果可以清理出空间,数据库应该就可以恢复正常了
如果不想使用上面的方法,想要删除以前的归档日志来释放空间,为安全起见,首先将要删除的归档日志复制到其他地方,然后使用rman删除刚刚备份的日志。
如果归档日志保存在文件系统上,则根据上面获取的归档日志目录的位置,将准备删除的归档日志拷贝到指定位置,如果归档日志存储在asm里,就稍微麻烦一点,需要在asmcmd里使用cp命令将归档日志备份。
删除归档日志文件后,马上对数据库做全备份。然后就可以使用以下代码清理归档日志文件了。
总体来说,这个错误是由数据库空间规划和备份策略没有提前设计好导致,做完应急处理后应该尽快重新对数据库空间和备份策略重新进行设计,以防再次出现以上问题,影响用户使用。
ps
如果在数据库hold的时候使用了强制关闭数据库时,可能在开机时会遇到其它的问题,此时需要先清理待归档的日志文件,方法为
由于用户业务比较紧张,先考虑紧急处理方案,先将数据库恢复正常,然后再给用户数据库设计合理的备份方案,使数据库以后不再出现类似错误了。
(为保护用户信息,使用密码,连接 指示符使用manager和orcl代替用户实际数据)
使用rman清理归档日志和备份,看可不可以清理出来一部分空间,如果清理出来足够的空间,则数据库应该可以恢复正常了。
rman target sys/manager@orcl crosscheck backup; crosscheck archivelog all; crosscheck copy; delete expired backup; delete expired archivelog all; delete expired copy; delete obsolete;
如果使用了快速恢复区,检查db_recovery_file_dest和db_recovery_file_dest_size,如果目录所在位置还有空间,只需增大db_recovery_file_dest_size就可以使数据库恢复正常。
如果没有使用快速恢复区,检查 show parameter
log_archive_dest,根据目录位置,看可不可以增大归档的目录的大小,比如删除目录所在分区的其他文件。如果可以清理出空间,数据库应该就可以恢复正常了
如果不想使用上面的方法,想要删除以前的归档日志来释放空间,为安全起见,首先将要删除的归档日志复制到其他地方,然后使用rman删除刚刚备份的日志。
如果归档日志保存在文件系统上,则根据上面获取的归档日志目录的位置,将准备删除的归档日志拷贝到指定位置,如果归档日志存储在asm里,就稍微麻烦一点,需要在asmcmd里使用cp命令将归档日志备份。
rman target sys/manager@orcl --查看归档日志文件信息 list archivelog all; --然后使用以下方法中的任意一种删除刚刚已经备份过的归档日志文件。 --删除从序列号为xxx开始的所有归档日志文件 delete archivelog from sequence xxx; --或者,删除序列号在xxx和yyy之间的所有归档日志文件 delete archivelog sequence between xxx and yyy; --或者删除序列号一直到xxx的所有归档日志文件 delete archivelog until sequence xxx --或者使用时间来指定要删除的归档日志文件 --删除从datestring指定的时间开始的所有归档日志 delete archivelog from time 'datestring' --或者,删除时间在datestring1和datestring2之间的所有归档日志文件 delete archivelog time between 'datestring1' and 'datestring2' --或者删除时间一直到datestring的所有归档日志文件 delete archivelog until time 'datestring'
删除归档日志文件后,马上对数据库做全备份。然后就可以使用以下代码清理归档日志文件了。
rman target sys/manager@orcl crosscheck backup; crosscheck archivelog all; crosscheck copy; delete expired backup; delete expired archivelog all; delete expired copy; delete obsolete;
总体来说,这个错误是由数据库空间规划和备份策略没有提前设计好导致,做完应急处理后应该尽快重新对数据库空间和备份策略重新进行设计,以防再次出现以上问题,影响用户使用。
ps
如果在数据库hold的时候使用了强制关闭数据库时,可能在开机时会遇到其它的问题,此时需要先清理待归档的日志文件,方法为
sqlplus sys/manager@orcl as sysdba startup mount; --获取inactive且没有归档的组 select group#,sequence#,archived,status from v$log; --清理上一步获取的归档日志组 alter database clear unarchived logfile group x; alter database open;
相关文章推荐
- Oracle+RAC+ASM数据库ora-00257日志归档器错误解决方法
- ORA-00257归档日志写满的解决方法 背景: 在前一篇博客中我们提到了如何启动或关闭oracle的归档(ARCHIVELOG)模式,在我成功设定数据库为归档模式以后, 第二天再次尝试连接数据库,
- oracle归档日志超出了恢复闪回恢复区(flash_recovery_area)限制的解决方法
- oracle 00257归档日志错误后续及查看alert.log的方法
- 输出设备已满或不可用, 归档程序无法归档重做日志[oracle解决方法]
- 解决Oracle RMAN删除归档日志不释放问题的方法
- ora-00257数据库日志归档器错误解决方法
- oracle归档日志超出了恢复闪回恢复区(flash_recovery_area)限制的解决方法
- oracle 删不掉归档日志文件的解决方法
- Oracle归档日志空间不足引发的问题及解决方法
- oralce日志文件无法归档错误ORA-16038解决方法
- oracle 归档日志满 的 解决方法
- 【Oracle】ORA-00257归档日志写满的解决方法
- Oracle在Rman备份模式下误删归档日志文件解决方法
- Oracle ORA-12154: TNS:could not resolve service name错误的解决方法
- Oracle连接常见错误及解决方法
- 服务器一大堆错误日志的解决方法
- Oracle9查询语句报无法访问oracore9.dll错误的解决方法
- 将Ofbiz的数据库改为Oracle,运行时出现 ORA-01843: 无效的月份 错误 的原因及解决方法
- oracle错误:ORA-12514的解决方法