병렬 DML 작업 후에 갑자기 select 가 에러나는 황당한 경험을 하게 되는 경우가 있습니다.
보통 Oracle 에서는 어떤 DML 도 조회(Select)에는 영향을 주지않는다는 확신을 가지고 있는 사람들이 많은데, Parallel DML 은 예외입니다.
Parallel DML 후에 commit 이나 rollback 을 해주지 않으면 아래와 같이 ORA-12838 에러를 만나게 됩니다.
조회(Select) 만 저렇게 에러가 나는게 아니라, 해당 Table 에 TM Lock 을 걸어버리기 때문에 다른 DML 도 안됩니다.
$ 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 with direct load. This is not permitted.
// *Action: Rewrite the transaction, or break it up into two transactions:
// one containing the initial modification and the second containing the
// parallel modification operation.
Parallel DML 만 저런 현상이 있는게 아니라, /*+ append */ 힌트를 사용하는 Direct Path Load 의 경우도 ORA-12838 에러가 발생합니다.
'IT관련' 카테고리의 다른 글
오라클 dbca 로 Oracle 21c DB 생성 절차/화면 (1) | 2022.06.17 |
---|---|
Oracle Database Software 21c 설치(Install) 절차/화면 (0) | 2022.06.17 |
Oracle DB 권고 파라메타 (use_large_pages=only) (0) | 2022.02.21 |
Oracle DB 권고 파라메타 (_cursor_obsolete_threshold=1024) (0) | 2022.02.15 |
VirtualBox 게스트 확장CD 설치 에러 : Kernel headers not found, modprobe vboxguest failed (0) | 2022.01.19 |