ハマログ

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

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   2013年6月10日


関連記事

よく知られているプログラミングの命名法

システムを複数人で開発するときに、記法や単位を一定のルールで統一します。 これを…

PHPとGmail APIでメールを取得する

はじめに システムのエラー通知をGmailに送ったあと、PHPのプログラムでメー…

MySQLのデータベースの容量を調べる

こんにちは、かねこです。 ブログ更新当番の今日は、エンジニアっぽいエントリーを書…


← 前の投稿

次の投稿 →