背景
最近のOracleではユーザのパスワードの有効期限がデフォルトで設定されるようになっているため、それに気づかず運用していると、突如ユーザがログインできなくなるとか、アプリケーションサーバの起動に失敗するなどの災難に見舞われることになります。
有効期限が切れたユーザを復活させるには、パスワードの再設定が必要なのですが、諸々の理由でパスワードは変更したくないのだけれど、前のパスワードがわからない場合の解決策です。
パスワードハッシュでのパスワード変更
DBに格納されているパスワードハッシュの値を指定して、パスワードを変更すればOKです。
パスワードハッシュの取得
select spare4 from sys.user$ where name='<username>';
パスワードの変更
alter user <username> identified by values '<上記で取得したパスワードハッシュ値>';