database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 17309 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 17309
Direct mode에서의 parallel Data Loading
작성자
정재익(xlib)
작성일
2004-02-11 19:47
조회수
6,680

No. 11658

Direct mode에서의 parallel Data Loading 
=======================================

SQL*Loader는 동일 table에 대한 direct mode에서의 parallel data load를
지원하고 있다. 이는 여러 session에서 동시에 데이타를 direct mode로 올림으로써
대용량의 데이타의 로드 속도를 향상시킬 수 있다. 특히, data file을 물리적으로
다른 disk에 위치시킴으로써 더욱 큰 효과를 낼 수 있다.


1. 제약사항
   - index가 없는 table에만 로드 가능
   - APPEND mode에서만 가능. (replace, truncate, insert mode는 지원 안됨)
   - parallel query option이 설치되어 있어야 함.


2. 사용방법

   각각의 data file을 load할 control file들을 생성한 후, 차례차례 수행하면 됨.

   $sqlldr  scott/tiger  control=load1.ctl  direct=true  parallel=true&
   $sqlldr  scott/tiger  control=load2.ctl  direct=true  parallel=true&
   $sqlldr  scott/tiger  control=load3.ctl  direct=true  parallel=true

3. constraint

   - enable parameter를 사용하면 데이타 로드 작업이 모두 끝난 후, 자동으로
     constraint을 enable시켜 준다. 그러나 종종 enable되지 못하는 경우가
     있으므로 반드시 status를 확인해야 한다.

   - primary key 나 unique key constraint이 걸려 있는 경우, 데이타 로드 후
     자동으로 enable할 때, index를 생성하느라 시간이 많이 소모될 수 있다.
     따라서 data만 parallel direct 모드로 로드 한 후, index를 따로 parallel로
     생성하는 것이 성능 측면에서 바람직하다.   
 
4. storage 할당 방법 및 주의사항

   direct로 데이타를 로드하는 경우 다음 절차를 따라 작업한다.
  
    - 대상 table의 storage 절에 기초해 temporary segment를 생성한다.
    - 마지막 데이타 로드 작업이 끝난 후, 마지막에 할당되었던 extent의 비어 있는
      즉, 사용하지 않은 부분을 trim 한다. 
    - temporary segment에 해당되어 있는 extent들의 header 정보를
      변경하고, HWM 정보를 수정하여, 대상 table에 extent가 소속되도록 한다.
 
   이러한 extent 할당 방법은 다음과 같은 문제를 야기시킨다.

    - parallel data load에서는 table 생성 시 할당된 최초 INITIAL extent를
      사용하지 않는다.
    - 정상적인 extent 할당 rule을 따르지 않고, 각 process는 next extent에
      정의된 크기를 할당하여 data load를 시작하고, 새로운 extent가 요구될
      때에는 pctincrease 값을 기준으로 할당되게 되는데, 이는 process 간에
      독립적으로 계산되어진다.
    - fragmentation이 심하게 발생할 수 있다.
 
   fragmentation을 줄이고, storage 할당을 효율적으로 하기 위해서는 

    -  INITIAL을 2-5 block 정도로 작게 하여 table을 생성한다.
    -  7.2 이상 버젼에서는 options 절에서 storage parameter를 지정하여
       사용한다. 이 때 initial과 next를 동일한 크기로 주는 것이 바람직하다.

          OPTIONS (STORAGE=(MINEXTENTS  n
                            MAXEXTENTS  n
                            INITIAL     n  [K|M]
                            NEXT        n  [K|M]
                            PCTINCREASE n))
 
     -  options 절을 control file에 기술하는 경우 반드시 insert into tables
        절 다음에 기술해야 한다.

[Top]
No.
제목
작성자
작성일
조회
17312IFS: JAVA.LANG.NULLPOINTEREXCEPTION DURING IFSCA COLLECTING FILES DB INFO
정재익
2004-02-11
6140
17311(9i)UNDO_MANAGEMENT을 AUTO에서 MANUAL로 바꾸는 방법
정재익
2004-02-11
9825
17310IFS: USING FILES AND WEBFOLDER AFTER CREATING SSO USER
정재익
2004-02-11
6006
17309Direct mode에서의 parallel Data Loading
정재익
2004-02-11
6680
17308(OFS)ORACLE FAILSAFE FOR NT 와 ORACLE PARALLEL FAILSAFE와의 차이점
정재익
2004-02-11
6536
17307Parallel query option의 사용
정재익
2004-02-11
9107
17306ORACLE PARALLEL SERVER (OPS)
정재익
2004-02-11
7630
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다