几种常用的SQL优化工具及方法


1. sql 详细执行计划,主要检查驱动路径,索引是否合适;同一个pl/sql窗口连续执行即可;
explain plan for (select  *  from  HW_PC_SIGNED_COMPANY_V sc) ;
select * from table(dbms_xplan.display(null,null,'all'));

2. sql monitor,查看sql主要花在哪些时间,真实的行数和IO;三个sql依次执行;

SELECT /*+monitor*/ * from  HW_PC_SIGNED_COMPANY_V sc ;
select * from v$sql s where s.SQL_TEXT like 'SELECT /*+monitor*/ * from  HW_PC_SIGNED%' ;  
select dbms_sqltune.report_sql_monitor('ftswqgup6hzxx') from dual ;  

3. SQLT
http://space.itpub.net/35489/viewspace-764348  
查看TXT文件。

4. SQL Profile 及使用SQL Tuning Advisor来尝试SQL调优
http://space.itpub.net/35489/viewspace-747164

5. 10046 EVENT  

trace 文件的格式都是 sid_ora_pid.trc  , 其中sid 表示数据库的instance name,  pid 表示 process id .


A. 可以在PL/SQL中加入如下的语句来进行trace .

   EXECUTE IMMEDIATE 'ALTER SESSION SET timed_statistics=true' ;
   EXECUTE IMMEDIATE 'ALTER SESSION SET max_dump_file_size=“unlimited”';
   EXECUTE IMMEDIATE 'ALTER SESSION SET TRACEFILE_IDENTIFIER=''TEST_TRACEFILE''';
   EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 trace name context forever,level 8''';
  在最后加入如下语句执行
   EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046  trace name context off'';   

B. 使用10046 event 跟踪其他用户session :

对其他用户session设置  dbms_system.set_ev
说明:5个参数   sid/serial#/ev/level/username

Select sid,serial#   from v$session where username is not null ;
       SID    SERIAL#
---------- ---------- -----
       113         227       

或者通过spid查询sid, serial#  :
SQL> select  b.*, a.*   from v$process a, v$session b
          where a.addr = b.paddr and a.spid in (1914, 19140) ;

执行跟踪:
exec dbms_system.set_ev(113,227,10046,8,'');

结束跟踪:
exec dbms_system.set_ev(113,227,10046,0,'');

最后的trace文件都需要使用 tkprof 进行格式转化
tkprof  xxx.trc  xxx.txt  explain=apps/passwd sort='(prsela,exeela,fchela)'


6.  SQL Trace
SQL> set autotrace traceonly
显示: expain+statistics(不显示数据)

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

转载于:http://blog.itpub.net/35489/viewspace-764856/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值