Database초보우낙

12.하이브리드 파티션 테이블 본문

oracle 12c

12.하이브리드 파티션 테이블

오운학 2024. 4. 30. 10:53

참고사이트 : TunA :: Hybrid Partitioned 테이블 (tistory.com)

 

오라클 19c 뉴피처(새로운기능)에 대해서 아는것들

1. 자동 인덱싱(엑사데이터) 기능.

-> 오라클이 자주 수행하는 SQL들에 대해서 인덱스를 자동으로 생성해주는 기능

    (개발 SI DBA : 인덱스 생성을 DBA가 직접해야하는데 이때 유용합니다)

 

2. 리소스 메니져(resource manager)와 관련한 새로운 기능중에 악성 SQL을 차단하는 기능이 새로 생겼다.

 

3. 하이브리드 파티션 테이블 

-> 내부 파티션과 외부 파티션을 같이 하나의 파티션 테이블에 둘 수 있는 테이블
external table이 데이터를 db내부에 저장하지 않고 os에 파일 형태로 저장된 데이터를 엑세스하는 테이블이라고 했는데 파티션 테이블의 일부 파티션이 데이터 베이스 외부에 저장된 csv파일이라는것이 하이브리드 파티션 테이블

중요도가 높은 데이터는 내부 데이터 베이스의 파티션으로 저장하고 중요도가 낮은 데이터는 외부 os에 파티션으로 저장하게 하는 테이블이 하이브리드 파티션 테이블

 

 

■ 실습

 

#1. /home/oracle밑에 아래의 3개의 파일을 생성

 

cd /home/oracle

vi 205001.txt

1,20500101
2,20500102

 

vi 205002_01.txt

3,20500201

 

vi 205002_02.txt

4,20500202

vi 205001.txt

 

 

mkdir ext1

mkdir ext2

mv 205001.txt ./ext1/

mv 205002*.txt ./ext2/

 

 

 


#2.  sys 유져로 접속한 세션에서 아래와 같이 디렉토리를 생성하고 
      scott 유져에게 디렉토리에 대한 전체 권한을 부여합니다.

SYS> create or replace  directory  dir_ext1
        as  '/home/oracle/ext1';

SYS>  create or replace  directory  dir_ext2
        as  '/home/oracle/ext2';

SYS>  grant  all  on  directory  dir_ext1  to  scott;
SYS>  grant  all  on  directory  dir_ext2  to  scott;


 

 

 


#3. 하이브리드 테이블을 scott에서 생성합니다. 

create  table   t1
( c1  number,
  c2   date )
external   partition   attributes (
  type   oracle_loader 
  default   directory  dir_ext1
  access  parameters (  
                   records  delimited  by  newline
                   nobadfile  nologfile  nodiscardfile 
                   fields   terminated  by  ','
                   optionally  enclosed  by '"'
                   missing  field  values  are  null (
                          c1,
                          c2   char(8)   date_format   date  mask  "YYYYMMDD"
                   )
       )
 )
  partition  by  range(c2)  (
       partition  p1   values  less  than ( date '2050-02-01') external  location('205001.txt')
       ,partition  p2   values  less  than ( date '2050-03-01') external  default  directory dir_ext2
       location ('205002_01.txt' , '205002_02.txt')
       ,partition  p3  values  less  than (maxvalue)
   );

 

 

하이브리드 테이블의 장점은?

외부의 csv파일이나 text파일의 데이터를 바로 테이블의 파티션으로 구성할 수 있기 때문에 데이터베이스에 테이블 스페이스를 생성해서 데이터를 입력하지 않아도 된다. 데이터 베이스의 테이블의 데이터로 구성하려면 신경써야하는데 테이블 스페이스가 3가지입니다. csv와 text 파일의 데이터를 저장할 테이블스페이스, undo tablespace와 te,p tablespace입니다.


 

아래의 insert 문장으로 t1하이브리드 파티션 테이블에 입력하세요

insert into t1 values(7,date '2050-02-03');  --실패

insert into t1 values(8,date '2050-03-02');  --성공

insert into t1 values(9,date '2050-03-02');  --성공

commit;

 

설명 : 2050-02-03데이터는 외부 파티션에 입력되어야하는 데이터인데 외부파티션에는 데이터가 입력이 안된다