행위

DIRECT PATH LOAD 장단점

DB CAFE

thumb_up 추천메뉴 바로가기


1 INSERT DIRECT PATH[편집]

  1. 데이터베이스가 REDO 및 UNDO 데이터를 생성하는 방식은 부분적으로 일반 INSERT, Direct-Path INSERT 사용 여부에 따라 달라짐.
    (일반 INSERT는 테이블 LOGGING 설정에 관계없이 항상 데이터와 메타 데이터의 변경에 대해 최대 REDO 및 UNDO 를 생성함)
  2. 데이터베이스의 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 생성.
  3. INSERT가 완료된 직후에 Direct-Path. INSERT 데이터를 쿼리하거나 수정할 수 없습니다. ORA-12838 오류가 발생합니다.
  • 새로 삽입 된 데이터를 읽거나 수정하기 전에 먼저 COMMIT 문 실행 해야함.

2 DIRECT PATH 제약 사항[편집]

  1. 제약사항 중 하나라도 위반하면 별도로 명시하지 않는 한 Oracle Database는 메시지를 반환하지 않고 기존 INSERT를 실행.
  2. 다른 DML 문을 사용하거나 사용하지 않고 단일 트랜잭션에서 여러 Direct-Path INSERT 문을 가질 수 있습니다.
    그러나 하나의 DML 문이 특정 테이블, 파티션 또는 인덱스를 변경 한 후에는 트랜잭션의 다른 DML 문이 해당 테이블, 파티션 또는 인덱스에 액세스 할 수 없음.
  3. 동일한 테이블, 파티션 또는 인덱스에 액세스하는 쿼리는 Direct-Path INSERT 문 앞에 허용되지만 그 뒤에는 허용되지 않음.
  4. 직렬 또는 PARALLEL 명령문이 동일한 트랜잭션에서 Direct-Path INSERT에 의해 이미 수정 된 테이블에 액세스하려고하면 데이터베이스는 오류를 리턴하고 명령은 거부됨.
  5. 타겟 테이블이 클러스터면 안됨.
  6. 타겟 테이블은 OBJECT TYPE 컬럼을 포함 할 수 없음.
  7. Direct-Path INSERT는 맵핑 테이블이 있거나 구체화 된 뷰에서 참조하는 경우 인덱스 구성 테이블(IOT)은 안됨.
    IOT가 병렬 모드로 작성된 경우에도 IOT (index-organized table)의 단일 파티션,하나의 파티션 만 있는 파티션 된 IOT 또는 파티션되지 않은 IOT 로의 Direct-Path INSERT 또는 APPEND 또는 APPEND_VALUES 힌트를 지정.
    그러나 파티션 확장 이름을 사용하지 않고 IOT에 둘 이상의 파티션이있는 경우 파티션 된 IOT에 대한 direct-path INSERT는 병렬 모드를 준수함.
  8. 타겟 테이블에는 트리거 또는 참조 무결성 제한 조건이 정의되면 안됨.
  9. 타겟 테이블을 복제될수 없음.
  10. 트랜잭션이 포함된 Direct-Path IINSERT문은 분산 하거나 및 분산 될 수 없음.