행위

오라클 대량 데이터 생성

DB CAFE

thumb_up 추천메뉴 바로가기


1 오라클 샘플 데이터(대량) 생성[편집]

1.1 샘플데이터 생성 절차[편집]

record_voice_over

  1. 테이블 / 인덱스 생성
  2. 샘플데이터 입력
  3. 건수 및 용량 확인


1.2 테이블 / 인덱스 생성[편집]

  • 벌크인서트와 dbms_random패키지를 이용하여 빠르게 대량 샘플데이터를 insert



1.2.1 샘플 테이블 및 인덱스 생성[편집]

-- 테이블 생성 
CREATE TABLE TB_BIG(
  COLA VARCHAR2(20), COLB NUMBER      , COLC NUMBER, 
  COLD VARCHAR2(30), COLE VARCHAR2(30), COLF VARCHAR2(30), 
  COLG NUMBER      , COLH VARCHAR2(30), COLI VARCHAR2(30)
);
-- 인덱스 생성 
CREATE INDEX IDX_COLB ON TB_BIG(COLB);

1.2.2 샘플 데이터 삽입(PL/SQL)[편집]

DECLARE
TYPE tbl_ins IS TABLE OF TB_BIG%ROWTYPE INDEX BY BINARY_INTEGER;
w_ins tbl_ins;
BEGIN
FOR i IN 1..14000 LOOP 
   w_ins(i).COLA :=i;
   w_ins(i).COLB :=300000;
   w_ins(i).COLC :=99;
   w_ins(i).COLD :='ABC'||dbms_random.string('x',10); -- random 함수르 리용하여 
   w_ins(i).COLE :='EEEEEEEEEEEEEEEE';
   w_ins(i).COLF :='FFFFFFFFFFFFFFFF';
   w_ins(i).COLG :=9999999;
   w_ins(i).COLH :='HHHHHHHHHHHHHHHHHHHHHHHHHH';
   w_ins(i).COLI :='IIIIIIIIIIIIIIIIIIIIIIIIII';
END LOOP;
   FORALL i in 1..14000 INSERT INTO TB_BIG VALUES w_ins(i);
   COMMIT;
END;
/



1.2.2.1 테이블 건수 및 데이터 확인[편집]

SQL> select count(*) from TB_BIG;
 
  COUNT(*)
----------
     14000

1.2.2.2 테이블 사용 용량 확인[편집]

SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,SUM(BYTES)/1024/1024 AS MB
  FROM DBA_SEGMENTS
 WHERE owner = 'TEST_TOBE'         -- OWNER명 입력 
   AND SEGMENT_NAME = 'TB_BIG'  -- 테이블이나 인덱스명 입력 
 GROUP BY OWNER,SEGMENT_NAME,SEGMENT_TYPE;

1.3 데이터 입력시 성능을 더 빠르게 하는 방법[편집]

  1. TABLE에 NOLOGGING 옵션 + PARALLEL 옵션
  2. INSERT 작업 & 커밋
  3. TABLE에 LOGGING 옵션 + NOPARALLEL 옵션 (원상복귀)
    • PARALLEL 옵션추가시 반드시 NOPARALLEL 옵션으로 변경해야함 (미변경시, 테이블 조회시 기본으로 병렬(PARALLEL)로 조회처리됨)


  • 테이블 nologging 모드로 변경 (오라클 엔터프라이즈 버전이면 병렬옵션 추가 )
alter table TB_BIG nologging parallel 32;
  • 테이블 입력
INSERT INTO TB_BIG 
SELECT * FROM TB_BIG;

-- 커밋 
COMMIT;
  • 테이블 logging + noparallel 모드로 변경
alter table TB_BIG logging noparallel;  -- 로깅모드 + 병렬처리금지

1.4 더 많은 데이터 중복 삽입[편집]

insert into TB_BIG select * from TB_BIG; 

COMMIT;