"DIRECT PATH LOAD 장단점"의 두 판 사이의 차이
DB CAFE
(→INSERT DIRECT PATH) |
(→DIRECT PATH 제약 사항) |
||
13번째 줄: | 13번째 줄: | ||
== DIRECT PATH 제약 사항 == | == DIRECT PATH 제약 사항 == | ||
− | |||
# 제약사항 중 하나라도 위반하면 별도로 명시하지 않는 한 Oracle Database는 메시지를 반환하지 않고 기존 INSERT를 실행. | # 제약사항 중 하나라도 위반하면 별도로 명시하지 않는 한 Oracle Database는 메시지를 반환하지 않고 기존 INSERT를 실행. | ||
− | # 다른 DML 문을 사용하거나 사용하지 않고 단일 트랜잭션에서 여러 | + | # 다른 DML 문을 사용하거나 사용하지 않고 단일 트랜잭션에서 여러 Direct-Path INSERT 문을 가질 수 있습니다. |
− | 그러나 하나의 DML 문이 특정 테이블, 파티션 또는 인덱스를 변경 한 후에는 트랜잭션의 다른 DML 문이 해당 테이블, 파티션 또는 인덱스에 액세스 할 수 없음. | + | #:그러나 하나의 DML 문이 특정 테이블, 파티션 또는 인덱스를 변경 한 후에는 트랜잭션의 다른 DML 문이 해당 테이블, 파티션 또는 인덱스에 액세스 할 수 없음. |
− | # 동일한 테이블, 파티션 또는 인덱스에 액세스하는 쿼리는 | + | # 동일한 테이블, 파티션 또는 인덱스에 액세스하는 쿼리는 Direct-Path INSERT 문 앞에 허용되지만 그 뒤에는 허용되지 않음. |
− | # 직렬 또는 PARALLEL 명령문이 동일한 트랜잭션에서 | + | # 직렬 또는 PARALLEL 명령문이 동일한 트랜잭션에서 Direct-Path INSERT에 의해 이미 수정 된 테이블에 액세스하려고하면 데이터베이스는 오류를 리턴하고 명령은 거부됨. |
− | # 타겟 테이블이 | + | # 타겟 테이블이 클러스터면 안됨. |
# 타겟 테이블은 OBJECT TYPE 컬럼을 포함 할 수 없음. | # 타겟 테이블은 OBJECT TYPE 컬럼을 포함 할 수 없음. | ||
− | # | + | # Direct-Path INSERT는 맵핑 테이블이 있거나 구체화 된 뷰에서 참조하는 경우 인덱스 구성 테이블(IOT)은 안됨. |
− | IOT가 병렬 모드로 작성된 경우에도 IOT (index-organized table)의 단일 파티션, 하나의 파티션 | + | #:IOT가 병렬 모드로 작성된 경우에도 IOT (index-organized table)의 단일 파티션, 하나의 파티션 만 있는 파티션 된 IOT 또는 파티션되지 않은 IOT 로의 Direct-Path INSERT 또는 APPEND 또는 APPEND_VALUES 힌트를 지정. |
+ | #: 그러나 파티션 확장 이름을 사용하지 않고 IOT에 둘 이상의 파티션이있는 경우 파티션 된 IOT에 대한 direct-path INSERT는 병렬 모드를 준수함. | ||
# 타겟 테이블에는 트리거 또는 참조 무결성 제한 조건이 정의되면 안됨. | # 타겟 테이블에는 트리거 또는 참조 무결성 제한 조건이 정의되면 안됨. | ||
# 타겟 테이블을 복제될수 없음. | # 타겟 테이블을 복제될수 없음. | ||
− | # 트랜잭션이 포함된 | + | # 트랜잭션이 포함된 Direct-Path IINSERT문은 분산 하거나 및 분산 될 수 없음. |
+ | |||
[[category:oracle]] | [[category:oracle]] |
2023년 4월 4일 (화) 23:12 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 INSERT DIRECT PATH[편집]
- 데이터베이스가 REDO 및 UNDO 데이터를 생성하는 방식은 부분적으로 일반 INSERT, Direct-Path INSERT 사용 여부에 따라 달라짐.
- (일반 INSERT는 테이블 LOGGING 설정에 관계없이 항상 데이터와 메타 데이터의 변경에 대해 최대 REDO 및 UNDO 를 생성함)
- 데이터베이스의 Direct-Path INSERT는 메타,데이터 변경이 작업 복구에 필요하기 때문에 REDO 및 UNDO 를 모두 생성.
- 데이터 변경의 경우 REDO 및 UNDO 가 다음과 같이 생성됨.
- DIRECT PATH INSERT는 항상 데이터 변경에 대한 UNDO가 생성 되지 않음.
- ARCHIVE LOG 모드 또는 FORCE LOGGING 모드에 있지 않으면 각 테이블의 LOGGING 설정에 관계없이 데이터 변경에 따른 REDO가 생성되지 않음.
- ARCHIVE LOG 모드에 있지만 FORCE LOGGING 모드가 아닌 경우 Direct-Path INSERT는 LOGGING 테이블은 데이터 REDO 생성, NOLOGGING 테이블은 REDO 생성 않함.
- ARCHIVE LOG 및 FORCE LOGGING 모드인 경우 Direct-Path SQL은 LOGGING 및 NOLOGGING 테이블 모두에 대한 데이터 REDO 생성.
- 데이터 변경의 경우 REDO 및 UNDO 가 다음과 같이 생성됨.
- INSERT가 완료된 직후에 Direct-Path. INSERT 데이터를 쿼리하거나 수정할 수 없습니다. ORA-12838 오류가 발생합니다.
- 새로 삽입 된 데이터를 읽거나 수정하기 전에 먼저 COMMIT 문 실행 해야함.
2 DIRECT PATH 제약 사항[편집]
- 제약사항 중 하나라도 위반하면 별도로 명시하지 않는 한 Oracle Database는 메시지를 반환하지 않고 기존 INSERT를 실행.
- 다른 DML 문을 사용하거나 사용하지 않고 단일 트랜잭션에서 여러 Direct-Path INSERT 문을 가질 수 있습니다.
- 그러나 하나의 DML 문이 특정 테이블, 파티션 또는 인덱스를 변경 한 후에는 트랜잭션의 다른 DML 문이 해당 테이블, 파티션 또는 인덱스에 액세스 할 수 없음.
- 동일한 테이블, 파티션 또는 인덱스에 액세스하는 쿼리는 Direct-Path INSERT 문 앞에 허용되지만 그 뒤에는 허용되지 않음.
- 직렬 또는 PARALLEL 명령문이 동일한 트랜잭션에서 Direct-Path INSERT에 의해 이미 수정 된 테이블에 액세스하려고하면 데이터베이스는 오류를 리턴하고 명령은 거부됨.
- 타겟 테이블이 클러스터면 안됨.
- 타겟 테이블은 OBJECT TYPE 컬럼을 포함 할 수 없음.
- Direct-Path INSERT는 맵핑 테이블이 있거나 구체화 된 뷰에서 참조하는 경우 인덱스 구성 테이블(IOT)은 안됨.
- IOT가 병렬 모드로 작성된 경우에도 IOT (index-organized table)의 단일 파티션, 하나의 파티션 만 있는 파티션 된 IOT 또는 파티션되지 않은 IOT 로의 Direct-Path INSERT 또는 APPEND 또는 APPEND_VALUES 힌트를 지정.
- 그러나 파티션 확장 이름을 사용하지 않고 IOT에 둘 이상의 파티션이있는 경우 파티션 된 IOT에 대한 direct-path INSERT는 병렬 모드를 준수함.
- 타겟 테이블에는 트리거 또는 참조 무결성 제한 조건이 정의되면 안됨.
- 타겟 테이블을 복제될수 없음.
- 트랜잭션이 포함된 Direct-Path IINSERT문은 분산 하거나 및 분산 될 수 없음.