トレースの取得方法
◆現行セッションのトレースを取得する
ALTER SESSION SET TIMED_STATISTICS = TRUE;
ALTER SESSION SET SQL_TRACE = TRUE;
ALTER SESSION SET SQL_TRACE = TRUE;
◆データベースインスタンス全体でトレースを開始する
データベースインスタンス全体でトレースを開始するには、init.ora で以下のパラメータを設定する。
timed_statistics = true
sql_trace = true
※timed_statisticsパラメータは「ALTER SYSTEM SET TIMED_STATISTICS = TRUE;」コマンドで設定することも可能です。
sql_traceパラメータは、「ALTER SYSTEM」コマンドで設定することはできません。
timed_statistics = true
sql_trace = true
※timed_statisticsパラメータは「ALTER SYSTEM SET TIMED_STATISTICS = TRUE;」コマンドで設定することも可能です。
sql_traceパラメータは、「ALTER SYSTEM」コマンドで設定することはできません。
◆特定ユーザのセッションでトレースを開始する
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid, SERIAL#, TRUE);
現行セッションのトレースを取得する例
◆現行セッションのトレースを開始する
SQL> ALTER SESSION SET TIMED_STATISTICS = TRUE; セッションが変更されました。 SQL> ALTER SESSION SET SQL_TRACE = TRUE; セッションが変更されました。
◆ SQL文を実行する
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>
◆トレースファイルの確認
コマンドプロンプト 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>
◆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>
◆出力結果の例
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.
特定ユーザのセッションでトレースを取得する例
◆ 権限の付与とシノニムの作成
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>
◆ユーザのセッション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>
◆ 特定ユーザのセッションでトレースを開始する
Oracle SQL*Plus SQL> EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(14, 4723, TRUE); PL/SQLプロシージャが正常に完了しました。 SQL>