0
oradのToadのテーブルでupdateステートメントを選択し、そのテーブルにロックをかけました。oradのテーブルのロックを解除する
このロックを解除するにはどうすればよいですか。 (私はDBAアクセス権を持っていません)。
コミットを行うと自動的にそのロックが解除されますか?
oradのToadのテーブルでupdateステートメントを選択し、そのテーブルにロックをかけました。oradのテーブルのロックを解除する
このロックを解除するにはどうすればよいですか。 (私はDBAアクセス権を持っていません)。
コミットを行うと自動的にそのロックが解除されますか?
はい、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
私は実際にコミットとロールバックを試みていましたが、どちらもそのテーブルのロックを殺しませんでした。私はselect ...を実行したために更新ができたかもしれませんが、実際にレコードを更新したことはありませんか? – psj01
thats weird ..ロールバック後でもロックが残っています。私はセッションブラウザを使用し、ロックタブでは、私の名前の下に両方をロックすることがあった。 1つはDHLのロック(ROW-X(SX)と他の1つはTranscaction(排他的)でした)所有者の下でそれはWMSADMIN(私はadmin権限を持っていません)と述べています – psj01
whoは誰か..コミット/ ... – psj01