2009-07-23 137 views
0

我正在維護一個自制的基於Web的幫助臺解決方案,並且在某些情況下我們正在經歷一個db字段的錯誤更改。所涉及的代碼非常混亂,混合了不同的數據庫訪問方法(最糟糕也是最危險的方法是通過串聯構建sql字符串)。在整個解決方案中對有問題的字段進行全文搜索並沒有幫助(該字段只出現在選擇和單個合法插入中),所以我甚至找不到有問題的代碼。Oracle:跟蹤SQL語句

你知道一個快速的方式來啓用sql追蹤無論是在Asp.Net或甲骨文(8)本身? (是否有可能通過OracleConnection對象或類似的東西攔截sql命令?這將使得獲得堆棧跟蹤並找出錯誤的代碼成爲可能)。

我已經做了一些Google搜索,我發現這一個:ALTER SYSTEM SET sql_trace = true SCOPE=MEMORY;但我想知道哪個更好的方法來解決問題(也許建立一個簡單的SQL日誌記錄機制,無需重寫應用程序) 。

回答

2

啓用跟蹤是要走的路,但如果你遇到麻煩的是工作,試一試,看是否能找到在SQL_TEXT參照違規列SYS.v $ sql的列。假設該語句最近運行過了(並且執行該操作的語句時間不長,以至於您要查找的列已被截斷 - Oracle 8沒有存儲完整文本),您應該能夠找到它在那裏。 SQL不能顯示的唯一的另一種情況是,通過觸發器或存儲過程發生更改,在這種情況下,您應該能夠在ALL_SOURCES表的TEXT列中找到該列。

4
+0

謝謝,我已經通過谷歌瀏覽了orafaq頁面,我將看看其他人(第一個與「PROCEDURE DBMS ...」有關的問題似乎被破壞了:我得到了404) 。仍然在尋找更多與asp.net OracleClient相關的東西(如果存在這樣的事情)。 – Utaal 2009-07-23 01:02:05

+0

@Utaal:那個鏈接被破壞了!對不起,已更新到Oracle 8i頁面 – 2009-07-23 01:06:59