(最終更新日:03年02月22日)

トレースの取得方法


1. トレースの取得方法

1. 現行セッションのトレースを取得する

ALTER SESSION SET TIMED_STATISTICS = TRUE;
ALTER SESSION SET SQL_TRACE = TRUE;

2. データベースインスタンス全体でトレースを開始する

データベースインスタンス全体でトレースを開始するには、init.ora で以下のパラメータを設定します。

timed_statistics = true
sql_trace = true

※timed_statisticsパラメータは「ALTER SYSTEM SET TIMED_STATISTICS = TRUE;」コマンドで設定することも可能です。
 sql_traceパラメータは、「ALTER SYSTEM」コマンドで設定することはできません。

3. 特定ユーザのセッションでトレースを開始する

EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid, SERIAL#, TRUE);

2. 現行セッションのトレースを取得する例

1. 現行セッションのトレースを開始する

Oracle SQL*Plus
SQL> ALTER SESSION SET TIMED_STATISTICS = TRUE;

セッションが変更されました。

SQL> ALTER SESSION SET SQL_TRACE = TRUE;

セッションが変更されました。

SQL> 

2. SQL文を実行する

Oracle SQL*Plus
SQL> SELECT * FROM EMP ORDER BY EMPNO;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 80-12-17        800                    20
      7499 ALLEN      SALESMAN        7698 81-02-20       1600        300         30
      7521 WARD       SALESMAN        7698 81-02-22       1250        500         30
                                      ・
                                      ・
                                      ・
      7934 MILLER     CLERK           7782 82-01-23       1300                    10

14行が選択されました。

SQL> SELECT * FROM EMP WHERE EMPNO = 7788;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7788 SCOTT      ANALYST         7566 87-04-19       3000                    20

SQL> 

3.トレースファイルの確認

コマンドプロンプト
E:\oracle\admin\GP6450\udump>DIR
 ドライブ E のボリューム ラベルは ボリューム です
 ボリューム シリアル番号は XXXX-XXXX です

 E:\oracle\admin\GP6450\udump のディレクトリ

2003/02/22  17:32       <DIR>          .
2003/02/22  17:32       <DIR>          ..
2003/02/22  17:34                1,285 ORA01336.TRC
               1 個のファイル               1,285 バイト
               2 個のディレクトリ  14,128,570,368 バイトの空き領域

E:\oracle\admin\GP6450\udump>

4. TKPROF を使ってトレースファイルを整形する

コマンドプロンプト
E:\oracle\admin\GP6450\udump>TKPROF ORA01336.TRC A.TXT EXPLAIN=SCOTT2/TIGER

TKPROF: Release 8.1.7.0.0 - Production on 土 Feb 22 17:39:41 2003

(c) Copyright 2000 Oracle Corporation.  All rights reserved.



E:\oracle\admin\GP6450\udump>

5. 出力結果の例

A.TXT
TKPROF: Release 8.1.7.0.0 - Production on 土 Feb 22 17:39:41 2003

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

Trace file: ORA01336.TRC
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing 
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

ALTER SESSION SET SQL_TRACE = TRUE


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      1      0.01       0.01          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        1      0.01       0.01          0          0          0           0

Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 43  (SCOTT2)
********************************************************************************

SELECT * 
FROM
 EMP ORDER BY EMPNO


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.01       0.01          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.01          1          4          0          14
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.01       0.02          1          4          0          14

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 43  (SCOTT2)

Rows     Row Source Operation
-------  ---------------------------------------------------
     14  TABLE ACCESS BY INDEX ROWID EMP 
     15   INDEX FULL SCAN (object id 25260)


Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   GOAL: CHOOSE
     14   TABLE ACCESS (BY INDEX ROWID) OF 'EMP'
     15    INDEX (FULL SCAN) OF 'PK_EMP' (UNIQUE)

********************************************************************************

SELECT * 
FROM
 EMP WHERE EMPNO = 7788


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          2          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          2          0           1

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 43  (SCOTT2)

Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   GOAL: CHOOSE
      0   TABLE ACCESS (BY INDEX ROWID) OF 'EMP'
      0    INDEX (UNIQUE SCAN) OF 'PK_EMP' (UNIQUE)




********************************************************************************

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        2      0.01       0.01          0          0          0           0
Execute      3      0.01       0.01          0          0          0           0
Fetch        4      0.00       0.01          1          6          0          15
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        9      0.02       0.03          1          6          0          15

Misses in library cache during parse: 2


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      0      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        0      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0

    3  user  SQL statements in session.
    0  internal SQL statements in session.
    3  SQL statements in session.
    2  statements EXPLAINed in this session.
********************************************************************************
Trace file: ORA01336.TRC
Trace file compatibility: 8.00.04
Sort options: default

       0  session in tracefile.
       3  user  SQL statements in trace file.
       0  internal SQL statements in trace file.
       3  SQL statements in trace file.
       3  unique SQL statements in trace file.
       2  SQL statements EXPLAINed using schema:
           SCOTT2.prof$plan_table
             Default table was used.
             Table was created.
             Table was dropped.
      25  lines in trace file.


3. 特定ユーザのセッションでトレースを取得する例

1. 権限の付与とシノニムの作成

Oracle SQL*Plus
SQL> CONNECT SYS/CHANGE_ON_INSTALL
接続されました。
SQL> GRANT EXECUTE ON DBMS_SYSTEM TO SYSTEM;

権限付与が成功しました。

SQL> CREATE PUBLIC SYNONYM DBMS_SYSTEM FOR SYS.DBMS_SYSTEM;

シノニムが作成されました。

SQL> 

2. ユーザのセッションID(sid)とシリアル番号(serial#)を取得する

Oracle SQL*Plus
SQL> CONNECT SYSTEM/MANAGER@GP6450
接続されました。
SQL> SELECT SID, STATUS,
  2         SUBSTR(USERNAME, 1, 8) USERNAME,
  3         SUBSTR(SCHEMANAME, 1, 8) SCHEMANAME,
  4         SUBSTR(OSUSER, 1, 16) OSUSER,
  5         SUBSTR(MACHINE, 1, 16) MACHINE,
  6         SUBSTR(PROGRAM, 1, 16) PROGRAM,
  7         SERIAL#
  8    FROM V$SESSION
  9   WHERE USERNAME IS NOT NULL
 10   ORDER BY SID;

       SID STATUS   USERNAME         SCHEMANAME       OSUSER                           MACHINE                          PROGRAM                             SERIAL#
---------- -------- ---------------- ---------------- -------------------------------- -------------------------------- -------------------------------- ----------
        11 ACTIVE   SYSTEM           SYSTEM           GP6450\USER01                    WORKGROUP\GP6450                 SQLPLUSW.EXE                           1819
        14 INACTIVE SCOTT2           SCOTT2           GP6450\USER01                    WORKGROUP\GP6450                 SQLPLUSW.EXE                           4723

SQL> 

3. 特定ユーザのセッションでトレースを開始する

Oracle SQL*Plus
SQL> EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(14, 4723, TRUE);

PL/SQLプロシージャが正常に完了しました。

SQL> 

HOME 技術情報 パフォーマンス・チューニング