2016-09-18 81 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提供的工具来查看不错,格式化的跟踪内容。