WEB开发网
开发学院数据库Oracle 诊断Oraacle数据库Hanging问题 阅读

诊断Oraacle数据库Hanging问题

 2007-05-07 12:07:40 来源:WEB开发网   
核心提示: 是否整个数据库都被hanging?所有的实例?所有的连接?所有的操作?所有的节点?首先确认是否能够执行查询select * from dual?日志文件多久切换一次?如果在Alert日志中有归档相关的错误信息,那么可以着手解决归档错误问题,诊断Oraacle数据库Hanging问题(2),

是否整个数据库都被hanging?

所有的实例?所有的连接?所有的操作?所有的节点?

首先确认是否能够执行查询select * from dual?日志文件多久切换一次?如果在Alert日志中有归档相关的错误信息,那么可以着手解决归档错误问题,因为归档问题经常会挂起数据库。例如:归档目的地空间满了,或者数据库处于归档模式下但是ARCH进程被停止了。一般可以先以sysdba权限连接到数据库中,执行ARCHIVE LOG LIST,查看数据库是否归档模式,是否启用了自动归档,一般如果没有启用自动归档,就很容易挂起数据库了,这个时候通常的做法就是把数据库改成自动归档模式或者是非归档模式。

一个指定的SQL语句操作?

1) 如果是由于指定的SQL语句导致数据库挂起,先执行带有timed_statistics参数的TKPROF输出报告以及SQL语句的执行计划,然后就需要分SQL语句类型来分析了:

2) 如果是select语句,那么这个SQL语句应该是需要被调整,如果是一个非常复杂的SQL语句,那么尝试是否可以中断。

3) 如果是一个并行查询语句,可以参考监控当前并行查询运行状况脚本获得并行查询的执行计划。可能是空间事务竞争,如果在Alert日志文件中出现ORA-1575错误,那么请将临时表空间的参数pct_increase设置为0以便禁止SMON进程接合连续的extents,因此减少查询slaves的竞争。同时将数据文件尽量分散到不同的磁盘上去,减少磁盘I/O的竞争,适当增加sort_area_size的大小可能会‘减少’并行度。

4) 如果是DML语句,那么可能是由于锁导致的,需要去获取v$lock的输出信息,关于锁的信息可以参考返回锁信息脚本。查看DML语句的对象上是否有限制或者触发器,有可能产生级联锁问题。把索引建立在相关的外键列上,这样会改变在父表上的锁行为。

上一页  1 2 3 4 5 6 7  下一页

Tags:诊断 Oraacle 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接