Oracle 11g新特性direct path read引发的系统停运故障诊断处理2

本文详细描述了Oracle 11g数据库由于direct path read特性导致的系统运行缓慢甚至停运的问题。故障发生时,数据库服务器I/O等待严重,磁盘响应缓慢,全表扫描SQL语句导致大量磁盘读取。通过关闭direct path read特性,系统恢复正常。故障原因归结为大表全表扫描和缺少合适索引。建议优化SQL语句并建立索引,避免大表全表扫描。
摘要由CSDN通过智能技术生成

1、故障现象

(1)一个业务系统输入用户名与密码后无法进入首页,表现为一直在运行等待,运行缓慢

(2)整个系统无法正常使用,接近停运状态

2、  故障解决方法

调整数据库参数alter system setevent='10949 trace name context forever, level 1'来关闭“direct path read”(直接路径读)特性,使SQL语句可以从缓存中查询数据,达到降低I/O读取量,使全表扫描的数据从缓存中读取,加快SQL语句运行速度的目的。

3、  故障原因总结

(1)由于部分SQL语句设计或编写效率低下,以及表缺少适应的索引,导致SQL语句需要全表扫描,在表较小时,ORACLE数据库将数据读取到缓存后,后续虽然是全表扫描,但均是从缓存中读取,所以问题未体现出来

(2)在表的大小不断增大后,根据ORACLE 11g数据库的算法,在表达到db_cache_size(GB)的2%(默认值)以后,认为采用直接路径读(跳过缓存,直接从磁盘文件中全扫描读取)

(3)DX_T_XXVIATE表大小为1GB,在大量反复以direct pathread磁盘重复读取的情况下,消耗大量的I/O资源,将服务器I/O几乎耗尽

(4)在主机I/O耗尽的情况下,系统的读、写,均几乎处于瘫痪状态

(5)在关闭ORACLE 11G数据库的direct path read新特性功能后,读取方式恢复到从缓存中读取,磁盘读降到“0”,系统恢复正常

4、  改进建议

(1) 优化访问DX_T_XXVIATE 相关的SQL语句与设计合适的索引,避免大表全表扫描。

5、  故障原因分析

5.1  7月11日故障时段数据库服务器I/O等待严重


5.2  7月11日故障时段磁盘响应非常缓慢

 

5.3  对比故障当日(7月11日)与上周的I/O磁盘读取量,比上周大十倍

 

故障前、中、后磁盘读取量对比图:

上面高的蓝色线,是故障当日(2016年7月1日,周一)的磁盘Disk Read KB/s指标线

5.4  高度消耗I/O的SQL语句。

SQL_ID为b8m6wy846qgbk的SQL语句,physical reads鹤立鸡群,可见此SQL语句的影响最为严重。

 

5.5  全表扫描单次超过6秒的表与其SQL语句统计。

统计汇总时间:08:00—10:00

 

SQL_ID

target

出现次数

b8m6wy846qgbk

DX_T_XXVIATE

22

6ut0tkd7hvagc

DX_T_XXVIATE

6

1wq3kmd62x4x8

DX_T_XXVIATE

2

b5ma9qfs62bdm

DX_T_XXVIAT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT圈黎俊杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值