跟蹤資料庫的命令:event 10046等的設定(ZT)
以下是事件的有效trace級別:
Level 0 tracing被關閉。這相當於設定sql_trace=false。
Level 1 標準SQL trace資訊(SQL_TRACE=TRUE)。這是預設級別。
Level 4 SQL trace資訊加繫結變數值。
Level 8 SQL trace資訊加等待事件資訊。
Level 12 SQL trace 資訊,等待事件資訊,和繫結變數值。[@more@]
程式包體已建立。
如何跟蹤其他人的會話
如果你不能確信引數TIMED_STATISTICS和MAX_DUMP_FILE_SIZE是否對你想跟蹤的會話設定合適,你應該從V$SESSION得到SID和它的序列號(SERIAL#)。在開啟trace之前,你然後能做以下過程來合適得設定這些引數。
-- Set TIME_STATISTICS to TRUE for SID 1234, Serial# 56789
exec sys.dbms_system.set_bool_param_in_session( -
sid => 1234, -
serial# => 56789, -
parnam => 'TIMED_STATISTICS', -
bval => true);
-- Set MAX_DUMP_FILE_SIZE to 2147483647
-- for SID 1234, Serial# 56789
exec sys.dbms_system.set_int_param_in_session( -
sid => 1234, -
serial# => 56789, -
parnam => 'MAX_DUMP_FILE_SIZE', -
intval => 2147483647);
如果這些過程不能用於你的oracle版本(Oracle版本8.1.5和以下),你能使用ALTER SYSTEM SET命令來設定這些引數。
在ORACLE10g1版本中,你能使用DBMS_MONITOR包過程來開啟基於SID,服務名,模組,或動作來跟蹤。基於動作的跟蹤使dba能跟蹤一個指定的商業功能。這是一個捕捉:過程要求DBA知道模組和動作名。
Level 0 tracing被關閉。這相當於設定sql_trace=false。
Level 1 標準SQL trace資訊(SQL_TRACE=TRUE)。這是預設級別。
Level 4 SQL trace資訊加繫結變數值。
Level 8 SQL trace資訊加等待事件資訊。
Level 12 SQL trace 資訊,等待事件資訊,和繫結變數值。[@more@]
以下是事件的有效trace級別:
Level 0 tracing被關閉。這相當於設定sql_trace=false。
Level 1 標準SQL trace資訊(SQL_TRACE=TRUE)。這是預設級別。
Level 4 SQL trace資訊加繫結變數值。
Level 8 SQL trace資訊加等待事件資訊。
Level 12 SQL trace 資訊,等待事件資訊,和繫結變數值。
Level 0 tracing被關閉。這相當於設定sql_trace=false。
Level 1 標準SQL trace資訊(SQL_TRACE=TRUE)。這是預設級別。
Level 4 SQL trace資訊加繫結變數值。
Level 8 SQL trace資訊加等待事件資訊。
Level 12 SQL trace 資訊,等待事件資訊,和繫結變數值。
兩個引數
alter session set timed_statistics = true;
alter session set max_dump_file_size = unlimited;
alter session set timed_statistics = true;
alter session set max_dump_file_size = unlimited;
你能使用trace事件10046來跟蹤使用者會話或Oracle後臺程式。
會話位置:USER_DUMP_DEST
後臺位置:BACKGROUND_DUMP_DEST
會話位置:USER_DUMP_DEST
後臺位置:BACKGROUND_DUMP_DEST
跟蹤自己的會話:命令格式
enable
alter session set events '10046 trace name context forever, level 8';
enable
alter session set events '10046 trace name context forever, level 8';
disable
alter session set events '10046 trace name context off';
alter session set events '10046 trace name context off';
--如果你有安裝了的DBMS_SUPPORT包,你能使用以下的過程來開啟和關閉跟蹤:
-- To include Wait Event data with SQL trace (default option)
exec sys.dbms_support.start_trace;
-- To include Bind variable values, Wait Event data with SQL trace
exec sys.dbms_support.start_trace(waits => TRUE, binds=> TRUE)
-- Run your SQL script or program to trace wait event information
-- To turn off the tracing:
exec sys.dbms_support.stop_trace;
-- To include Wait Event data with SQL trace (default option)
exec sys.dbms_support.start_trace;
-- To include Bind variable values, Wait Event data with SQL trace
exec sys.dbms_support.start_trace(waits => TRUE, binds=> TRUE)
-- Run your SQL script or program to trace wait event information
-- To turn off the tracing:
exec sys.dbms_support.stop_trace;
這個包可以透過執行 dbmssupp.sql 和 prvtsupp.plb 兩個指令碼來建立. 該指令碼位於$ORACLE_HOME/rdbms/admin目錄下
SQL> conn / as sysdba
已連線。
SQL> @?/rdbms/admin/dbmssupp.sql
已連線。
SQL> @?/rdbms/admin/dbmssupp.sql
程式包已建立。
程式包體已建立。
SQL> @?/rdbms/admin/prvtsupp.plb
程式包體已建立。
SQL> SELECT DBMS_SUPPORT.MYSID from DUAL;
MYSID
----------
143
----------
143
如何跟蹤其他人的會話
如果你不能確信引數TIMED_STATISTICS和MAX_DUMP_FILE_SIZE是否對你想跟蹤的會話設定合適,你應該從V$SESSION得到SID和它的序列號(SERIAL#)。在開啟trace之前,你然後能做以下過程來合適得設定這些引數。
-- Set TIME_STATISTICS to TRUE for SID 1234, Serial# 56789
exec sys.dbms_system.set_bool_param_in_session( -
sid => 1234, -
serial# => 56789, -
parnam => 'TIMED_STATISTICS', -
bval => true);
-- Set MAX_DUMP_FILE_SIZE to 2147483647
-- for SID 1234, Serial# 56789
exec sys.dbms_system.set_int_param_in_session( -
sid => 1234, -
serial# => 56789, -
parnam => 'MAX_DUMP_FILE_SIZE', -
intval => 2147483647);
如果這些過程不能用於你的oracle版本(Oracle版本8.1.5和以下),你能使用ALTER SYSTEM SET
接下來的步驟是在其他會話中去開啟trace,然後在你已經收集足夠的trace資訊之後關閉它。你能使用以下方法之一來處理:
方法1 使用DBMS_SUPPORT包過程
-- Enable 'level 12' trace in session 1234 with serial# 56789
exec dbms_support.start_trace_in_session( -
sid => 1234, -
serial# => 56789, -
waits => true, -
binds => true);
方法1 使用DBMS_SUPPORT包過程
-- Enable 'level 12' trace in session 1234 with serial# 56789
exec dbms_support.start_trace_in_session( -
sid => 1234, -
serial# => 56789, -
waits => true, -
binds => true);
-- Let the session execute SQL script or
-- program for some amount of time
-- program for some amount of time
-- To turn off the tracing:
exec dbms_support.stop_trace_in_session( -
sid => 1234, -
serial# => 56789);
exec dbms_support.stop_trace_in_session( -
sid => 1234, -
serial# => 56789);
2. 方法2 使用dbm_system
- Enable trace at level 8 for session 1234 with serial# 56789
execute dbms_system.set_ev( 1234, 56789, 10046, 8, '');
execute dbms_system.set_ev( 1234, 56789, 10046, 8, '');
-- Let the session execute SQL script or
-- program for some amount of time
-- program for some amount of time
-- To turn off the tracing:
execute dbms_system.set_ev( 1234, 56789, 10046, 0, '');
execute dbms_system.set_ev( 1234, 56789, 10046, 0, '');
3.方法3 使用oradebug工具。你需要知道會話的OS程式ID(SPID)或Oracle程式ID(PID)。你能檢視他們在v$process檢視。假設你知道你想跟蹤的使用者名稱:
select s.username,
p.spid os_process_id,
p.pid oracle_process_id
from v$session s, v$process p
where s.paddr = p.addr
and s.username = upper('&user_name');
select s.username,
p.spid os_process_id,
p.pid oracle_process_id
from v$session s, v$process p
where s.paddr = p.addr
and s.username = upper('&user_name');
現在使用SQL*Plus以sysdba連線併發出以下命令:
alter system set timed_statistics=true;
oradebug setospid 12345;
--12345 是會話的OS程式id
Oradebug unlimit;
Oradebug event 10046 trace name context forever ,level 8;
--讓會話執行SQL指令碼或程式一段時間
--關閉trace
Oradebug event 10046 trace name context off;
alter system set timed_statistics=true;
oradebug setospid 12345;
--12345 是會話的OS程式id
Oradebug unlimit;
Oradebug event 10046 trace name context forever ,level 8;
--讓會話執行SQL指令碼或程式一段時間
--關閉trace
Oradebug event 10046 trace name context off;
在ORACLE10g1版本中,你能使用DBMS_MONITOR包過程來開啟基於SID,服務名,模組,或動作來跟蹤。基於動作的跟蹤使dba能跟蹤一個指定的商業功能。這是一個捕捉:過程要求DBA知道模組和動作名。
使用DBMS_MONITOR包來啟動對會話1234和serial#56789如下:
execute dbms_monitor.session_trace_enable(1234,56789,true,true);
-- Let the session execute SQL script or
-- program for some amount of time
execute dbms_monitor.session_trace_enable(1234,56789,true,true);
-- Let the session execute SQL script or
-- program for some amount of time
-- To turn off the tracing:
execute dbms_monitor.session_trace_disable(1234, 56789);
execute dbms_monitor.session_trace_disable(1234, 56789);
這些過程很像來自DBMS_SUPPORT包。我們推薦你在oracle10g版本1中使用DBMS_MONITOR包。
使用DBMS_MONITOR包用於服務,模組,和基於動作的跟蹤。
--開啟級別12跟蹤已知服務,模組,和動作
execute dbms_monitor.serv_mod_act_trace_enable(
'APPS1','GLEDGER','DEBIT_ENTRY',TRUE,TRUE,NULL);
--執行sql指令碼或程式一段時間
--關閉tracing
Execute dbms_monitor.serv_mod_act_trace_disable(
'APPS1','GLEDGER','DEBIT_ENTRY');
--開啟級別12跟蹤已知服務,模組,和動作
execute dbms_monitor.serv_mod_act_trace_enable(
'APPS1','GLEDGER','DEBIT_ENTRY',TRUE,TRUE,NULL);
--執行sql指令碼或程式一段時間
--關閉tracing
Execute dbms_monitor.serv_mod_act_trace_disable(
'APPS1','GLEDGER','DEBIT_ENTRY');
怎樣找到你的trace檔案
使用者會話的跟蹤檔案將被寫到USER_DUMP_DEST目錄,而後臺程式的跟蹤檔案將被寫到BACKGROUND_DUMP_DEST目錄。跟蹤檔案命名在許多平臺上包含.trc或TRC副檔名。
使用者會話的跟蹤檔案將被寫到USER_DUMP_DEST目錄,而後臺程式的跟蹤檔案將被寫到BACKGROUND_DUMP_DEST目錄。跟蹤檔案命名在許多平臺上包含.trc或TRC副檔名。
使用oradebug trace工具,找到你的跟蹤檔案是較容易的,因為專用服務的SPID數字也被寫到trace檔案。另外,你也能得到真正的跟蹤檔名如下:
SQL> oradebug setmypid
Statement processed.
SQL> oradebug event 10046 trace name context forever,level 8
Statement processed.
SQL> oradebug tracefile_name
d:oracleadminor92udumpor92_ora_171.trc
從Oracle8.1.7開始,你能為你會話設定TRACEFILE_IDENTIFIER引數,使用ALTER SESSION命令,如下顯示:
alter session set tracefile_identifier='MyTrace';
SQL> oradebug setmypid
Statement processed.
SQL> oradebug event 10046 trace name context forever,level 8
Statement processed.
SQL> oradebug tracefile_name
d:oracleadminor92udumpor92_ora_171.trc
從Oracle8.1.7開始,你能為你會話設定TRACEFILE_IDENTIFIER引數,使用ALTER SESSION命令,如下顯示:
alter session set tracefile_identifier='MyTrace';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-988550/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- event 10046等的設定
- 設定10046跟蹤處理資料庫不能open一例資料庫
- oracle sql跟蹤 event 10046 - 轉OracleSQL
- ORACLE 10046 設定跟蹤事件後無跟蹤檔案Oracle事件
- [Q]如果設定自動跟蹤 zt
- 使用10046 event trace跟蹤全表掃描操作
- Oracle 10046跟蹤的使用Oracle
- 【TRACE】如果通過10046跟蹤資料庫效能問題資料庫
- 使用10046跟蹤Oracle前映象資料讀Oracle
- Oracle資料庫跟蹤SQLOracle資料庫SQL
- sql server跟蹤資料庫SQLServer資料庫
- 資料庫資料跟蹤記錄資料庫
- [zt] oracle跟蹤檔案與跟蹤事件Oracle事件
- oracle跟蹤檔案與跟蹤事件(zt)Oracle事件
- oracle跟蹤檔案和跟蹤事件(zt)Oracle事件
- zt_使用10203事件event跟蹤Oracle塊清除事件Oracle
- 對使用dblink的10046事件跟蹤事件
- 10046 跟蹤其他會話會話
- Oracle 跟蹤事件 set eventOracle事件
- 新增時--sqlserver資料庫跟蹤SQLServer資料庫
- 使用oracle的10046事件跟蹤SQL語句Oracle事件SQL
- (zt) 開啟事件跟蹤事件
- 10046事件跟蹤會話sql事件會話SQL
- 使用10046跟蹤sql語句SQL
- Oracle中開啟trace 10046 event 的各種方法[zt]Oracle
- 設定Event事件來追蹤Trace事件
- 10046 跟蹤的trace檔案相關解釋
- 啟用跟蹤事件10046---06事件
- 跟蹤SQL - SQL Trace 及 10046 事件SQL事件
- [zt]Oracle跟蹤事件 - set eventsOracle事件
- 檢查資料庫是否啟用了跟蹤資料庫
- 設定跟蹤事件不起作用。事件
- SQL效能的度量 - 利用10046事件擴充套件SQL跟蹤SQL事件套件
- SYBASE資料庫dbcc命令詳解(zt)資料庫
- 使用10046事件跟蹤分析執行計劃事件
- 使用10046事件 +10704事件對索引線上重建的跟蹤事件索引
- 跟蹤執行命令T
- 【Database】AIX系統下跟蹤開銷大的Oracle資料庫程式DatabaseAIOracle資料庫