Oracleにおけるユーザーアカウントがロックされた時に、ロックを解除する手順です。
ロック解除の流れ
Oracleでユーザーログインを試みた際に、ユーザーは合っているのにパスワードを一定回数間違えて入力した場合、アカウントがロックされます。
取り敢えず解除したい人が多いと思いますので、まずは流れを把握しておきましょう。
- SQL*Plusを起動
- SYSDBAとしてログイン
- DBAユーザーでログイン(環境によっては不要)
- アカウントのロック解除
この流れで進めればアカウントがロック解除されます。
環境によっては、「SYSDBAとしてログイン」した後に、アカウントロックの解除コマンドを実行すれば解決する場合もあります。それで無理な場合は、「SYSDBAでログイン」した後に「DBAユーザーに切り替えて」からアカウントロック解除のコマンドを実行してみてください。
ロック解除のコマンド
アカウントロックのユーザー名を把握した状態で進めます。
SQL*Plusを起動するため、Windowsならコマンドプロンプト、その他のOSはターミナルで、以下を入力します。
sqlplus /nolog
SQL*Plusが起動されたら、SYSDBAとしてログインする必要があるので、以下を入力してください。
CONNECT / AS SYSDBA
上記のコマンドをSQL*Plus上で実行すると、パスワードを聞かれることがありますので、その場合はパスワードを入力してください(パスワードの有無は環境によって異なります)。
Enter password: ここにパスワードを入れてね
パスワードを入力してエンターキーを押下すると、SYSDBAユーザーでログイン出来ます。
SYSDBAユーザーでログイン後、DBAユーザーでログインする必要がある場合は、以下のコマンドを入力して、DBAユーザーに切り替えてログインしてください。
CONNECT DBAユーザー名/パスワード
ユーザー名とパスワードはDB管理者に聞いて下さい。「SYSDBA」というユーザー名はOracleで用意しているユーザー名ですが、DBAユーザーはOracleインストールに設定するため、開発者側が管理するものです。
DBAユーザーとしてログイン後、アカウントのロックを解除するために以下のSQL文を実行してください。
ALTER USER ロックされたユーザー名 ACCOUNT UNLOCK;
これでアカウントのロックを解除することが出来ます。「User altered.」と表示されたらロック解除されたことになります(環境によっては表示が異なるかもしれません)。
ロック状態を確認したい場合
ロック状態を確認する場合、以下のコマンドを実行します。SYSDBAユーザー・DBAユーザーのどちらでも大丈夫です。
SELECT ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME = 'ユーザー名';
これを実行すれば、アカウントのロック状態を確認することが出来ます。ACCOUNT_STATUSの値は以下。
- OPEN:アクティブ(ロックされてない)
- EXPIRED:パスワードの期限切れ。パスワード変更が必要。
- LOCKED:永続的にロックされている。DBA以上のユーザーが手動で解除可能。
- LOCKED(TIMED):一時的にロックされている。一定時間が経過すれば、自動的に解除される。
「LOCKED(TIMED)」は放置で良いですが、「LOCKED」だった場合は、DBA権限以上のユーザーでロック解除してあげてください。