oracleで表がロックされているか確認するには?

表がロックされているかどうか確認するには、次の方法があります。

  1. Oracleの動的ビューv$locked_objectを使用する。
  2. V$LOCKED_OBJECTからOBJECT_NAME、SESSION_ID、ORACLE_USERNAMEを選択する
    ただしOBJECT_IDが(USER_OBJECTSからOBJECT_NAMEが’YOUR_TABLE_NAME’のレコードを選択した結果のOBJECT_IDと等しい)
  3. YOUR_TABLE_NAMEを、クエリさせるテーブル名に置き換えてください。
  4. Oracleのダイナミック・ビューであるDBA_LOCKSを使用する
  5. 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’);
  6. YOUR_TABLE_NAMEをあなたが照会するテーブル名に置き換えてください。
  7. Oracle の動的ビュー DBA_TAB_MODIFICATIONS を使用します:
  8. /* ORM系からは取得できない */
    SELECT TABLE_NAME, LOCKED_MODE
    FROM DBA_TAB_MODIFICATIONS
    WHERE TABLE_NAME = ‘YOUR_TABLE_NAME’;
  9. YOUR_TABLE_NAMEを検索対象のテーブル名に置き換えてください。

指定したテーブルをロックしているセッション ID およびユーザー名が返されます。結果が空の場合はテーブルはロックされていません。

bannerAds