修复了Oracle的ORA-01033错误

今天数据库日志满了,然后同事删除了一部分日志,空出来一部分的磁盘空间,但是却发现数据库怎么都起不来,一直报告ORA-01033错误, ORACLE initialization or shutdown in progress.

强制Shutdown immediate之后再Startup结果报告:

ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'xx\redo1.log'

上网搜索发现是数据库日志读取出问题了.

于是开始检索解决的办法:

先查询出错的这个Log 1是否是当前使用中的日志:

SQL>select group#,sequence#,archived,status from v$log;

得到的结果是

GROUP# SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1 1 NO INACTIVE
2 2 NO INACTIVE
3 3 NO CURRENT


解决的办法是:

alter database clear unarchived logfile group 1;

然后很正确的提示了

Database Altered.

之后再Shutdown一次再Startup一次就好了.

但是值得注意的是:

1、这种办法恢复的数据库是一致的不完全恢复,会丢失当前联机日志中的事务数据
2、这种方法适合于归档数据库并且有可用的数据库全备份。
3、恢复成功之后,记得再做一次数据库的全备份。
4、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。

但是我们局内的数据库是无所谓数据一致性的,因为并没有那么强的实时性的要求.于是很顺理成章的就完成了了事~

相关材料引用自:
http://www.cnblogs.com/jimeper/archive/2008/04/14/1153234.html

评论

此博客中的热门博文

远程记录OpenWRT日志

用OpenWRT打造自动翻墙路由器(详解篇)

Python中为什么要用is None来代替== None?