エラーの解決策: ORA-28001: パスワードの有効期限が切れています
バックグラウンド
JAVAプログラムがエラーをスローしました ” java.sql.SQLException: ORA-28001: パスワードの有効期限が切れています ” プログラムが実行されていたとき.
このエラーは、特定のアカウントの期限切れのパスワードが原因であることがよくあります. したがって、Oracleシステムはセキュリティ上の理由でアカウントをロックしました.
推測を検証するには. 次のコマンドを実行しました
SQL>選択する * プロファイル= ’DEFAULTであるdba_profilesから’ およびresource_name = ’PASSWORD_LIFE_TIME’;
PROFILE RESOURCE_NAME RESOURCE LIMITDEFAULT PASSWORD_LIFE_TIME PASSWORD 180
パスワードの制限時間は間違いなく 180 そのため、このアカウントの期限をキャンセルすることにしました. ただし、キャンセル操作を行う前に,プログラムによってOracleデータベースに接続するためにどのアカウントが使用されているかを把握する必要があるため、jdbcとodmファイルを確認しました.
この問題の3つの解決策
1.アカウントAのロックを解除する
アカウントがAで、パスワードがAであるとします。 123. 次のコマンドを実行するだけです.
SQL> によって識別されるユーザーAを変更する 123 アカウントのロック解除;
ユーザーが変更した.
2.アカウントAのパスワードをリセットします
SQL>ALTER USER A IDENTIFIED BY 1234;
SQL>ALTER USER A IDENTIFIED BY 123;
3.最後の方法は、有効時間を無制限に変更することです
この操作の後、データベースサービスを再起動する必要はありません;
(1).dba_usersテーブルのプロファイルフィールド値を確認してください, 一般に,このユーザーのプロフィールは “デフォルト”
ユーザー名を選択,dba_usersからのプロファイル;
(2).プロファイルのPASSWORD_LIFE_TIMEを確認してください,例えば “デフォルト”.
選択する * FROM dba_profiles s WHERE s.profile = ’DEFAULT’ AND resource_name = ’PASSWORD_LIFE_TIME’;
(3).の値を変更します “PASSWORD_LIFE_TIME” 無制限に.
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
の関連エラーはありませんでした “ORA-28001: パスワードの有効期限が切れています” このアカウントのロックを解除した後. だからこの問題は解決されました.