본문 바로가기
다른 DBMS/PostgresDB

[DDL] Alter 명령어가 끝나지 않고 계속 수행중일때

by 취미툰 2024. 11. 29.
반응형

테이블 재생성을 위해 alter table DROP PK 명령어를 수행하였는데 끝나지 않고 계속 수행중이었습니다.

이것을 해결한 방법을 정리하였습니다.

 

원인 : 세션 중 테이블에 accesssharelock을 잡은 세션이 있었음.

해결 : 해당 세션 kill

 

lock 확인 쿼리

select
	c.relname,
    l.*,
    psa.*
from pg_locks l
inner 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을 잡고있는 세션을 발견하였습니다.

 

해당 세션의 pid를 찾아낸 후 

select pg_teminate_backend(pid);

 

명령어로 세션 kill을 합니다.

 

그럼 명령어가 잘 수행됩니다.

반응형

댓글