Oracle

為什麼 DBMS_SESSION.session_trace_enable 會創建多個文件?

  • June 22, 2015

我對這樣配置的會話進行了跟踪:

execute immediate 'ALTER SESSION SET TRACEFILE_IDENTIFIER = ''TEST1''';

DBMS_SESSION.session_trace_enable (waits => TRUE,
                                  binds => TRUE,
                                  plan_stat      => 'all_executions'
                                     );
-- do SQL stuff --
DBMS_SESSION.session_trace_disable();

完成執行後,我創建了大約 80 個 .trc 文件。為什麼會這樣,有沒有辦法強制所有跟踪到一個文件?謝謝。

這可能至少有兩個可能的原因:

  1. 共享伺服器架構:SQL 跟踪文件屬於伺服器程序,但是當您使用共享伺服器架構時,您的會話沒有單獨的專用伺服器程序,您的會話可以隨著時間的推移存在於多個不同的伺服器程序中。
  2. 並行處理:當您的語句並行執行時,每個從執行緒是一個不同的程序,並且由於 SQL 跟踪文件屬於程序,您有多個程序執行相同的語句,因此有多個跟踪文件。

您不能強制創建單個跟踪文件,但可以trcsess根據您的 SID、模組名稱、操作名稱、服務或客戶端標識符將這些跟踪合併到一個文件中。

引用自:https://dba.stackexchange.com/questions/104594