2016-07-07 3 views
0

orad에 대한 테이블의 업데이트 명령에 select를 수행하여 해당 테이블에 잠금을 설정합니다.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

실제로 커밋 및 롤백을 시도했지만 .. 해당 테이블에서 해당 잠금을 죽이지는 않았습니다. 내가 선택을 실행했기 때문에 그것이있을 수 ... 업데이트 ...하지만 실제로 레코드를 업데이 트하지 ...? – psj01

+0

그게 이상한 .. 왜냐하면 난 여전히 롤백 후에도 자물쇠가 있었기 때문에. 나는 세션 브라우저를 사용했고 자물쇠 탭에서 내 이름 아래에 자물쇠를 걸 수있었습니다. 하나는 DHL 잠금 (ROW-X (SX)이고 다른 하나는 Transcaction (독점)이었습니다. 소유자의 말에 의하면 WMSADMIN (나는 관리자 권한이 없습니다) – psj01

+0

소유자가 누구인지 .. 그들은 커밋/롤백을해야합니다. ... – psj01