반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- db
- heapq
- 로버트C마틴
- database
- table full scan
- RAC
- SQLD
- B*Tree
- SQL튜닝의시작
- B*Tree인덱스구조
- index fast full scan
- SQLP
- 오라클
- join
- 클린 코드
- 조인
- leetcode215
- clean code
- 클린코드
- 리눅스
- Oracle
- 친절한SQL튜닝
- 파이썬
- 리트코드215
- 오라클튜닝
- intellij
- 데이터모델링
- 결합인덱스구조
- 알고리즘
- B*Tree인덱스
Archives
- Today
- Total
개발노트
ORA-12838 : Cannot read/modify an object after modifying it in parallel 본문
ERROR
ORA-12838 : Cannot read/modify an object after modifying it in parallel
개발자? 2022. 8. 11. 20:08원인: 하나의 트랜잭션 내에서 parallel 또는 append 힌트가 적용된 DML 수행 후 commit, rollback 을 하지 않고 객체에 접근할 때 발생
해결: 트랜잭션 단위를 쪼개야 한다. parallel 또는 append 힌트가 적요된 DML 수행 후 바로 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 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 작업으로 insert 를 수행한 후, insert 대상 테이블을 조회할 때 오류가 발생했다.
insert /*+ parallel(16) */ into A
select * from B;
insert into C
select * from A;
-- ora-12838 발생!!!
commit;
나의 프로시저 흐름은 이러했다.
A에는 데이터가 제대로 추가가 되었는데, C 테이블에는 데이터가 추가가 안되었다.
보통 Oracle 에선 어떤 DML 도 조회(Select)에는 영향을 주지않는다고 알고 있었으나,
Parallel dml 은 예외였다.
Parallel dml 을 수행한 후 commit, rollback을 해주지 않았을 때 'ora-12838' 에러가 발생했고, 이후에 dml 이나 select 쿼리가 정상수행되지 않는다.
구글링을 해보니 이런 현상은 append 힌트를 사용한 경우에도 적용이 되었다.
Direct path Load 작업들에 적용되는 룰인 듯 하다.
반응형
'ERROR' 카테고리의 다른 글
ORA-14400: inserted partition key does not map to any partition (0) | 2023.04.03 |
---|
Comments