轉自:http://blog.itpub.net/35489/viewspace-764856/
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(不顯示數據)