ハマログ

株式会社イーツー・インフォの社員ブログ

ORA-28001 the password has expiredとの戦い

こんにちは、かねこです。

ローカルのOracleが突然起動しなくなりました。

エラーメッセージはORA-28001 the password has expired.

Caused by: java.sql.SQLException: 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ユーザーで該当ユーザのパスワード変更

alter user [ユーザー名] identified by [パスワード];

これで再度接続・・・と思ったらまだ繋がらず。
どうやらアカウントロックされているらしい。

ということで、ロック解除します。

alter user [ユーザー名] account unlock;

 
これで解決しました。ビビった(゚д゚)!

パスワード有効期限の確認と変更

パスワード変更期限が標準で180日となっていますが、実際はシステム運用ポリシーにより様々です。また、ローカル開発環境では厳密な運用管理が求められず、期限が必要ない場合もあります。

まず、該当ユーザのパスワード有効期限を確認してみます。
dba_usersテーブルを参照。

select * from dba_users where username = ‘HR’;

 
結果

USERNAME PROFILE
HR DEFAULT

PROFILEがDEFAULTになっていることがわかりました。
続いて、dba_profilesテーブルのPASSWORD_LIFE_TIMEを確認します。

select * from dba_profiles where resource_name = ‘PASSWORD_LIFE_TIME’;

 
結果

PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180

LIMITが180になっています。
この値を変更することで、有効期限を増減することができます。また、有効期限を無くしたい場合は、値にUNLIMITEDを指定します。

Oracle SQL Developerでの対応

ユーザの編集でパスワード変更&アカウントロック解除します。

20140507 091410

かねこ

11gOraORA-28001Oraclepasswordセキュリティパスワード有効期限

kaneko tomo   kaneko tomo   2013年6月10日


関連記事

Laravelのパンくずリスト(Breadcrumb)の実装(リンクとJSON-LD)

Laravelのパンくずリストを実装します(ついでにJSON-LDも出力します)…

CloudFrontの署名付きURLをためす(with PHP)

はじめに CloudFrontの署名付きURLを試す機会があったのでやってみまし…

phpMyAdminでDBをインポートしたら画面が真っ白に!!

ローカル環境の「xampp for windows1.8.3」「phpMyadm…


← 前の投稿

次の投稿 →