我們正在尋找一種方法來記錄對Oracle中存儲過程的任何調用,並查看哪些參數值用於調用。如何使用參數值記錄/跟蹤Oracle存儲過程調用?
我們使用Oracle 10.2.0.1
我們可以登錄SQL語句,看到了約束變量,但是當我們跟蹤的存儲過程,我們看到綁定變量B1,B2等,但沒有值。
我們希望看到我們在MS SQL Server Profiler中看到的同類信息。
感謝所有幫助
我們正在尋找一種方法來記錄對Oracle中存儲過程的任何調用,並查看哪些參數值用於調用。如何使用參數值記錄/跟蹤Oracle存儲過程調用?
我們使用Oracle 10.2.0.1
我們可以登錄SQL語句,看到了約束變量,但是當我們跟蹤的存儲過程,我們看到綁定變量B1,B2等,但沒有值。
我們希望看到我們在MS SQL Server Profiler中看到的同類信息。
感謝所有幫助
你可以看看的DBMS_APPLICATION_INFO package。這允許你用任何你想要的信息來「測試」你的PL/SQL代碼 - 但是它確實需要增加對每個程序的調用來進行檢測。
另請參閱this AskTom thread關於使用DBMS_APPLICATION_INFO來監視PL/SQL。
我想你是用一種奇怪的方式使用「log」這個詞。
我們可以登錄SQL語句...
你真的是說你可以跟蹤使用綁定變量的SQL語句?託尼的回答是針對記錄你在做什麼的能力。這總是優於追蹤,因爲只有你知道什麼對你很重要。也許你的進程的執行很大程度上依賴於查詢表中的值。由於該值發生變化並且不作爲參數傳入,因此可能會丟失該信息。
但是如果你真的記錄你在做什麼,你可以在你的日誌表中包含該值,你不僅知道你通過的變量,而且知道關鍵值。
alter system set events'10046 trace name context forever,level 12';那是你在用什麼?
是的,我想我應該用「追蹤」一詞
我會盡力來形容我們做了什麼:
使用Enterprise Manager(如DBO)我們去參加會話,並開始一絲絲
開始跟蹤 啓用等信息,綁定信息
運行我們的應用程序,它擊中DB操作
完成跟蹤,對輸出運行此:
TKPROF .PRC output2.txt SYS =沒有記錄= record.txt講解= DBO @ DBINST/PW
什麼我們希望看到的是,「這些程序被稱爲與這些參數」我們現在得到的是:
Begin dbo.UPKG_PACKAGENAME.PROC(:v0, :v1, :v2 ...); End;
/
Begin dbo.UPKG_PACKAGENAME.PROC2(:v0, :v1, :v2 ...); End;
/
...
所以我們可以追蹤所調用的程序,但我們沒有得到實際的參數值,僅僅是:V0等。
我的理解是,我們所做的與alter system語句相同,但請告訴我們,如果情況並非如此。
感謝
你採用了10G 讓這個 EXEC dbms_monitor.session_trace_enable嘗試(SESSION_ID => XXX,SERIAL_NUM => XX,等待=>真,結合=> TRUE); 你可以得到session_id = SID & serial_num = SERIAL#from v $ session