본문 바로가기

데이터 사이언스 DataScience/Data Base 데이터베이스

[Oracle] data pump 이관시 LOB 저장 방식 변경

1. LOB을 SecureFile로 저장해야하는 이유

 

LOB은 BasicFile과 SecureFile 두 종류가 있다. 

10g 이전에는 BasicFile만 존재했었는데, 11g부터 SecureFile이 등장했다.

 

실제로 DB를 운영해보면서 SecureFile이 BasicFile보다 우수한 이유는 대략 4가지였다.

 

1) 용량이 더 적음

SecureFile은 Chunk 사이즈가 동적이기 때문에 연속된 공간 할당을 극대화하고 단편화 현상을 줄여 용량을 줄여준다.

 

2) 빠른 Read

SecureFile은 네트워크 전송시 디스크를 pre-fetching함으로써 Read 성능을 향상 시켰다.

 

3) LOB 인덱스 경합 문제 해결

LOB 메타데이터를 private 블록으로 사용하기 때문에 BasicFile 성능저하의 문제였던 인덱스 경합문제를 해결했다.

이로 인해 DML시에도 SecureFile 성능이 더 빠르다.

 

4) 추가 옵션 적용 가능

SecureFile을 이용하면 Compression 옵션을 적용할 수 있다. 

LOW / MID / HIGH의 세부옵션이 있으며, LOB 종류에 따라 압축률의 차이는 크지만 90%이상 압축되는 경우도 있다.

LOG성 테이블의 경우 아주 효과적이다.

 

 

2. LOB을 Datapump 이관시 SecureFile로 변환하는 방법

 

10g~11g 에서 12c~19c로 DBMS 버전을 업그레이드 하는 경우,

LOB을 BasicFile에서 SecureFile로 업그레이드 하는 경우가 많다.

 

이전에는 잘 쓰지 않았으나 이제는 용량 효율화, 성능을 위해 필수적이기 때문이다.

 

impdp를 할때 TRANSFORM 파라미터를 적용하면 모든 LOB을 SecureFile로 생성할 수 있다.

 

<스크립트 예시>

impdp dumpfile=test.dmp logfile=test.log

         directory=dir_mig_export table_exists_action=replace TRANSFORM=LOB_STORAGE:SECUREFILE

 

 

 

* 참고자료 : 

https://docs.oracle.com/database/121/ADLOB/adlob_smart.htm#ADLOB4444

 

Using Oracle LOB Storage

You, as database administrator, using the DB_SECUREFILE initialization parameter, can modify the initial settings that the COMPATIBILITY parameter sets as default. By changing the intial settings, you change the circumstances under which SecureFiles LOBs o

docs.oracle.com

https://docs.oracle.com/database/121/SUTIL/GUID-64FB67BD-EB67-4F50-A4D2-5D34518E6BDB.htm#SUTIL939

 

TRANSFORM

For the following example, assume that you have exported the employees table in the hr schema. The SQL CREATE TABLE statement that results when you then import the table is similar to the following: CREATE TABLE "HR"."EMPLOYEES" ( "EMPLOYEE_ID" NUMBER(6,0)

docs.oracle.com

 

반응형