半年ほど前に導入したシステムから、以下のエラーが発生しました。
ORA-28001:パスワードが期限切れです
調べてみると、なんと Oracle は 11g になってからデフォルトで 180日になっているじゃないですか!「ORA-28001」で検索すればいくらでも情報はあるのですが、「Oracle導入時の注意点」ではちっとも見かけなかった情報でした。。。こういった勝手な仕様変更に腹が立つのは私だけでしょうか?
以下の方法で復旧しました。
1. DBサーバ上で sqlplus sys/<管理者パスワード> as sysdba で sqlplus を起動
2. 以下のコマンドを実行して該当アカウントを復旧
SQL> alter profile default limit password_life_time unlimited;
SQL> alter user <ユーザID> identified by <パスワード>;
SQL> alter user <ユーザID> account unlock;
ちなみにトラブルとなったのは JBoss サーバでしたが、この対処のみで自然と復旧することができました。また、トラブルとなったユーザ以外にも、有効期限が切れている(または切れそうな)ユーザを、以下の SQL で調査しました。
SQL> select USERNAME, ACCOUNT_STATUS, LOCK_DATE, EXPIRY_DATE, PROFILE from dba_users;
ここで、必要なアカウントについて、ACCOUNT_STATUS が OPEN 以外(EXPIRED や EXPIRED & LOCKED 等)だと、アカウントが無効(もしくは無効になりかけ)ですし、EXPIRY_DATE が設定されていたら、将来無効になってしまいます。同様に、以下の対処で正常な状態にすることができます。
SQL> alter user <ユーザID> identified by <パスワード>;
SQL> alter user <ユーザID> account unlock;
ちなみにこの対処だと、今後の運用ではパスワード無期限が前提になりますが、そもそもデータベースサーバはそれでまったく問題はないと思います。むしろ有効期限切れにする意味が分からない。。。と思うのは私だけ?
0 コメント:
コメントを投稿