2016-09-18 87 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 Trace本身的會話時,我可以找到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); 

測試用戶:

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提供的工具來查看不錯,格式化的跟蹤內容。