2016-07-07 3 views
0

oradのToadのテーブルでupdateステートメントを選択し、そのテーブルにロックをかけました。oradのテーブルのロックを解除する

このロックを解除するにはどうすればよいですか。 (私はDBAアクセス権を持っていません)。

コミットを行うと自動的にそのロックが解除されますか?

答えて

1

はい、COMMITまたはROLLBACKのいずれかがロックを解除します。

ROLLBACKを発行してもテーブルがロックされている場合は、ではなく、がロックされています。ここで誰が誰を待っているかを判断するために使用するクエリです。これを行うには他にもたくさんの方法がありますが、これは私のために働きます。

SELECT s.SID, 
     s.serial#, 
     s.blocking_session, 
     s.final_blocking_session, 
     s.event, 
     s.module, 
     s.action, 
     s.sql_id, 
     o.NAME locked_object, 
     -- This is commented out because sometimes you'll get an invalid row id. So I only put it in when I need it 
--  CASE 
--   WHEN s.row_wait_obj# <> -1 THEN DBMS_ROWID.rowid_create (1, 
--                 s.row_wait_obj#, 
--                 s.row_wait_file#, 
--                 s.row_wait_block#, 
--                 s.row_wait_row#) 
--   ELSE NULL 
--  END locked_row_id, 
     s.wait_class, 
     s.seconds_in_wait, 
     s.state, 
     s.osuser, 
     s.client_identifier, 
     sq.sql_text, 
     sq.sql_fulltext 
FROM v$session s, 
     SYS.obj$ o, 
     v$sql sq 
WHERE ( blocking_session IS NOT NULL 
     OR SID IN (SELECT blocking_session 
        FROM v$session)) 
AND o.obj#(+) = s.row_wait_obj# 
and sq.sql_id = s.sql_id 
+0

私は実際にコミットとロールバックを試みていましたが、どちらもそのテーブルのロックを殺しませんでした。私はselect ...を実行したために更新ができたかもしれませんが、実際にレコードを更新したことはありませんか? – psj01

+0

thats weird ..ロールバック後でもロックが残っています。私はセッションブラウザを使用し、ロックタブでは、私の名前の下に両方をロックすることがあった。 1つはDHLのロック(ROW-X(SX)と他の1つはTranscaction(排他的)でした)所有者の下でそれはWMSADMIN(私はadmin権限を持っていません)と述べています – psj01

+0

whoは誰か..コミット/ ... – psj01

関連する問題