1. 程式人生 > >Oracle:新增用戶登錄提示“ORA-04098:觸發器‘GD.ON_LOGON_TRIGGER’無效且未通過重新驗證”

Oracle:新增用戶登錄提示“ORA-04098:觸發器‘GD.ON_LOGON_TRIGGER’無效且未通過重新驗證”

begin sql dbms ont env 用戶 database 環境 objects

接著上一篇創建一個只有查看權限的用戶,在測試環境,新建賬號後嘗試登錄,提示如下:

技術分享圖片

1.看提示是base庫的觸發器有問題了,所以先定位到這個觸發器

SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE=TRIGGERand OBJECT_NAME = 
ON_LOGON_TRIGGER
;

技術分享圖片

它的狀態是無效的

2.通過pl/sql登錄base庫,查看觸發器Triggers,找到ON_LOGON_TRIGGER

技術分享圖片

這個觸發器上面有個紅色的叉號,可能需要重新編譯一下。

直接右鍵選擇Recompile,提示錯誤

技術分享圖片 技術分享圖片

為了看到錯誤詳情,在Command Window窗口重新編譯一次

技術分享圖片

錯誤出現在那個“/”

3.查看這個觸發器,右鍵選擇View

技術分享圖片

技術分享圖片

4.把觸發器刪掉,重新創建該觸發器就好了

create or replace trigger on_logon_trigger after logon on database 
begin dbms_application_info.set_client_info(sys_context(userenv, ip_address));end;

完成後再次登錄新建的用戶,發現可以正常登錄了

Oracle:新增用戶登錄提示“ORA-04098:觸發器‘GD.ON_LOGON_TRIGGER’無效且未通過重新驗證”