Oracle性能问题一般解决思路课件.ppt

上传人:小飞机 文档编号:2167158 上传时间:2023-01-23 格式:PPT 页数:15 大小:200KB
返回 下载 相关 举报
Oracle性能问题一般解决思路课件.ppt_第1页
第1页 / 共15页
Oracle性能问题一般解决思路课件.ppt_第2页
第2页 / 共15页
Oracle性能问题一般解决思路课件.ppt_第3页
第3页 / 共15页
Oracle性能问题一般解决思路课件.ppt_第4页
第4页 / 共15页
Oracle性能问题一般解决思路课件.ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《Oracle性能问题一般解决思路课件.ppt》由会员分享,可在线阅读,更多相关《Oracle性能问题一般解决思路课件.ppt(15页珍藏版)》请在三一办公上搜索。

1、Oracle 性能问题一般解决思路,高兴建,主要方向,检查V$session_wait视图,查看当前等待事件,根据等待事件,判断是否由于锁等引起通过操作系统命令top/topas检查耗CPU较高的进程,然后定位到对应的SQL语句。通过SQL语句直接查占IO排名前多少位的SQL语句查看V$sysstat看看是否hard parse非常多检查alert.log是否包含了异常信息或者错误,检查V$session_wait视图,查看当前等待事件,Select event,count(*)from v$session_wait group by event;有问题的主要事件有:enqueue db fi

2、le scattered read direct path read 或 direct path write global cache cr requestlibrary cache lock library cache pin row cache lock,enqueue事件,ENQUEUE事件说明当前会话在等待其他会话所占用的资源。该会话将一直等待下去直到它等待的会话释放资源,并可能将整个数据库hang住。多是DML类型锁。查看enqueue的类型 SQ Enqueue for Sequence Numbers TX Enqueue for a Transaction select sid

3、,chr(bitand(p1,-16777216)/16777215)|chr(bitand(p1,16711680)/65535)Name,(bitand(p1,65535)Modefrom v$session_waitwhere event=enqueue;SID Name Mode-64 TX 6,enqueue事件,解决方法: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 F

4、ROM V$LOCK WHERE REQUEST0)ORDER BY 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,db file scattered read,该事件是指该会话在读很多数

5、据块。一般情况下说明该会话在做全表扫描或者全索引扫描,当这种类型的事件较多时应该检查这些语句是否没有用到索引或者表上没有建合适的索引。,direct path read 或 direct path write,该事件说明该会话在做外部排序。大量的外部排序会导致数据库性能很低,应该检查语句是否有问题。可以的话,可以增加PGA_AGGREGATE_TARGET,global cache cr request,该事件说明RAC环境中,该会话在等待另外一个instance中的会话释放资源。如果较多的该事件发生时,必须检查另外的instance等待的事件,看是否有异常语句在运行,library cach

6、e lock,主要是由于编译存储过程或者SQL硬解析等引起,多与Library cache pin 一起产生。查看语句:必须以sys用户登录 SELECT decode(lock_a.kgllkreq,0,Holder:,Waiter:),sid,machine,program 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,kgl

7、LKreq,library cache pin,与Library cache lock相似,主要是由于ddl操作或者存储过程编译等引起。查看语句:必须以sys用户登录 SELECT decode(lock_a.kglpnreq,0,Holder:,Waiter:),sid,machine,program 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

8、 KGLPNHDL,kglpnreq,通过操作系统命令top/topas检查耗CPU较高的进程,然后定位到对应的SQL语句。,HP-UNIXtop hIBM AIXtopas获得占CPU高的进程号后,到数据库里面执行下面的语句获得session信息Select*from v$session where paddr in(Select addr from v$process where spid=?),查占IO排名前多少位的SQL语句,select*from(select sql_text,round(a.disk_reads+a.buffer_gets)/a.executions),HASH_

9、VALUE from v$sqlarea awhere executions 0order by 2 desc)where rownum 30也可以生成AWR报告来分析top SQL如果是存储过程比较慢,可以通过plsql profiler来分析,查看V$sysstat看看是否hard parse非常多,select*from v$sysstatwhere instr(name,parse)0如果hard parse比例比较多,需要多检查是否对已经存在业务,如果不能修改程序的话,可以尝试将参数cursor_sharing=similar,查询长任务操作,V$session_longopssel

10、ect sid,target,sofar,TOTALWORK,time_remaining,ELAPSED_SECONDS from v$session_longops,用于记录登录用户的IP的触发器,将下面的触发器建到需要的用户下面即可create or replace trigger tri_loggon_getip after logon on schemabegindbms_application_info.set_client_info(sys_context(USERENV,IP_ADDRESS);end;查看方法select client_info from v$session where sid=?,这时候出现的就是IP地址。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号