ORA-28001 the password has expiredとの戦い
こんにちは、かねこです。
ローカルのOracleが突然起動しなくなりました。
エラーメッセージはORA-28001 the password has expired.
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
….
そういえば、11gからデフォルトで、パスワードが180日期限切れになるんだった!
Oracleさんあんまりやで(T_T)
対策
Systemユーザーで該当ユーザのパスワード変更
これで再度接続・・・と思ったらまだ繋がらず。
どうやらアカウントロックされているらしい。
ということで、ロック解除します。
これで解決しました。ビビった(゚д゚)!
パスワード有効期限の確認と変更
パスワード変更期限が標準で180日となっていますが、実際はシステム運用ポリシーにより様々です。また、ローカル開発環境では厳密な運用管理が求められず、期限が必要ない場合もあります。
まず、該当ユーザのパスワード有効期限を確認してみます。
dba_usersテーブルを参照。
結果
USERNAME | PROFILE |
---|---|
HR | DEFAULT |
PROFILEがDEFAULTになっていることがわかりました。
続いて、dba_profilesテーブルのPASSWORD_LIFE_TIMEを確認します。
結果
PROFILE | RESOURCE_NAME | RESOURCE_TYPE | LIMIT |
---|---|---|---|
DEFAULT | PASSWORD_LIFE_TIME | PASSWORD | 180 |
LIMITが180になっています。
この値を変更することで、有効期限を増減することができます。また、有効期限を無くしたい場合は、値にUNLIMITEDを指定します。
Oracle SQL Developerでの対応
ユーザの編集でパスワード変更&アカウントロック解除します。
かねこ