oracleでユーザーがロックされた理由を確認するには
Oracleデータベースで、ユーザーがロックされている理由は次のメソッドを使用して確認できます。
- DBA_USERSビューの照会:
- SELECT username, account_status, lock_date, lock_time, profile FROM dba_users WHERE username = ‘ユーザー名’;
- その中でユーザー名は、検索するユーザーのユーザー名です。
- account_statusがLOCKEDの場合、ユーザーはロックされており、ロックされた日時がlock_date、lock_timeで取得できます。
- DBA_LOCKSビューを照会します。
- SELECT session_id, session_serial#, locked_mode, lock_type, lock_id1, lock_id2 FROM dba_locks WHERE owner = ‘ユーザ名’;
- ユーザ名を指定する場合は、対象とするユーザ名を指定します。
- 結果セットが空でなければ、ユーザーのリソースの一部がロックされていることを意味します。 session_idとsession_serial#に基づいて、そのリソースをロックするセッションを検索し、ロックの原因を詳しく確認できます。
- V$SESSIONビューのクエリ:
- SELECT username, lockwait, program FROM v$session WHERE username = ‘ユーザー名’;
- ユーザー名は、検索するユーザーのユーザー名です。
- lockwaitがYESの場合は、ユーザーが何らかのロックされたリソースの解放を待っています。実行中プログラムをprogramで取得すれば、ロックの原因を見つけることができます。
関係するビューを問い合わせするには、所定の権限が必要ですのでご注意ください。