oracle归档日志写满错误解决方法
最近一年,手头上负责的项目要部署到很多个地方,由于项目组里没有人对oracle比较熟悉,只能给自己增加一个DBA的角色了。由于短时间内要部署很多单位,备份策略没有设置好,结果过了一个月,用户报告程序开始连不上数据库了,并且发给我错误报告。主要是ora-16038、 ora-19809、 ora-00312三个错误,意思很明确,就是归档日志写满了,没法继续写入归档日志了,导致数据库被暂停了,等待继续写入归档日志到硬盘。 由于用户业务比较紧张,先考虑紧急处理方案,先将数据库恢复正常,然后再给用户数据库设计合理的备份方案,使数据库以后不再出现类似错误了。 (为保护用户信息,使用密码,连接 指示符使用manager和orcl代替用户实际数据)
rman target sys/manager@orcl
crosscheck backup;
crosscheck archivelog all;
crosscheck copy;
delete expired backup;
delete expired archivelog all;
delete expired copy;
delete obsolete;
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 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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- react-native – ScrollView下的可点击背景[Reac
- 怎样使用TabPageIndicator 怎样依赖第三方框架
- c# – 将ActionFilterAttribute应用于整个WebAPI
- 01-PostgreSQL初识
- 域驱动设计 – 带.NET的DDD – 是否有可用的通用
- ios – Xcode 5布局错误 – 标签的错位视图框架在
- 去哪儿网迷你React的研发心得
- #pragma comment(lib,"AddLib.lib") 和附
- webkit移植系列-WinCE [1]
- com.thoughtworks.xstream.XStream操作XML和java