使用DBMS_SUPPORT包
?
??? 原本是想找個簡單的放來,來確定當前session的SID號的,在網上就發現了這個Package,感覺還不錯,不但可以以最簡單的方式得到SID,而且還可以對當前session進行Trace,包小但是很實用。唯一的缺點是這個包需要自己進行編譯才可以,比較麻煩。下面轉篇文章簡單介紹一下。
------------------------------------------------------------------------------------
?
使用DBMS_SUPPORT包
?
作者:
eygle
|
English Version
【轉載時請以超鏈接形式標明文章
出處
和作者信息及
本聲明
】
鏈接:
http://www.eygle.com/archives/2004/06/dbms_support.html
?
DBMS_SUPPORT包從Oracle7.2引入,主要功能用以提供更完整的用戶session跟蹤信息
這個包可以通過運行 dbmssupp.sql 和 prvtsupp.plb 兩個腳本來創建.
該腳本位于$ORACLE_HOME/rdbms/admin目錄下
以下版本中都包含這些文件:
8.0.6, 8.1.7, 9.0.1, 9.2.0 and above
1.創建DBMS_SUPPORT Package
SQL> @?/rdbms/admin/dbmssupp.sql
Package created.
Package body created.
SQL> @?/rdbms/admin/prvtsupp.plb
Package body created.
|
2.主要函數及過程
SQL> desc dbms_support
FUNCTION MYSID RETURNS NUMBER
FUNCTION PACKAGE_VERSION RETURNS VARCHAR2
PROCEDURE START_TRACE Argument Name????????????????? Type??????????????????? In/Out Default? ------------------------------ ----------------------- ------ -------- WAITS????????????????????????? BOOLEAN???????????????? IN???? DEFAULT BINDS????????????????????????? BOOLEAN???????????????? IN???? DEFAULT
PROCEDURE START_TRACE_IN_SESSION Argument Name????????????????? Type??????????????????? In/Out Default? ------------------------------ ----------------------- ------ -------- SID??????????????????????????? NUMBER????????????????? IN SERIAL???????????????????????? NUMBER????????????????? IN WAITS????????????????????????? BOOLEAN???????????????? IN???? DEFAULT BINDS????????????????????????? BOOLEAN???????????????? IN???? DEFAULT
PROCEDURE STOP_TRACE
PROCEDURE STOP_TRACE_IN_SESSION Argument Name????????????????? Type??????????????????? In/Out Default? ------------------------------ ----------------------- ------ -------- SID??????????????????????????? NUMBER????????????????? IN SERIAL???????????????????????? NUMBER????????????????? IN
|
3.簡單用法
SQL> SELECT DBMS_SUPPORT.MYSID from DUAL;
MYSID ---------- 8
SQL> select dbms_support.PACKAGE_VERSION from dual;
PACKAGE_VERSION -------------------------------------------------------------------------------- DBMS_SUPPORT Version 1.0 (17-Aug-1998) - Requires Oracle 7.2 - 8.0.5
?
|
4.進程跟蹤(跟蹤當前session及其他session)
SQL> exec dbms_support.start_trace
PL/SQL procedure successfully completed.
SQL> select count(*) from dba_users;
COUNT(*) ---------- 34
SQL> exec dbms_support.stop_trace;
PL/SQL procedure successfully completed.
SQL> select sid,serial#,username from v$session 2 /
SID ?????? SERIAL# ?? USERNAME ---------- ---------- ------------------------------ 1 ???????? 1 2 ???????? 1 3 ???????? 1 4 ???????? 1 5 ???????? 1 6 ???????? 1 7 ???????? 1 8 ???????? 764 ?????? SYS
8 rows selected.
SQL> exec dbms_support.start_trace_in_session(4,1);
PL/SQL procedure successfully completed.
SQL> exec dbms_support.stop_trace_in_session(4,1);
PL/SQL procedure successfully completed.
?
|
5.Trace文件
以上跟蹤生成的Trace文件可以在udump目錄下找到.
SQL> show parameter user_dump
NAME ??????????????? TYPE ?????? VALUE -------------------- ----------- --------------------------------- user_dump_dest ????? string ???? /opt/oracle/admin/hsjf/udump
?
|
?
?