跟蹤使用者的SQL
在Oracle中做SQL跟蹤,估計大部分都會用sqlplus中的autotrace或者設定10046跟蹤。但是,如果是除錯某個應用系統的話,特別是開啟了連線池的系統,靠以上兩種方法基本上就歇菜了。還是SQL Server的SQL Server Profiler好啊。
最近在看馮大輝翻譯的《Oracle效能診斷藝術》,發現一個很好的技巧,思路是建一個Logon,現摘錄如下(稍作了一個修改):
create role trace_10046_role;
CREATE OR REPLACE TRIGGER SYS.set_10046_trace_on_logon
AFTER LOGON ON DATABASE
BEGIN
if ( dbms_session.is_role_enabled('trace_10046_role') and user not in ('SYS','SYSTEM') ) then
EXECUTE IMMEDIATE 'alter session set statistics_level=ALL';
EXECUTE IMMEDIATE 'alter session set max_dump_file_size=UNLIMITED';
EXECUTE IMMEDIATE 'alter session set tracefile_identifier='''||user||'_10046''';
EXECUTE IMMEDIATE 'alter session set events ''10046 trace name context forever, level 12''';
end if;
END set_10046_trace_on_logon;啟用和禁用對系統進行做10046跟蹤SQL:
SQL> show user;
USER is "SYS"
SQL> grant trace_10046_role to cms_text;
SQL> select * from dba_ROLE_PRIVS where granted_role='TRACE_10046_ROLE';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SYS TRACE_10046_ROLE YES YES
CMS_TEXT TRACE_10046_ROLE NO YES
Grant succeeded.
SQL> revoke trace_10046_role from cms_text;
SQL> select * from dba_ROLE_PRIVS where granted_role='TRACE_10046_ROLE';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SYS TRACE_10046_ROLE YES YES其實就是將 trace_10046_role grant/revoke 給相應的使用者。
當具有 trace_10046_role 角色的使用者登入後在udump下就會出現相應的trc檔案:
[oracle@test-server udump]$ pwd
/u01/app/admin/ora8i/udump
[oracle@test-server udump]$ ls
ora8i_ora_8259_CMS_TEXT_10046.trc
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16978544/viewspace-691844/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 的跟蹤方法traceSQL
- oracle 使用者跟蹤 需要的sql語句總結OracleSQL
- 跟蹤 sql 的trace檔案SQL
- SQLServer進行SQL跟蹤SQLServer
- 會話級SQL跟蹤會話SQL
- Oracle 跟蹤全部使用者Oracle
- oracle 跟蹤其他使用者Oracle
- Oracle資料庫跟蹤SQLOracle資料庫SQL
- phalcon:跟蹤sql語句SQL
- sql server跟蹤資料庫SQLServer資料庫
- SQL跟蹤工具和TKPROF使用SQL
- sql_trace跟蹤工具(轉)SQL
- 跟蹤客戶端執行的SQL客戶端SQL
- 使用sqltrace跟蹤session執行的sqlSQLSession
- 啟用使用者程式跟蹤
- 跟蹤SQL - SQL Trace 及 10046 事件SQL事件
- SQL效能的度量 - 語句級別的SQL跟蹤autotraceSQL
- SQL 跟蹤方法相關介紹SQL
- sql_trace 和 events 跟蹤事件SQL事件
- SQL SERVER 跟蹤標記總結SQLServer
- sqlplus 跟蹤sql語句SQL
- mysql如何跟蹤執行的sql語句MySql
- SQL效能的度量 - 會話級別的SQL跟蹤sql_traceSQL會話
- Oracle SQL 跟蹤 --- dbms_system.set_sql_trace_in_sessionOracleSQLSession
- 如何收集Oracle程式中的SQL跟蹤資訊KUOracleSQL
- 防止SQL SERVER的事件探查器跟蹤軟體SQLServer事件
- 10046事件跟蹤會話sql事件會話SQL
- oracle sql跟蹤 event 10046 - 轉OracleSQL
- ORACLE開啟自動跟蹤SQL 功能。OracleSQL
- 使用10046跟蹤sql語句SQL
- 收集 SQL Server 事件探查器跟蹤資訊SQLServer事件
- oracle 跟蹤當前使用者會話Oracle會話
- 使用oracle的10046事件跟蹤SQL語句Oracle事件SQL
- SQL效能的度量 - 利用10046事件擴充套件SQL跟蹤SQL事件套件
- 跟蹤某一會話發出的 sql 的方法來優化SQL會話SQL優化
- 用SQL Server事件探查器Profiler建立跟蹤SQLServer事件
- [zt] oracle跟蹤檔案與跟蹤事件Oracle事件
- oracle跟蹤檔案與跟蹤事件(zt)Oracle事件