Amazon

2015年1月3日土曜日

Oracle の SQLトレース

ボトルネックになっているSQLが分かっていて、sqlplusから実行出来る場合は、トレースを取ることで原因が分かります。
alter session権限がない場合には、エラーが出るので権限を付与します。
トレースを取った状態で該当のSQLを実行してトレースをオフにします。

SQL> alter session set events '10046 trace name context forever, level 12';
ERROR:
ORA-01031: insufficient privileges

SQL> connect system@XE
Enter password:
SQL> grant alter session to scott;

Grant succeeded.

SQL> connect scott/tiger
Connected.
SQL> alter session set events '10046 trace name context forever, level 12';

Session altered.

SQL> select * from emp;
.....
SQL> alter session set events '10046 trace name context off';

Session altered.

SQL>

トレースが作成される場所は、user_dump_destパラメータで確認できます。
SQL> show parameter user_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      /u01/app/oracle/diag/rdbms/xe/
                                                 XE/trace
SQL>

trcファイルをtkprofで整形してSQLの実行時間や消費されているリソースを確認します。
vagrant@oracle11g:~$ tkprof XE_ora_7597.trc out.txt
vagrant@oracle11g:~$ cat -n out.txt | tail -n +457 | head -31
   457  SQL ID: a2dk8bdn0ujx7 Plan Hash: 3956160932
   458
   459  select *
   460  from
   461   emp
   462
   463
   464  call     count       cpu    elapsed       disk      query    current        rows
   465  ------- ------  -------- ---------- ---------- ---------- ----------  ----------
   466  Parse        1      0.00       0.01          0          0          0           0
   467  Execute      1      0.00       0.00          0          0          0           0
   468  Fetch        2      0.00       0.00          0          3          0          14
   469  ------- ------  -------- ---------- ---------- ---------- ----------  ----------
   470  total        4      0.00       0.01          0          3          0          14
   471
   472  Misses in library cache during parse: 1
   473  Optimizer mode: ALL_ROWS
   474  Parsing user id: 48
   475  Number of plan statistics captured: 1
   476
   477  Rows (1st) Rows (avg) Rows (max)  Row Source Operation
   478  ---------- ---------- ----------  ---------------------------------------------------
   479          14         14         14  TABLE ACCESS FULL EMP (cr=3 pr=0 pw=0 time=38 us cost=2 size=532 card=14)
   480
   481
   482  Elapsed times include waiting on following events:
   483    Event waited on                             Times   Max. Wait  Total Waited
   484    ----------------------------------------   Waited  ----------  ------------
   485    SQL*Net message to client                       2        0.00          0.00
   486    SQL*Net message from client                     2       11.12         11.12
   487  ********************************************************************************
vagrant@oracle11g:~$

0 件のコメント: