Oracleデータベースでは、ユーザーアカウントのパスワードに有効期限が設定されています。これは本番環境でのセキュリティ対策として有効ですが、開発や検証環境では頻繁なパスワード変更が煩雑なケースもあります。
本記事では、Oracleにおいてパスワードの有効期限を無制限に設定する方法について、実行例を交えてわかりやすく解説します。
1. パスワード期限のデフォルト設定を確認する
Oracleでは、ユーザーアカウント作成時に「プロファイル(PROFILE)」が適用され、その中でパスワードポリシーが定義されています。
現在のプロファイル設定を確認するには以下のSQLを実行します。
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name = 'PASSWORD_LIFE_TIME';
多くのケースで「DEFAULT」プロファイルに「180」などの値が設定されており、これは180日後にパスワード期限切れになることを意味します。
2. パスワードの有効期限を無制限に変更する方法
パスワード有効期限を無制限にするには、対象プロファイルのPASSWORD_LIFE_TIME
をUNLIMITED
に変更します。
例:DEFAULTプロファイルの期限を無制限にする
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
この設定を行うと、今後作成されるユーザーアカウント、あるいは既にこのプロファイルを使用しているユーザーのパスワードが期限切れにならなくなります。
3. プロファイルごとの設定を変更する場合
特定のプロファイル(例:DEV_PROFILE)に対してのみ適用したい場合は、以下のように変更します。
ALTER PROFILE DEV_PROFILE LIMIT PASSWORD_LIFE_TIME UNLIMITED;
そしてユーザーにプロファイルを適用します。
ALTER USER dev_user PROFILE DEV_PROFILE;
4. 既に期限切れのアカウントの対応
パスワードの有効期限が切れてしまったユーザーは、ログイン時に変更を求められるか、接続できなくなります。期限切れをリセットするには、パスワードの再設定が必要です。
ALTER USER dev_user IDENTIFIED BY new_password;
プロファイル設定を無制限に変更した後でこのコマンドを実行すると、再度期限切れになることはありません。
5. 現在のパスワード期限を確認する方法
各ユーザーのパスワード期限は、DBA_USERS
ビューで確認できます。
SELECT username, account_status, expiry_date
FROM dba_users
WHERE username = 'DEV_USER';
EXPIRY_DATE
列がNULLであれば、パスワード期限は無制限です。
まとめ
開発や検証環境においては、パスワード期限の制約が障害になることがあります。以下のポイントを押さえて適切に設定を見直しましょう。
- DEFAULTプロファイルのPASSWORD_LIFE_TIMEをUNLIMITEDに設定
- 必要に応じて専用プロファイルを作成・適用
- 既存ユーザーのパスワードを再設定して反映
ただし、本番環境ではパスワード有効期限を有効にしておくことが推奨されます。開発・検証と本番で運用方針を分けて管理することが重要です。