사용자 도구

사이트 도구


dbms:oracle:concept:directpathload

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
dbms:oracle:concept:directpathload [2008/03/18 14:59]
starlits
dbms:oracle:concept:directpathload [2008/03/18 15:18] (현재)
starlits
줄 125: 줄 125:
   * direct load는 기존 segment중간에 data를 insert하는 것이 아니라 완전히 새로운 block을 할당받아 정확히 write가 끝난 다음 해당 segment에 포함되기 때문에 \\ instance failure시에는 redo log정보를 필요로 하지 않는다. \\ 그러나 default로 direct load는 redo log에 입력되는 data를 기록하는데 이것은 media recovery를 위한 것이다. \\ 그러므로 archive log mode가 아니면 direct load에 생성된 redo log 정보는 불필요하게 되므로 \\ NOARCHIVELOG mode시에는 항상 control file내에 UNRECOVERABLE이라는 option을 사용하여 redo log에 redo entry를 기록하지 않도록 한다.   * direct load는 기존 segment중간에 data를 insert하는 것이 아니라 완전히 새로운 block을 할당받아 정확히 write가 끝난 다음 해당 segment에 포함되기 때문에 \\ instance failure시에는 redo log정보를 필요로 하지 않는다. \\ 그러나 default로 direct load는 redo log에 입력되는 data를 기록하는데 이것은 media recovery를 위한 것이다. \\ 그러므로 archive log mode가 아니면 direct load에 생성된 redo log 정보는 불필요하게 되므로 \\ NOARCHIVELOG mode시에는 항상 control file내에 UNRECOVERABLE이라는 option을 사용하여 redo log에 redo entry를 기록하지 않도록 한다.
   * data가 redo log 정보 없이 instance failure시에 data save까지는 보호되는데 반해 index는 무조건 direct load state가 되어 재생성하여야 한다. \\ 그리고 data save이후의 load하고자 하는 table에 할당되었던 extent는 load된 data가 user에게 보여지지는 않지만 extent가 free space로 release되지는 않는다.   * data가 redo log 정보 없이 instance failure시에 data save까지는 보호되는데 반해 index는 무조건 direct load state가 되어 재생성하여야 한다. \\ 그리고 data save이후의 load하고자 하는 table에 할당되었던 extent는 load된 data가 user에게 보여지지는 않지만 extent가 free space로 release되지는 않는다.
 +
  
 ===== Integrity Constraints & Triggers ===== ===== Integrity Constraints & Triggers =====
 +
 +  - direct path load 중 not null, unique, primary key constraint는 enable 상태로 존재한다. \\ not null은 insert시에 check되고 unique는 load후 index를 구성하는 시점에 check된다.
 +  - 그러나 check constraint와 referential constraint는 load가 시작되면서 disable상태로 된다. \\ 전체 데이타가 load되고 난 후 이렇게 disable된 constraints를 enable시키려면 control file내에 REENABLE이라는 option을 지정하여야 한다. \\ 이 reenable option은 각 constraint마다 지정할 수는 없으며 control file에 한번 지정하면 전체 integrity/check constraint에 영향을 미치게 된다. \\ 만약 reenable되는 과정에서 constraint를 위배하는 data가 발견되면 해당 constraint는 enable되지 못하고 disabled status로 남게 되며, \\ 이렇게 위배된 data를 확인하기 위해서는 reenable clause에 exceptions option을 다음과 같이 추가하면 된다. <code>
 +reenable [exceptions table_name]
 +</code>
 +  - 이 때 table_name은 **$ORACLE_HOME/rdbms/admin/utlexcpt.sql**을 다른 directory로copy하여 table이름을 exceptions가 아닌 다른 이름으로 만들어 수행시키면 된다.
 +  - insert trigger도 integrity/check constraint와 같이 direct load가 시작하는 시점에 disable되며, load가 끝나면 자동으로 enable된다. \\ 단 enable되고 나서도 load에 의해 입력된 data에 대해 trigger가 fire되지는 않는다. 
  
  
  
 [펌] http://kr.forums.oracle.com/forums/thread.jspa?threadID=470778&tstart=315  [펌] http://kr.forums.oracle.com/forums/thread.jspa?threadID=470778&tstart=315 
dbms/oracle/concept/directpathload.1205819942.txt.gz · 마지막으로 수정됨: 2008/03/18 14:59 저자 starlits