내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
다운로드
trending_flat
OS환경 : Oracle Linux 6.8 (64bit)
DB 환경 : Oracle Database 11.2.0.4
쿼리 : 오라클 샘플 데이터 만들기, 테스트 데이터 벌크인서트 + dbms_random
벌크인서트와 dbms_random을 더해서 빠르게 대량 샘플데이터를 insert 시킬 수 있음
샘플 테이블 및 인덱스 생성(COLB)
1
2
3
4
|
CREATE TABLE RANDOM(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 RANDOM(COLB);
|
샘플 데이터 삽입
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
SQL>
DECLARE
TYPE tbl_ins IS TABLE OF RANDOM%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);
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 RANDOM VALUES w_ins(i);
COMMIT;
END;
/
|
빨간색 칠한부분이 dbms_random 으로 랜덤한 값넣는 부분
테이블 건수 및 데이터 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
SQL> select count(*) from random;
COUNT(*)
----------
14000
SQL>
select * from random
where rownum <= 3;
COLA COLB COLC COLD COLE COLF COLG COLH
-------------------- ---------- ---------- ------------------------------ ------------------------------ ------------------------------ ---------- ------------------------------
COLI
------------------------------
237 300000 99 ABCU9FOR9TA8Q EEEEEEEEEEEEEEEE FFFFFFFFFFFFFFFF 9999999 HHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIII
238 300000 99 ABCF14T1UZP4S EEEEEEEEEEEEEEEE FFFFFFFFFFFFFFFF 9999999 HHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIII
239 300000 99 ABCSMVU846XDX EEEEEEEEEEEEEEEE FFFFFFFFFFFFFFFF 9999999 HHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIII
3 rows selected.
|
용량확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SQL>
set lines 200
col owner for a10
col segment_name for a20
select owner,segment_name,segment_type,sum(bytes)/1024/1024 as MB
from dba_segments
where owner=UPPER('&OWNER')
GROUP BY owner,segment_name,segment_type;
OWNER SEGMENT_NAME SEGMENT_TYPE MB
---------- -------------------- ------------------ ----------
JSH IDX_COLB INDEX .4375
JSH RANDOM TABLE 2
2 rows selected.
|
이상태에서 데이터를 더 빠르게 넣고 싶다면 table에 nologging 옵션을 걸어준 뒤 insert 작업을 해주면됨
테이블 nologging
1
2
3
|
SQL> alter table random nologging;
Table altered.
|
데이터 중복 삽입
1
2
3
4
5
6
7
|
SQL> insert into random select * from random;
2294000 rows created.
SQL> /
4588000 rows created.
|
참조 : https://positivemh.tistory.com/183
'ORACLE > Sql' 카테고리의 다른 글
테이블 dml 이력 확인 업데이트 인서트 딜리트 이력 확인 (0) | 2018.08.01 |
---|---|
oracle scn 번호 체크 하는 쿼리 (0) | 2018.07.26 |
오라클 프로시저, 잡, 트리거 내용 확인 방법 (0) | 2018.07.18 |
오라클 hot 백업 스크립트 (0) | 2018.07.10 |
현재 실행중인 SQL 쿼리 확인 (0) | 2018.07.10 |