ORA-00054 자원이 사용 중이고 NOWAIT가 지정되어 획득되었거나 시간종료가 만료됨
resource busy and acquire with NOWAIT specified or timeout expired
1. 원인
ALTER와 같은 DDL을 수행했을때 마주칠 수 있는 에러이다.
다른 트랜잭션이 DML 등으로 자원을 잡고 있거나, DDL이 겹칠 경우 발생한다.
일반적으로 DDL이 겹치는 경우는 거의 없을 것 같다.
DBA가 동일 오브젝트에 여러개의 세션에서 동시에 DDL을 수행할 확률은 적기 때문이다.
2. 해결방법
테이블, 인덱스에 장시간 Lock이 잡혀있다면 session을 kill 하거나 그 시간대를 피해서 DDL을 하는게 좋지만,
온라인 트랜잭션이 충분히 많은 오브젝트는 특이사항이 없는 경우에도 발생할 수 있다.
그럴 때는 순간적으로 발생하는 경합 상황임을 감안해 DDL을 여러번 수행하는 것도 방법이고,
아니면 아래처럼 현재 세션의 DDL LOCK TIMEOUT을 조정해서 경합이 끝날때까지 DDL을 기다렸다가 수행할 수 있다.
-- 세션의 DDL LOCK TIMEOUT을 30초로 설정하는 스크립트
ALTER SESSION SET ddl_lock_timeout = 30;
반응형
'데이터 사이언스 DataScience > Data Base 데이터베이스' 카테고리의 다른 글
[Oracle] 존재하지 않는 Object에 대해 Synonym을 만들 수 있다 (0) | 2024.05.24 |
---|---|
[Oracle] 기존 패스워드로 ALTER (0) | 2023.11.29 |
[Oracle] SYS.SYS_HUB DB LINK (0) | 2023.05.04 |
[Oracle] 계층형 쿼리 Hierarchical Queries (0) | 2023.05.03 |
Amazon RDS for Oracle Immersion Day (0) | 2023.05.02 |