Oracle

是否可以記錄會話執行的所有 SQL?

  • February 9, 2022

有一個 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 語句。

小心,您的審核日誌可能會很快填滿。

引用自:https://dba.stackexchange.com/questions/109180