본문 바로가기

Lock7

[DDL] Alter 명령어가 끝나지 않고 계속 수행중일때 테이블 재생성을 위해 alter table DROP PK 명령어를 수행하였는데 끝나지 않고 계속 수행중이었습니다.이것을 해결한 방법을 정리하였습니다. 원인 : 세션 중 테이블에 accesssharelock을 잡은 세션이 있었음.해결 : 해당 세션 kill lock 확인 쿼리select c.relname, l.*, psa.*from pg_locks linner join pg_stat_activity psa on (psa.pid=l.pid)left outer join pg_class c on (l.relation = c.oid)where l.relation = '테이블명'::regclass; 결과로 내가 수행중인 세션 외에 accesssharelock을 잡고있는 세션을 발견하였습니다. 해당 세션의.. 2024. 11. 29.
ORA-12838: cannot read/modify an object after modifying it in parallel 해당 에러는 parallel 이나 direct load 로 table에 insert를 사용하고 트랜잭션의 종료를 제대로 해주지않고 select 문 수행시 발생합니다. 해결방법은 commit이나 rollback명령어를 수행하여 트랜잭션을 종료시키는 방법이 있습니다. $ oerr ora 12838 12838, 00000, "cannot read/modify an object after modifying it in parallel" // *Cause: Within the same transaction, an attempt was made to add read or // modification statements on a table after it had been modified in parallel // or.. 2022. 9. 28.
InnoDB Locking InnoDB에서 사용하는 Lock Type에 대한 정리입니다. Shared and Exclusive Locks row-level의 lock에서 사용합니다. Shared lock(S)는 보유한 트랜잭션이 row를 읽기 위해서 허용해주는 Lock입니다. Exclusive lock(X)은 보유한 트랜잭션이 row를 update하거나 delete하게 허용해주는 Lock입니다. 만약, 트랜잭션 T1이 row r의 Shared Lock을 잡고 있다면, 트랜잭션 T2에 대한 row r의 lock은 다음과 같이 처리됩니다. - T2에 대한 Shared lock 요청 즉시 허용됩니다. 즉 T1과 T2 둘다 r의 Shared lock을 유지합니다. - T2에 대한 Exclusive lock 요청은 즉시 허용되지 않습니다... 2021. 1. 18.
v$locked_object - 락걸린 세션 확인 락걸린 세션에 대해서 확인할 수 있는 뷰입니다. 쿼리 검색시 아래와 같이 나타납니다. SQL> select * from v$locked_object; XIDUSN XIDSLOT XIDSQN OBJECT_ID SESSION_ID ORACLE_USERNAME OS_USER_NAME PROCESS LOCKED_MODE ----------- ----------- ----------- ----------- ----------- ------------------------------ ------------------------------ ------------------------ ----------- 1 16 6843 21527 29 TEST oracle 11470 3 1 16 6843 21526 29 TEST .. 2021. 1. 7.