2016-09-18 6 views
2

私はOracleデータベースを勉強しています。質問があります。 これは、他のセッションでSQLをトレースしています。ここで他のセッションでのOracle SQLのトレース

が私の仕事です:

SYS> 

-- Get sid and serial of session which I'm gonna analyze 
select sid, serial# from v$session where username = 'DEV'; 


-- Activate SQL Trace on the session(sid:69/serial:72) 
begin 
dbms_monitor.session_trace_enable(69, 72); 
end; 
/

-- Check sql_trace is set 'ENABLED' 
select sql_trace from v$session where username = 'DEV'; 


DEV> 

-- SQL to be traced 
select 'a' from dual connect by level <= 10; 


SYS> 

-- Deactivate SQL Trace 

begin 
    dbms_monitor.session_trace_disable(69, 72); 
end; 
/

-- .trc file location check 
select p.tracefile from v$process p, v$session s where p.addr = s.paddr and s.sid = userenv('sid'); 

そして、その仕事の後、私は* .trcというのfilieを見つけることを試みたが、それは存在しません。 しかし、SQLトレース自体を呼び出すセッションをトレースしようとすると、trcファイル(正常に動作しています)が見つかります。

他のセッションでトレースできない理由は何ですか?

ありがとうございました

答えて

2

ここに別のセッションでトレースを有効にする方法があります。

SQL> conn test/test; 
Connected. 

SYSユーザー:

SQL> conn/as sysdba 
SQL> select sid, serial# from v$session where username='TEST'; 

SID SERIAL# 
------- ------------- 
28 27 

SQL> exec sys.dbms_system.set_sql_trace_in_session(28, 27, TRUE); 

TESTユーザ:

SQL> select table_name from tabs; 

TABLE_NAME 
------------------------------ 
TABLES_PKEYS 

SQL> select * from tables_pkeys; 

SCHEMA_NAME  TABLE_NAME  COLUMN_NAME   PKEY_INDEX 
-------------------- -------------------- -------------------- ---------- 
DEMO    T1   ID    1 

SQL> 

SYSユーザー:

SQL> select p.tracefile from v$process p, v$session s where p.addr=s.paddr and s.sid='28'; 

TRACEFILE 
-------------------------------------------------------------------------------- 
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4122.trc 

SQL>exit 

[[email protected] trace]$ cat orcl_ora_4122.trc 
Trace file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4122.trc 
... 

*** 2016-09-18 21:04:09.013 
*** SESSION ID:(28.27) 2016-09-18 21:04:09.013 
*** CLIENT ID:() 2016-09-18 21:04:09.013 
*** SERVICE NAME:(SYS$USERS) 2016-09-18 21:04:09.013 
*** MODULE NAME:(SQL*Plus) 2016-09-18 21:04:09.013 
*** ACTION NAME:() 2016-09-18 21:04:09.013 

    CLOSE #139829905643504:c=1000,e=327,dep=0,type=0,tim=1474212849012528 
    ===================== 
    PARSING IN CURSOR #139829906751864 len=202 dep=1 uid=0 oct=3 lid=0  tim=1474212849015309 hv=3819099649 ad='67af7630' sqlid='3nkd3g3ju5ph1' 

あなたがTKPROFを使用することができ、Oracleは素敵表示するツールを提供し、フォーマットされたトレースの内容。