(1) 記事の目的
(1-1) エラー概要
(1-2) エラー原因
(1-3) エラー対策
(1) 記事の目的
(1-1) エラー概要
SQLDeveloperを使ってOracleDBに接続しようとした際に、正しい接続情報を入力しましたが次のエラーが起きました。
ステータス:失敗 -テストが失敗しました:ORA-28000: the account is locked
(※注)上記は「接続」ではなく「テスト」押下時のメッセージ例ですが、内容的は同じです
(図111)
(1-2) エラー原因
エラーメッセージに記載されている通り、アカウントがロックされてしまった事が原因です。次の(1-3)でその解除方法を紹介します。
(1-3) エラー対策
①SQL*Plus実行ファイルの検索
コマンドプロンプト(cmd)を開いて、次のコマンドを実行してSQL*Plusの実行ファイル(sqlplus.exe)の場所を検索します。
> where sqlplus*
(図131)①
②階層を移動
先ほど調べた階層にcdコマンドで移動します。
(図131)②
> cd [上記①で調べたパス]
③SQL*Plusへ接続
次のコマンドでSQL*Plusに接続します。SYSユーザにSYSDBA権限で接続するという意味です。”change_on_install”はSYSユーザのパスワードです。
> sqlplus sys/change_on_install as sysdba
(図131)③
④ロックされたユーザの確認
次のSELECT文でロックされているユーザーを確認します。
select username, account_status, lock_date from dba_users where account_status <> 'OPEN';
(図131)④
照会結果が次のように表示されます。結果からSYSTEMユーザーがLOCKEDのステータスになっている事が読み取れます。
LOCKED(TIMED)の場合は、誤ったパスワードが複数回入力されたため、安全のためにロックしたという意味です。参考までに、パスワード失効の場合は「EXPIRED(GRACED)」と表示されます。
(図131)⑤
⑤ロック解除
次のALTER文でユーザーのロックを解除します。「ALTER USER」でDBのユーザーに変更を加える、という意味で「ACCOUNT UNLOCK」でロック解除を意味しています。
(図131)⑥
> alter user SYSTEM account unlock;
⑥接続チェック
再度、エラーとなった接続を試します。左下に「ステータス:成功」と表示されているのでOKです。
(図131)⑦