ORACLE ログオントリガーで接続制限
初心者です。失礼のないように努力いたしますのでご協力お願いいたします。
ログオントリガーを使用して接続者の制限をしたいのですが正常に動作しません。
CREATE OR REPLACE TRIGGER LOGON_TRG AFTER LOGON ON DATABASE
DECLARE
STR_SCHEMANAME VARCHAR2(20);
STR_OSUSER VARCHAR2(20);
STR_PROGRAM VARCHAR2(20);
BEGIN
SELECT USERNAME,OSUSER,PROGRAM INTO STR_SCHEMANAME,STR_OSUSER,STR_PROGRAM FROM V$SESSION WHERE audsid = USERENV('SESSIONID');
IF STR_SCHEMANAME = 'SCH1' AND STR_OSUSER = 'USER1' THEN
INSERT INTO ALOG (SCHEMANAME,OSUSER,LOGIN_DAT,PROGRAM)VALUES(STR_SCHEMANAME,STR_OSUSER,TO_DATE(TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),'YYYY/MM/DD HH24:MI:SS'),STR_PROGRAM);
COMMIT;
RAISE_APPLICATION_ERROR(-20000, 'Can not login');
END IF;
END LOGON_TRG;
<説明>
スキーマ='SCH1'にOSユーザー=’USER1’が接続してきたらALOGに情報を記録して接続しない。
このトリガーはSYSで登録しています。
<結果>
スキーマ='SCH1'にOSユーザー=’USER1’で接続するとALOGに記録はするのですが、
エラーメッセージが表示されず正常に接続できてしまいます。
<質問>
○RAISE_APPLICATION_ERRORがなぜ正常に動作しないのかがわかりません。
○RAISE_APPLICATION_ERRORに権限的なものが必要なのでしょうか?
(いろいろと調べてみましたが特に権限での制限は見当たりませんでした)
何か要因に思い当たる方がいらっしゃいましたらご協力いただければと思います。
よろしくお願いいたします。