ORA-28000: アカウントがロックされています。
データベースへ接続する時に、 ORA-28000: アカウントがロックされています。
というエラーが表示された場合、その Oracle ユーザがアカウントロックされて
接続出来ない状態を示している。
アカウントロックの原因
ORA-28000 の原因は、管理者にアカウントロックされたためか、パスワードを
連続失敗してしまって、プロファイルパラメータ FAILED_LOGIN_ATTEMPTS で
許容されている閾値を超えたことが考えられる。
では、あえてアカウントロックをしてみて動作を確認してみる。
アカウントロックの解除
dba_users テーブルでステータスを確認する
SQL> select username, account_status, profile from dba_users where username = 'TEST'; USERNAME ACCOUNT_STATUS PROFILE -------- -------------- ------- TEST OPEN DEFAULT → ACCOUNT_STATUS が OPEN であることが分かる。
TEST ユーザをロックする
SQL> alter user TEST account lock; ユーザーが変更されました。
再度、dba_users テーブルを確認
USERNAME ACCOUNT_STATUS PROFILE -------- -------------- ------- TEST LOCKED DEFAULT → ACCOUNT_STATUS が LOCKED に変更された。
TEST ユーザでログイン
% sqlplus test/test@orcl ERROR: ORA-28000: アカウントがロックされています。
TEST ユーザのロックを解除する
SQL> alter user TEST account unlock; ユーザーが変更されました。
再度、dba_users テーブルを確認
USERNAME ACCOUNT_STATUS PROFILE -------- -------------- ------- TEST OPEN DEFAULT → ACCOUNT_STATUS が OPEN に変更された。
セキュリティに厳しい環境では、許容されるログイン失敗回数も少なく、
パスワードを連続失敗によるロックが大半だろうと思う。
変更権限がないなら DBA へ依頼して解除してもらうか、
ロック時間が過ぎるのをひたすら待つほかない。
ちなみにロック時間はプロファイルパラメータの PASSWORD_LOCK_TIME で
設定されていて、これを過ぎればロックが解除される。
(もし、UNLIMITED だったら正直に申告を。)