特定のユーザーをDBの利用を不可にする方法について
特定のユーザーだけをオラクルの利用不可としたいのですがどのようにしたらよいのでしょうか?
ユーザーを特定する方法はOSユーザーでの特定を考えています。
セッション情報は以下のようになりますので、OSユーザーが[USER22]だけ利用不可にしたいということです。
オラクルユーザー = AAA OSユーザー = USER11
オラクルユーザー = AAA OSユーザー = USER22
オラクルユーザー = AAA OSユーザー = USER33
既成のシステムのためプログラム修正が出来ないので、コマンドでの方法をお願いします。
困ってます
こんにちわ。
データベース・イベント・トリガーを使えば簡単に実装できますょ。
ログオン・トリガーの中で、V$session.username, v$session.osuser
を取得してそれが'AAA', 'USER22' ならraise_application_error で
例外を発生させてしまえば良い筈です。
回答ありがとございます。
返事が遅くなってしまい申し訳ありません。
教えていただいた方法でユーザーを特定することは成功しましたが、
raise_application_error による例外発生がまだ出来ません。
NO.4様の回答内容も気になるため、慎重にためしていきたいと思います。
まだ、あきらめてはいませんが、
いったん質問を締め切ろうと思います。
どうもありがとうございました。
このQ&Aは役に立ちましたか? 3人が「このQ&Aが役に立った」と投票しています
回答（4）
>よろしければ8iで別の方法があるであれば教えて下さい。
私がやったのは、ファイングレイン・アクセス・コントロール(FGAC)による
レコード開示範囲の限定です。
（所謂、バーチャルプライベートデータベース）
今回の場合、FGACを使って、セッションユーザの情報を元に、不許可の場合、
条件に「1=2」を指定することで、検索結果が常に０件にすることが可能です。
なお、r8.1.6でエンタープライズエディションであれば、FGACは利用可能です。
r8.1.6でも、＃２で書かれているログイン・イベントによるトリガー機能は
利用可能なので、今回の場合は、ログイントリガーの方が適切かも知れませんね。
ログイン・イベントによるトリガー機能で挑戦してみます。
大変、ためになりました。
実現できるとは思いますが、面倒な感じがします。
オラクルのバージョンとエディションに因るんですが、ファイングレイン・アクセス・コントロールを利用した
アクセス制御が独自ルールで実現できるので、それを利用すれば出来なくは無いかと。
（８ｉ時代に同じようなことを実験的実装したことがるので、出来るのは間違いない）
回答、ありがとうございます。
質問本文から洩れていましたが、オラクルのバージョンは8.1.6です。
よろしければ8iで別の方法があるであれば教えて下さい。
> （８ｉ時代に同じようなことを.....