ORACLE数据库故障检测
1.1 一般错误处理
一般错误包括一些登录过程中出现的错误、SQL语句执行过程中出现的错误。
ORACLE数据库后台出现错误时,数据库的日志文件alert$SID.log文件将详细地记录ORACLE错误代码及错误原因,但对于应用程序出错则不提供任何错误记录。ORACLE数据库还提供了一个简单的ORACLE故障检测命令,$ oerr ora error_no,通过这个命令可以很方便地判断出故障原因;同时这个命令还提供了一个故障解决的建议,通过它可以方便的进行故障处理。
注:ORACLE的故障库保存在$ORACLE_HOME/rdbms/mesg目录下。
例:$ oerr ora 1542
01542, 00000, "tablespace '%s' is offline, cannot allocate space in it"
// *Cause: Tried to allocate space in an offline tablespace
// *Action: Bring the tablespace online or create the object in
// other tablespace
通过oerr命令我们可以清楚的了解到由于表空间处于offline状态,因而故障解决方法就是online相应的表空间。
1.2 特殊故障处理流程
特殊故障主要包括数据库无法正常启动;数据库需要进行回复等等。对于数据库的故障处理,最重要的事情是保证数据的安全!因此在进行这种类型的数据库故障处理前,必须注意以下几点:
l 对数据库进行物理备份(包括数据库控制文件、重做日志文件、回滚表空间、用户数据表空间,临时表空间不需要进行备份)
l 保留$ORACLE_BASE/admin/$SID/bdump/alert$SID.log文件中错误信息及与错误信息相对应的trace文件($ORACLE_BASE/admin/$SID/udump/*.trc)
l 分析alert.log文件中出现的主要错误
l 故障处理从简单到复杂进行,不要一开始就采用诸如增加ORACLE隐含参数如_corrupted_rollback_segment等试图强行打开数据库
l 故障处理完毕后,一定要再次进行数据库的物理备份
l 使用增加某些隐含参数强制打开数据库后,ORACLE建议备份数据后重建数据库。
l 在进行数据库故障时需要检查以下内容:
- 使用ipcs命令检查信号量和共享内存是否分配正常
- 检查UNIX空间使用情况及内存、CPU资源使用情况
- 检查数据库相关文件属性
- 检查tnsnames.ora、listener.ora、init.ora、config.ora等配置文件
- 检查数据库环境变量是否正确