状況
A5SQLを使ってローカルでOracleにsystemユーザで接続しようとしたら突然ORA-28001:the password has expired
というエラーが発生してログインできない。
原因
Oracle10gまではユーザのパスワードの有効期限はデフォルトで無期限であったものが、Oracle11gからはデフォルトで180日に設定されているため、180日たったときに起きてしまうというもの。
因みにバージョンの確認は下記で可能。
SELECT * FROM V$VERSION;
やはり11g。
↓参考
結論
結論としてはそのユーザのパスワードを変更すればよい。
また、有効期限を無期限にすればこのエラーはもう出る事はない。
方法
コマンドプロンプトを開き、下記を実行。
ここのパスワードは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