Oracle DB 에서 병렬처리 작업시 /*+ parallel(...) */ 힌트를 사용합니다.
조회 Query SQL 이나 Insert/Update/Delete/Merge 같은 DML SQL 이나 Parallel 힌트 주는 것은 똑같습니다.
근데, Parallel DML 의 경우 깜빡하는 부분이 alter session 을 해주는 부분입니다.
Insert/Update/Delete/Merge 같은 DML SQL 을 병렬처리 하고자 하는 경우에는 반드시 alter session parallel dml enable; 을 해줘야 병렬로 동작합니다.
12c DB 부터는 이걸 힌트에 삽입할 수 있는 방법이 생겼습니다. /*+ enable_parallel_dml */ 과 같이 해주면 alter session 을 한 것과 같은 효과를 발휘합니다.
정리하면, Oracle DB 에서 Parallel DML 하는 경우 아래와 같이 2가지 방식으로 처리할 수 있습니다.
1)
alter session enable parallel dml;
insert /*+ parallel(8) */ into TEST2
select * from TEST1;
2)
insert /*+ enable_parallel_dml parallel(8) */ into TEST2
select * from TEST1;
병렬처리가 잘 되고 있는지는 v$pq_sysstat 딕셔너리뷰를 조회하면 알 수 있습니다.
"Server Busy" 항목이 0 -> 8 로 변경됩니다.
위와같이 v$pq_sysstat 딕셔너리를 조회하는 경우, 여러 사람이 작업하는 경우에는 저 병렬서버들이 내 SQL 인지 다른 사람꺼인지 구분하기 어려운 경우가 있습니다.
가장 정확히 확인할 수 있는 방법은 SQL Trace 에서 확인하거나 Realtime SQL Monitor 로 확인하는 것입니다.
참고 => 오라클 Plan, Trace 쉽게 보는 - Realtime SQL Monitoring
'IT관련' 카테고리의 다른 글
유니코드 에러 UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position : illegal multibyte sequence (0) | 2019.09.18 |
---|---|
오라클 EM 13c(13.1) Tuning Advisor(튜닝 권고자) 사용 예제, 방법 (0) | 2019.09.15 |
오라클 에러 정보 (ORA-28002) - the password will expire within (0) | 2019.09.10 |
오라클 v$sql 에서 방금 실행한 SQL 확인하는 방법 (0) | 2019.09.09 |
Oracle DB Startup nomount 안되는 경우, Hang - 버추얼박스(VirtualBox) (0) | 2019.09.08 |