Oracle性能问题一般解决思路课件_第1页
Oracle性能问题一般解决思路课件_第2页
Oracle性能问题一般解决思路课件_第3页
Oracle性能问题一般解决思路课件_第4页
Oracle性能问题一般解决思路课件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v检查V$session_wait视图,查看当前等待事件,根据等待事件,判断是否由于锁等引起v通过操作系统命令top/topas检查耗CPU较高的进程,然后定位到对应的SQL语句。v通过SQL语句直接查占IO排名前多少位的SQL语句v查看V$sysstat看看是否hard parse非常多v检查alert.log是否包含了异常信息或者错误vSelect event,count(*) from v$session_wait group by event;有问题的主要事件有:venqueue vdb file scattered read vdirect path read 或 direct pa

2、th write vglobal cache cr requestvlibrary cache lock vlibrary cache pin vrow cache lock vENQUEUE事件说明当前会话在等待其他会话所占用的资源。该会话将一直等待下去直到它等待的会话释放资源,并可能将整个数据库hang住。多是DML类型锁。v查看enqueue的类型 SQ Enqueue for Sequence Numbers TX Enqueue for a Transaction select sid,chr(bitand(p1, -16777216)/16777215) |chr(bitand(p

3、1,16711680)/65535) Name,(bitand(p1, 65535) Modefrom v$session_waitwhere event = enqueue;SID Name Mode- - -64 TX 6 解决方法: SELECT DECODE(REQUEST,0,Holder: ,Waiter: )|SID SESS,ID1,ID2, LMODE, REQUEST, TYPE FROM V$LOCK WHERE (ID1, ID2, TYPE) IN (SELECT ID1, ID2, TYPE FROM V$LOCK WHERE REQUEST0) ORDER BY

4、ID1, REQUEST检查出标记为holder的会话号,并做进一步查看原因,可能需要将holder的会话杀掉。 如果enqueue类型是SQv$session_wait.p2 is DBA_OBJECTS.object_id, so you can find out which sequence the application is competing如果是TX型v$session.row_wait_obj# is DBA_OBJECTS.object_id 该事件是指该会话在读很多数据块。一般情况下说明该会话在做全表扫描或者全索引扫描,当这种类型的事件较多时应该检查这些语句是否没有用到索引

5、或者表上没有建合适的索引。 该事件说明该会话在做外部排序。大量的外部排序会导致数据库性能很低,应该检查语句是否有问题。可以的话,可以增加PGA_AGGREGATE_TARGET 该事件说明RAC环境中,该会话在等待另外一个instance中的会话释放资源。如果较多的该事件发生时,必须检查另外的instance等待的事件,看是否有异常语句在运行 主要是由于编译存储过程或者SQL硬解析等引起,多与Library cache pin 一起产生。 查看语句:必须以sys用户登录 SELECT decode(lock_a.kgllkreq,0,Holder:,Waiter:),sid,machine,p

6、rogram FROM X$KGLLK LOCK_A ,V$SESSION SES_A WHERE LOCK_A.KGLLKSES = SES_A.SADDR and lock_a.KGLLKHDL in( select KGLLKHDL from X$KGLLK where KGLLKREQ 0) order by KGLLKHDL,kglLKreq 与Library cache lock相似,主要是由于ddl操作或者存储过程编译等引起。查看语句:必须以sys用户登录 SELECT decode(lock_a.kglpnreq,0,Holder:,Waiter:),sid,machine,p

7、rogram FROM X$KGLPN LOCK_A ,V$SESSION SES_A WHERE LOCK_A.KGLPNSES = SES_A.SADDR and lock_a.KGLPNHDL in( select KGLPNHDL from X$KGLPN where KGLPNREQ 0) order by KGLPNHDL,kglpnreqvHP-UNIX top hvIBM AIX topasv获得占CPU高的进程号后,到数据库里面执行下面的语句获得session信息Select * from v$session where paddr in(Select addr from v

8、$process where spid =?)vselect * from (select sql_text,round(a.disk_reads + a.buffer_gets)/a.executions),HASH_VALUE from v$sqlarea awhere executions 0order by 2 desc)where rownum 0v如果hard parse比例比较多,需要多检查是否v对已经存在业务,如果不能修改程序的话,可以尝试将参数cursor_sharing=similarvV$session_longopsvselect sid,target,sofar,TOTALWORK,time_remaining,ELAPSED_SECONDS from v$session_longopsv将下面的触发器建到需要的用户下面即可vcreate or replace trigger tri_loggon_getip after logon on schemabegindbms_a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论