诊断Oraacle数据库Hanging问题
2007-05-07 12:07:40 来源:WEB开发网核心提示: 5) 如果是DDL语句,可能是一个数据字典的相关问题,诊断Oraacle数据库Hanging问题(3),如果是create index语句则可能是一个空间事务竞争问题,调整I/O是一个比较好的方法,也可能是问题的一部分,SELECT *FROM sys.dba dba_tablesWHER
5) 如果是DDL语句,可能是一个数据字典的相关问题。如果是create index语句则可能是一个空间事务竞争问题。调整I/O是一个比较好的方法,分布式I/O,分开索引和数据的存放空间,并行执行都是比较有用的方法,还可以设置初始化参数pre_page_sga为true。
指定的数据库对象?
在指定对象能是否能做任何操作?做一个select count(*)是否有问题?如果只是update该对象存在问题,那么可能锁了,可以从上面3)、4)中的脚本获取锁的信息。
是否预先分配好了空间给这个对象?如果是,那么将提高HWM并且导致全表扫描,以至于让数据库看起来像是“挂起”了。全表扫描总是会扫描HWM,即使表只存在很少的数据。解决方案就是尽量避免预分配extents除非马上要执行一个大的并行插入或者常规的装载。千万不要在直接装载的时候预分配extents。
如果对象是一个表,那么可以尝试
ANALYZE TABLE <tablename> VALIDATE STRUCTURE CASCADE;
是否有报错,如果有报错,意味着表或者表上的索引存在坏块了。如果没有报错,那么继续尝试下面的SQL语句得到相应的的信息:
块级上的空间信息,一个高的chain out,也可能是问题的一部分。
SELECT *
FROM sys.dba dba_tables
WHERE table_name = '<TABLENAME>';
如果你有很多的更新和删除操作,那么一个不适合的索引也会造成问题,下面的SQL语句能帮你得到相关的索引信息:
SELECT i.*
FROM sys.index_stats i, sys.dba_indexes d
WHERE i.name = d.index_name
AND d.table_name = '<TABLENAME>';SELECT i.*
FROM sys.index_stats i, sys.dba_indexes d
WHERE i.name = d.index_name
AND d.table_name = '<TABLENAME>';
[]
更多精彩
赞助商链接