Oracle
是否可以記錄會話執行的所有 SQL?
有一個 Web 應用程序通過 JDBC 連接到我的 Oracle 數據庫伺服器。
當使用者對該 Web 應用程序執行某些操作時,我想知道哪些 SQL 語句已送出到數據庫。這可能嗎?
您可以找到在 sys.v 中執行的所有 SQL $ sqltext view. Together with the sys.v $ 會話視圖你可以看到誰執行了它。這是你想要的?
否則,請檢查您是否可以從應用程序中獲取資訊。看看您是否可以更改訪問數據庫的類的日誌級別。
聽起來你需要審計。檢查 audit_trail 參數。
show parameter audit_trail
空值表示審核已關閉。您需要 DB_EXTENDED 來擷取綁定變數和 sql 語句。
alter system set audit_trail = db,extended scope=spfile;
在審計開始之前,您需要重新啟動數據庫。這將啟用 SQL_BIND 和 SQL_TEXT 列。
要審核使用者的會話,請執行以下操作:
SQL> AUDIT session BY scott;
DBA_AUDIT_TRAIL 將具有審計記錄。SQL_TEXT 列將包含使用者執行的 sql 語句。
小心,您的審核日誌可能會很快填滿。