たにーの楽しい闘争

日々の気になる事を書いていきます

【Oracle】ORA-28001:the password has expiredが出た時の対処方法

状況

A5SQLを使ってローカルでOracleにsystemユーザで接続しようとしたら突然ORA-28001:the password has expiredというエラーが発生してログインできない。

原因

Oracle10gまではユーザのパスワードの有効期限はデフォルトで無期限であったものが、Oracle11gからはデフォルトで180日に設定されているため、180日たったときに起きてしまうというもの。
因みにバージョンの確認は下記で可能。

SELECT * FROM V$VERSION;  

やはり11g。

↓参考

products.sint.co.jp

結論

結論としてはそのユーザのパスワードを変更すればよい。
また、有効期限を無期限にすればこのエラーはもう出る事はない。

方法

コマンドプロンプトを開き、下記を実行。
ここのパスワードはA5でエラーが出たパスワードで問題ない。

sqlplus system/password@xe as sysdba
  • passwordの変更方法

接続できたら下記を実行

alter user system identified by newpassword

これでA5SQLでも新しいパスワードでログインする事ができる

  • passwordの有効期限を無期限にする方法

下記で有効期限を確認できる(180日になっているはず)

SELECT * FROM DBA_PROFILES
WHERE RESOURCE_NAME = 'PASSWORD_LIFE_TIME'

180日から無期限に変更する場合は、下記を実行。

alter profile default limit password_life_time unlimited

参考

http://itsoldiersakuri.hatenablog.com/entry/2015/08/31/210147