
初心者です。失礼のないように努力いたしますのでご協力お願いいたします。
ログオントリガーを使用して接続者の制限をしたいのですが正常に動作しません。
CREATE OR REPLACE TRIGGER LOGON_TRG AFTER LOGON ON DATABASE
DECLARE
STR_SCHEMANAMEVARCHAR2(20);
STR_OSUSERVARCHAR2(20);
STR_PROGRAMVARCHAR2(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
INSERTINTOALOG (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に権限的なものが必要なのでしょうか?
(いろいろと調べてみましたが特に権限での制限は見当たりませんでした)
何か要因に思い当たる方がいらっしゃいましたらご協力いただければと思います。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
このリンク先の解説ですが、エラーを発生させて処理を中断させることが目的で、故にログオンも中断されるという理屈だけですねー。
これまずいし、ログオンとトリガーは別プロセスなので確実にログオンがキャンセルされるとは思いにくいのですが?すべてのバージョンで稼働確認しての説明なんでしょうか?
いま環境がないので試せませんが、エラー処理には例外処理をつけるのがマナーなので、例外処理の中で例外を実行させてきちんと処理を終わらせるのが正しいはずです。リンク先のは中断を目的にしてますからね。
http://www.shift-the-oracle.com/plsql/exception/ …
ここで例外を学んで、例外処理として、ログの作成、ログインの切断を入れてみてください。
まあ試しに例外を起こす前に切断させても実験にはなりますが?
No.1
- 回答日時:
記録はしているがセッションを切る処理が見つからないですが??
ログイン後のトリガーですからログインはされた後と言う意味です。ですから一度つながったセッションを切ってやる方法しかないと思いますよ。
execute immediate 'dbms_service.disconnect_session(''USER1'')';
この回答への補足
早速のご回答ありがとうございます。
↓このように記載されているため
http://www.istudy.ne.jp/training/serial/plsql/07 …
RAISE_APPLICATION_ERROR はユーザーにエラーを通知し処理終了(セッションは切れる)と
思っていたのですが、セッションを切るアクションが必要でしょうか?
ちなみに、RAISE_APPLICATION_ERROR の後に処理を加えても以降の処理はされません。
教えていただいた セッションを切るアクションはRAISE_APPLICATION_ERRORの前にしなくて
はいけないということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
teratermでLinuxに接続できません
-
マイメニューってなんですか?
-
会社PCのメールが更新されない
-
特定のサーバーにだけFTP接...
-
Windows10から11に更新しました...
-
FireFoxで○○○○への接続がタイム...
-
Windows XPでネットを見るには
-
スーパーセキュリティZEROで下...
-
ユニクロのサイトってhttps接続...
-
社内PCの監視範囲について
-
「ただし,その件は」の「ただ...
-
Tera Termを起動して新しい接続...
-
有線LANがつながってるかど...
-
某大手ゼネコンの設備担当者が...
-
内線規程 電線と機具端子との接...
-
蛍光灯安定器の絶縁測定につい...
-
IPアドレスは定期的に変わるも...
-
bebirdというイヤースコープを...
-
NTTホームゲートウェイのブリッ...
-
会社説明会に遅刻してしまいま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
会社PCのメールが更新されない
-
スーパーセキュリティZEROで下...
-
先日からDigiBestTVで「デバイ...
-
ORCADでのページ追加のやり方
-
teratermでLinuxに接続できません
-
Microsoftアカウントのサインイ...
-
マイメニューってなんですか?
-
Firefoxのグーグル検索で表示さ...
-
Windows10から11に更新しました...
-
特定のサーバーにだけFTP接...
-
realplayer (無料版)を起動...
-
ftpソフトでの送受信ができない
-
Cyberduckでエラーが出てしまう
-
承認出来なくなりました
-
友人がWINでYahoo ADSL接続した...
-
ビルダー8で、アップロードでき...
-
Win11でブラウザでのネットブラ...
-
ftpサーバに接続できない
-
IE8で最初「Internet Explorer...
-
「TeamViewer」というソフトを...
おすすめ情報