|
もんじゅ会議室 >
せんちゃん専用掲示板 >
|
|
(回答先: 第8回 Redoログファイル 投稿者 とく 日時 2003 年 9 月 22 日 12:52:46)
第10回 プロファイル (パスワード・セキュリティとリソースの管理)
http://www.seshop.com/se/edu/shikaku/omo/miti/miti_gold10.asp?educat=gold2
「表領域とデータファイル」「Redoログファイル」「制御ファイル」とDBAの王道(?)
が続きましたので、たまには、ちょと雰囲気の違う話にしましょう。「プロファイル」
ってわかりますか?実務優先でOracleに関わってきた方は、結構ユーザー作成回りの
“ネタ”は苦手なんですよね。ユーザー作成って毎日行う作業ではありませんから。
「むか〜し1回行ったことがあるけど、権限とかロールってあんまり気にしないんで
すよね。アプリケーションで全部コントロールしてるから・・・」と言い訳(?!)して
いる方を何人か知っていますよ。では、ユーザーを作成し、データベースに接続でき
る権限を与えます。ここまでは、Silver取得のために勉強しましたね。
SQL> CREATE USER hayashi
2 IDENTIFIED BY oracle;
ユーザーが作成されました。
SQL> GRANT create session TO hayashi;
権限付与が成功しました。
ところで、このユーザーを使って同時に何人データベースに接続できるのでしょう?
また、exitしないで3日間接続したまま・・・という利用の仕方はできるのでしょうか?
本当にそのような利用が必要なら仕方がありませんが、「さあ、データベースを停止
してバックアップを行うぞ!」と、思ったらexitし忘れたままのセッションがネット
ワーク上のどこかにいるからNORMAL SHUTDOWNできない。という事態が発生するのも
困ったものです。(もちろん、そんな時はV$SESSIONで調べて、KILL SESSIONして・・・
という方法があったことも思い出しておいてください。)
そこで、「セッション毎の接続経過時間:CONNECT_TIME」や「非アクティブ状態時間
:IDLE_TIME」(接続しているけれどSQL文を発行しなければデータベースとのやり取
りは発生していませんからね。)、「CPU時間の合計:CPU_PER_SESSION / CPU_PER_C
ALL」「ユーザー毎の同時実行セッション数:SESSION_PER_USER」を制限することが
できるのがプロファイルです。
1時間以上接続しっぱなしは許さないぞ!と、思えばCONNECT_TIME 60と定義します。
「定義」といえば、CREATE・・・では、お勉強用に作成したユーザーたちのためにeduc
という名前のプロファイルを作ってみましょう。
SQL> CREATE PROFILE educ LIMIT
2 SESSIONS_PER_USER 1
3 CONNECT_TIME 60
4 IDLE_TIME 30;
プロファイルが作成されました。
さて、これだけでいいのでしょうか?
educプロファイルは作りましたが、これだけでは、systemユーザーは今まで通り無制
限、お勉強用に作成したhayashiユーザーはeducプロファイルの制限に従う・・・と、強
制はできませんよね。そうです!プロファイルは、ユーザー毎に割当てを変えたいの
です。ということは、「educプロファイルをユーザーに割当てたい。」といわれたら、
ALTER USERまたはCREATE USER文を使用するのです。
プロファイルの割当ては現在接続中のセッションには影響しません。これ以降のセッ
ションに対して有効です。さらに注意事項があります。
プロファイルには、今お話をしたCPU時間など「@ リソースの使用を制限する」こと
と「A パスワードを管理する」ことができます。「@ リソースの使用を制限する」
ためには、初期化パラメータのRESOURCE_LIMITをTRUEにしてデータベースの再起動を
する必要があります。あるいは、ALTER SYSTEM文でTRUEに設定しても構いません。こ
のパラメータの変更を忘れないで下さい。
さて、「A パスワードを管理する」とは、どんなことができるのでしょう?皆さん
は、OSにログインする時、Oracleに接続する時・・・パスワードを入力されると思いま
すが、まめに変更していますか?えっ私?最近物忘れが激しいから、忘れないように
ずっ〜と同じパスワードをどこでも使用しています。えっ?危険じゃないかって?は
い、そのとおりだと思います。
そこで、「パスワードの有効日数:PASSWORD_LIFE_TIME」、「パスワードを再使用で
きるようになるまでの日数:PASSWORD_REUSE_TIME」、「パスワードを再使用できる
ようになるまでの変更回数:PASSWORD_REUSE_MAX」などを設定することができます。
せっかく、パスワードの有効日数をきめて変更を促しても、また同じパスワードを設
定したのでは有効日数を設けた意味がありませんからね。私のような無精者がいるこ
とをよくわかっているのです。先程、作成したeducプロファイルをディクショナリで
確認してみましょう。
SQL> select * from dba_profiles
2 where profile = 'EDUC';
PROFILE RESOURCE_NAME RESOURCE LIMIT
---------- -------------------------- ----------- -------
EDUC COMPOSITE_LIMIT KERNEL DEFAULT
EDUC SESSIONS_PER_USER KERNEL 1
EDUC CPU_PER_SESSION KERNEL DEFAULT
EDUC CPU_PER_CALL KERNEL DEFAULT
EDUC LOGICAL_READS_PER_SESSION KERNEL DEFAULT
EDUC LOGICAL_READS_PER_CALL KERNEL DEFAULT
EDUC IDLE_TIME KERNEL 30
EDUC CONNECT_TIME KERNEL 60
EDUC PRIVATE_SGA KERNEL DEFAULT
EDUC FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
EDUC PASSWORD_LIFE_TIME PASSWORD DEFAULT
EDUC PASSWORD_REUSE_TIME PASSWORD DEFAULT
EDUC PASSWORD_REUSE_MAX PASSWORD DEFAULT
EDUC PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
EDUC PASSWORD_LOCK_TIME PASSWORD DEFAULT
EDUC PASSWORD_GRACE_TIME PASSWORD DEFAULT
16行が選択されました。
では、educプロファイルにパスワードの有効日数は90と設定しましょう。
SQL> ALTER PROFILE educ LIMIT
2 PASSWORD_LIFE_TIME 90;
プロファイルが変更されました。
SQL> select * from dba_profiles
2 where profile = 'EDUC'
3 and resource_type = 'PASSWORD';
PROFILE RESOURCE_NAME RESOURCE LIMIT
-------- ------------------------- ---------- ----------
EDUC FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
EDUC PASSWORD_LIFE_TIME PASSWORD 90
EDUC PASSWORD_REUSE_TIME PASSWORD DEFAULT
EDUC PASSWORD_REUSE_MAX PASSWORD DEFAULT
EDUC PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
EDUC PASSWORD_LOCK_TIME PASSWORD DEFAULT
EDUC PASSWORD_GRACE_TIME PASSWORD DEFAULT
7行が選択されました。
プロファイルはおわかりいただけましたか?
今回出てこなかったリソースの名前もちゃんと覚えておいてくださいね。
ユーサー作成、権限、ロールにまで話しはおよびませんでしたが、Silver取得の時に
覚えたことを復習しておいてください。次のDBA講座で取り上げて欲しいカテゴリが
ありましたら、info@oracle-master.org までご連絡ください。では、頑張ってくだ
さいね!