ITPub博客

首页 > 数据库 > Oracle > Oracle常见应急性能问题分析思路

Oracle常见应急性能问题分析思路

原创 Oracle 作者:dbs101 时间:2017-01-11 09:41:45 0 删除 编辑

Oracle常见应急性能问题分析思路
---------------------------------

应急问题分析思路
CPU高
IO高
内存高
等待事件
Latch Free
Enqueue
Cursor Pin S (X)
Log File Sync
Direct path read
监听问题


应急问题分析思路
--------------------------------
确认问题:常见问题CPU高,应用堵塞
查看故障的前一天是否有版本/变更
查看异常等待事件(当前会话,ASH)
查看OS CPU,IO是否有异常
查看TOP SQL语句历史执行变化情况(和上周,前天对比)
执行计划是否有改变(和上周,前天对比)
统计信息是否有改变(和上周,前天对比)
常用工具:PA,AWR,ASH,Statspack,OSW


CPU高

--------------------------------
确认哪个数据库CPU高
数据库异常等待事件latch free
检查OS CPU指标TOP和GLANCE
PA,AWR报告中SQL Buffer gets(和上周同时间段对比)
检查会话执行语句
执行计划改变
进行SQL调优


IO高

-------------------------------
确认哪个数据库IO高
常见数据库异常IO等待事件:
Db file scattered read
Direct path read
检查OS IO指标IOSTAT和SAR
DBV
Rman backup
PA,AWR报告中SQL Physical Reads(和上周同时间段对比)
检查会话执行语句
执行计划改变
进行SQL调优


内存高
------------------------------
确认哪个数据库内存高
检查OS 内存指标TOP和GLANCE
常见内存问题
PA
PGA内存泄露
GG Replicate进程内存bug (EPODS库)
检查会话PGA执行情况


等待事件-CBC latch free
--------------------------------
数据库异常等待事件CBC latch free
检查SQL buffer gets是否过高
检查是否为热块
Buffer gets过高,优化SQL
热块是否为根块
应用缓存
对象hash 分区


等待事件-Library Cache latch free
--------------------------------

数据库异常等待事件Latch Free
Library Cache
Share Pool
检查是否有批量操作未使用绑定变量语句
检查是否有全表扫描v$sql_plan视图
检查是否有ORA-04031错误
检查share pool组件内存是否占用过多
Bug
加到shared pool


等待事件-Undo Global Data Latch
--------------------------------

数据库异常等待事件Undo Global Data Latch
检查undo表空间文件是否开扩展
检查undo表空间是否有剩余空间
检查是否有大事务使用了过大的回滚段
增加undo表空间大小,并关闭扩展
Bug。


等待事件-锁
--------------------------------

数据库异常等待事件Enqueue
TX – 6 (行锁)
TX – 4 (ITL,Index Contention, Index Split)
TM – 4 (FK)
Library Cache Pin/Lock (DDL操作)
查找TX – 6行锁的holder
应用没有及时提交
TX – 4 ITL:无应急手段,安排变更增大事务槽
TX – 4 index contention:无应急手段,安排变更进行反序索引,hash分区
TX – 4 Index Split: 同index contention


等待事件-锁 (继续)
--------------------------------

查找TX – 4表锁的holder
查找TX – 4表锁的对象
检查TX – 4表锁的外键对应的字段是否有索引
Library Cache Pin/Lock – DDL操作
查找Pin/Lock holder


等待事件-Cursor Pin S (wait on x)
--------------------------------

数据库异常等待事件Cursor Pin S(wait on x)
检查SQL 是否有固定holder
检查SQL 执行频率是否过高
检查是否有批量操作未使用绑定变量语句
检查是否有ORA-04031错误
检查share pool组件内存是否占用过多
Bug
加大shared pool


等待事件-Log File Sync
--------------------------------

数据库异常等待事件log file sync
CPU资源紧张,IO异常,事务数增多,进程优先级,bug
检查OS CPU和IO异常(存储,主机组协助,OSW)
检查数据库是否有异常使用IO会话
Db file sequential read平均时间
Db file scatterred read平均时间
Log file parallel write
检查AWR/Statspack IO等待时间(和一周前对比)
检查log file parallel write历史变化情况
检查redo log,事务数是否有增加(和一周前对比)
检查相关DML语句是否有增加


等待事件-Log File Sync(继续)
--------------------------------

进程优先级是否正确(HP和SUN平台)
相关bug


等待事件-Direct path read temp
--------------------------------

数据库异常等待事件Direct path read/write temp
检查语句有大量的hash join或者sort操作
检查pga是否足够total pga inuse


监听连接问题
--------------------------------

检查listener ora日志,查看具体连接风暴时间
检查数据库ASH等待事件并保存一份拷贝
如果数据库争用在前,则从数据库开始检查
如果数据库争用在后,则从应用角度开始检查


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25105315/viewspace-2132222/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-12-18

  • 博文量
    92
  • 访问量
    439021