ORACLE 跟蹤工具
可以在init.ora中設定所需的事件,這將對所有會話期開啟的會話進行跟蹤,也可以用alter session set event 等方法設定事件跟蹤,這將開啟正在進行會話的事件跟蹤。
1、 在init.ora中設定跟蹤事件的方法
a. 語法
EVENT=”event 語法|,level n|:event 語法|,level n|…”
b. 舉例
event=”10231 trace name context forever,level 10’
c. 可以這樣設定多個事件:
EVENT="
10231 trace name context forever, level 10:
10232 trace name context forever, level 10"
2、 通過Alter session/system set events這種方法
舉個例子大家就明白了
Example:
Alter session set events ‘immediate trace name controlf level 10’;
Alter session set events ‘immediate trace name blockdump level 112511416’; (*)
在oracle8x及之上的版本也有這樣的語句:
Alter system dump datafile 13 block 15;實現的功能與(*)是類似的。
3、 使用DBMS_SYSTEM.SET_EV的方法
a. 過和定義如下
DBMS_SYSTEM.SET_EV(
SI Binary_integer,
SE Binary_integer,
EV Binary_integer,
LE Binary_integer,
NM Binary_integer);
SI: 即v$session中的sid
SE:即v$session中的serial#
EV:要設定的事件
LE:要設定事件的級別
NM:名稱
b. 舉個例子,以10046為例
SQL> EXECUTE SYS.DBMS_SYSTEM.SET_EV(sid,serial#,10046,12,'');
4、 使用Oradebug來設定診斷事件的方法
同樣舉個例子大家就明白了:
a. 找到spid
SQL>select username, sid, serial#, paddr from v$session where username='qiuyb';
USERNAME SID SERIAL# PADDR
--------------------------------------------------------
HRB3 265 910 C000000084435AD8
SQL>SELECT ADDR,PID,SPID FROM V$PROCESS WHERE ADDR= C000000084435AD8';
ADDR PID SPID
------------------------------------------
C000000084435AD8 91 4835
b. 設定事件,以10046為例
sqlplus /nolog
SQL>connect / as sysdba;
SQL>oradebug setospid 4835
SQL>oradebug unlimit --不限制轉儲檔案的大小
SQL> oradebug event 10046 trace name context forever,level 12 --設定事件進行sql跟蹤
SQL> oradebug event 10046 trace name context off --關閉跟蹤
注意不要用oradug去跟蹤oracle的smon,pmon等幾個程式,操作不當可能會殺掉這幾個後臺進和引起宕庫。
三、你可能的問題
1、 我如何知道在系統中設定了哪些event?
回答:
a. 如果你的事件是在init.ora中設定的可以用
SQL>show parameter event;
來檢視
b. Michael R.Ault給的SQL
serveroutput on size 1000000
declare
event_level number;
begin
for i in 10000..10999 loop
sys.dbms_system.read_ev(i,event_level);
if (event_level > 0) then
dbms_output.put_line('Event '||to_char(i)||' set at level '||
to_char(event_level));
end if;
end loop;
end;
/
2、 在oracle9i中使用spfile的那種如何設定診斷事件呢?
回答:
簡單,Alter system命令就可以完成
alter system set event='10046 trace name context forever, level 12' scope=spfile;
重啟一下就生效了。
3、 壞了,我的9i設定完診斷事件,起不來了,報ORA-02194錯怎麼辦?
回答:
那你一定是在使用Alter system時把某一項寫錯了,比如把context寫成了conetxt了,可以做如下的解決:
a.由spfile生成pfile
SQL>create pfile from spfile;
File created.
b.編輯pfile以修正錯誤
Change... *.event='10046 trace name conetxt forever, level 12'
-to- *.event='10046 trace name context forever, level 12'
c.用pfile啟動
SQL>startup pfile=/.....
d.重新生成 SPFILE.
SQL>create spfile from pfile;
File created.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/235507/viewspace-1170995/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [zt] oracle跟蹤檔案與跟蹤事件Oracle事件
- oracle跟蹤檔案與跟蹤事件(zt)Oracle事件
- oracle跟蹤檔案和跟蹤事件(zt)Oracle事件
- 【TRACE】Oracle跟蹤事件Oracle事件
- Oracle跟蹤會話Oracle會話
- Oracle 跟蹤事件【轉】Oracle事件
- Oracle跟蹤檔案Oracle
- 收集Oracle RAC跟蹤診斷資訊的幾個工具Oracle
- oracle session(會話) 跟蹤OracleSession會話
- Oracle跟蹤事件 -- set eventsOracle事件
- Oracle 10G 跟蹤Oracle 10g
- Oracle 跟蹤事件 set eventOracle事件
- Oracle跟蹤事件和dumpOracle事件
- oracle跟蹤事件(轉載)Oracle事件
- 路由跟蹤工具0trace路由
- SQL跟蹤工具和TKPROF使用SQL
- sql_trace跟蹤工具(轉)SQL
- ORACLE 10046 設定跟蹤事件後無跟蹤檔案Oracle事件
- Oracle資料庫跟蹤SQLOracle資料庫SQL
- 用oracle trace 來跟蹤sessionOracleSession
- oracle跟蹤事件(dump)總結Oracle事件
- Oracle 跟蹤全部使用者Oracle
- oracle 跟蹤其他使用者Oracle
- alter session set events /Oracle跟蹤SessionOracle
- [zt]Oracle跟蹤事件 - set eventsOracle事件
- Oracle跟蹤事件:set events 整理Oracle事件
- 跟蹤oracle特定報錯 errorstackOracleError
- tkprof: 分析ORACLE跟蹤檔案Oracle
- 被動路由跟蹤工具InTrace路由
- oracle跟蹤常用內部事件號Oracle事件
- 使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- Oracle 10046跟蹤的使用Oracle
- oracle 跟蹤檔案理論整理Oracle
- Oracle跟蹤檔案trace檔案Oracle
- 用oracle trace 來跟蹤session 活動OracleSession
- oracle 10g 程式跟蹤命令Oracle 10g
- 使用dtrace跟蹤oracle函式呼叫Oracle函式
- 測試跟蹤工具Bugzilla介紹