ハマログ

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

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日


関連記事

GCPでLaravelのログ監視を行う方法

GCPでアプリケーションのログに特定の文字列が出てきたら検知して通知する方法を調…

AWS CDKを使ってcurlでS3のファイルにアクセスできるFargateをつくる

最近は、ネットでにわかに流行しているOnly Up!という登山系ゲームがマイブー…

中国市場のマーケティングは微信(WeChat)(WeiXin)がないと成り立たない!

中国Tencent(騰訊)が独自で作ったWeChatというメッセージアプリで、2…


← 前の投稿

次の投稿 →