Oracle
如何解決/調試 Oracle 權限問題
一個應用程序正在連接到 Oracle 來做一些事情。它不起作用,但我在應用程序本身中沒有收到任何 ORA 錯誤。我認為這是一個許可問題。所以我的問題是檢查oracle帳戶是否嘗試執行它無權執行的操作的最佳方法是什麼?這也有助於了解它嘗試執行的操作,以便我可以授予它。
另一個選項(缺少完整審計)是針對相關架構(或整個數據庫)的 servererror 觸發器。
drop table error_log; create table error_log (error_time timestamp, username varchar(50), msg varchar(4000), stmt varchar(4000)); CREATE OR REPLACE TRIGGER servererror_trigger AFTER SERVERERROR ON SCHEMA declare sql_text ora_name_list_t; msg_ varchar2(2000) := null; stmt_ varchar2(2000) := null; begin for depth in 1 .. ora_server_error_depth loop msg_ := msg_ || ora_server_error_msg(depth); end loop; for i in 1 .. ora_sql_txt(sql_text) loop stmt_ := stmt_ || sql_text(i); end loop; insert into error_log (error_time, username, msg, stmt) values (current_timestamp, ora_login_user, msg_, stmt_); end; /
如果是針對單個架構/使用者,則需要在該使用者下創建觸發器。您還可以通過指定來擷取整個數據庫
ON DATABASE
的錯誤。在這種情況下,您需要創建該觸發器和我假設的 DBA 表(尚未嘗試過)。現在幾乎所有發生的錯誤都會被觸發器記錄下來(有關不會報告的錯誤列表,請參閱手冊:http: //docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm #LNPLS1992 )