Oracle 11g 通過登入觸發器跟蹤會話產生trace檔案

feelpurple發表於2016-12-22
通過登入觸發器跟蹤會話產生trace檔案,方便對測試環境進行SQL跟蹤,即使執行失敗的SQL也會記錄到跟蹤檔案中,這對於排錯很有用
sqlplus / as sysdba

--建立登陸後的觸發器
CREATE OR REPLACE TRIGGER check_user
  AFTER LOGON ON DATABASE
  BEGIN
    EXECUTE IMMEDIATE 'alter session set sql_trace=true';
    EXECUTE IMMEDIATE 'ALTER SESSION SET tracefile_identifier= ''TRACE'' ';

  EXCEPTION
    WHEN OTHERS THEN
      RAISE_APPLICATION_ERROR
        (-20000, 'Unexpected error: '|| DBMS_Utility.Format_Error_Stack);
 END;

--建立退出登入前的觸發器
CREATE OR REPLACE TRIGGER check_user_2
  BEFORE LOGOFF ON DATABASE
  BEGIN
    EXECUTE IMMEDIATE 'alter session set sql_trace=false';
  EXCEPTION
    WHEN OTHERS THEN
      RAISE_APPLICATION_ERROR
        (-20000, 'Unexpected error: '|| DBMS_Utility.Format_Error_Stack);
 END;

--檢視跟蹤檔案的路徑
select * from v$diag_info where name = 'Diag Trace';
1    Diag Trace    /u01/app/oracle/product/11.2.0/db_1/rdbms/bdump/diag/rdbms/ota4g/OTA4G/trace

跟蹤檔名中帶有會話的程式號
SELECT SPID FROM V$PROCESS WHERE ADDR IN ( SELECT PADDR FROM V$SESSION WHERE SID = 40 and serial# = 1561);

--檢視跟蹤檔案
ls -trl
-rw-r----- 1 oracle oinstall    141 Dec 22 18:59 OTA4G_ora_19602_TRACE.trm
-rw-r----- 1 oracle oinstall   9049 Dec 22 18:59 OTA4G_ora_19602_TRACE.trc
[oracle@localhost trace]$ vi OTA4G_ora_19602_TRACE.trc

vi OTA4G_ora_19602_TRACE.trc
格式化生成的跟蹤檔案
tkprof OTA4G_ora_19602_TRACE.trc 02.txt

需要注意的是,在排錯結束要及時刪除對應的觸發器,以免產生大量的跟蹤檔案
drop trigger check_user;
drop trigger check_user_2;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2131238/,如需轉載,請註明出處,否則將追究法律責任。

相關文章