Oracle「ORA-28001: パスワードの有効期限が切れています」対応手順

Oracle Database を利用していると、ログイン時に
「ORA-28001: パスワードの有効期限が切れています」
というエラーに遭遇することがあります。

これは、データベースのセキュリティ機能として「パスワード有効期限」が設定されており、期限を過ぎたユーザがログインできなくなるために発生します。

この場合のエラーの原因と具体的な対応手順を解説します。


エラーの原因

Oracle データベースでは、ユーザごとに割り当てられた プロファイル(Profile) により、パスワード有効期限が管理されています。

典型的な原因は以下の通りです。

  • デフォルトの DEFAULT プロファイルで PASSWORD_LIFE_TIME が 180日 などに設定されている

  • 長期間パスワードを変更しておらず、期限切れとなった

  • 運用上、期限管理を無効化していなかった


対応手順

1. SQL*Plus などからログインを試みる

期限切れの場合、通常のユーザではログインできません。
DBA 権限を持つユーザ(例: sys as sysdba)でログインする必要があります。


2. パスワードをリセットする

対象ユーザのパスワードを変更します。


例:

これでユーザは再びログインできるようになります。


3. パスワード有効期限を確認する

どのプロファイルが割り当てられているかを確認します。

次に、そのプロファイルの設定を確認します。



4. パスワード期限を延長・無効化する(必要に応じて)

運用上パスワード期限を無期限にしたい場合は、以下のように設定します。


特定のユーザ専用プロファイルを作成し、そのみに適用する運用もおすすめです。

注意点

  • セキュリティポリシー上、期限を無期限にするのは推奨されない場合があります。

  • 運用規定に従い、定期的に強度の高いパスワードへ更新しましょう。

  • 本番環境では、DBA以外のアカウントで誤って変更しないよう注意が必要です。


まとめ

「ORA-28001: パスワードの有効期限が切れています」は、パスワードの期限切れによるエラーです。

  • DBA権限でログイン

  • パスワード変更

  • プロファイル確認と調整

この流れで対応すれば、迅速に復旧できます。運用に合わせてパスワード有効期限の設定を見直すことも重要です。

Javaの例外テストが楽になる!JUnit5のassertThrows便利な使い方

1. assertThrowsとは?

JUnit5で例外をテストする際に便利なのが assertThrows です。
従来は try-catch を使って例外を検証していましたが、コードが冗長になりがちでした。JUnit5から追加された assertThrows を使うと、例外発生をシンプルにテストできます。


これだけで 「この処理で IllegalArgumentException が発生すること」 を確認できます。

2. 旧来のtry-catch方式との比較

JUnit4までの書き方は以下のようになります。


fail を入れたり、catchブロック内で assertEquals を書く必要があり、テストコードが長くなっていました。
assertThrows を使えば、これを 1行でシンプルに記述可能 です。


3. 例外メッセージの検証

assertThrows は戻り値として発生した例外オブジェクトを返すため、メッセージや詳細を検証することも可能です。@Test


これにより 例外種別だけでなく、エラーメッセージの妥当性 も簡単にチェックできます。

4. 複数の例外クラスに対応

もし異なる種類の例外が発生する可能性がある場合、複数の assertThrows を組み合わせてテストできます。


これにより、条件ごとに発生する例外をきちんと検証できます。

5. assertThrowsを使うメリットまとめ

  • コードがシンプル:try-catchやfailを省略できる

  • 例外メッセージの検証が容易

  • 複数パターンの例外を簡潔に記述可能

  • 可読性が向上し、保守性もアップ


まとめ

JUnit5の assertThrows を使えば、例外発生テストがとてもスッキリ書けるようになります。
「テストコードの読みやすさ・保守性を高めたい」という方には必須のテクニックです。
これを取り入れるだけで、テストがより楽しく、効率的になるので試してみましょう!