oracleで表がロックされているか確認するには?
表がロックされているかどうか確認するには、次の方法があります。
- Oracleの動的ビューv$locked_objectを使用する。
- V$LOCKED_OBJECTからOBJECT_NAME、SESSION_ID、ORACLE_USERNAMEを選択する
ただしOBJECT_IDが(USER_OBJECTSからOBJECT_NAMEが’YOUR_TABLE_NAME’のレコードを選択した結果のOBJECT_IDと等しい) - YOUR_TABLE_NAMEを、クエリさせるテーブル名に置き換えてください。
- Oracleのダイナミック・ビューであるDBA_LOCKSを使用する
- SELECT OBJECT_NAME, SESSION_ID, ORACLE_USERNAME FROM DBA_LOCKS WHERE OBJECT_ID = (SELECT OBJECT_ID FROM USER_OBJECTS WHERE OBJECT_NAME = ‘YOUR_TABLE_NAME’);
- YOUR_TABLE_NAMEをあなたが照会するテーブル名に置き換えてください。
- Oracle の動的ビュー DBA_TAB_MODIFICATIONS を使用します:
- /* ORM系からは取得できない */
SELECT TABLE_NAME, LOCKED_MODE
FROM DBA_TAB_MODIFICATIONS
WHERE TABLE_NAME = ‘YOUR_TABLE_NAME’; - YOUR_TABLE_NAMEを検索対象のテーブル名に置き換えてください。
指定したテーブルをロックしているセッション ID およびユーザー名が返されます。結果が空の場合はテーブルはロックされていません。