TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-20 |
제목 | TRANSPORTABLE TABLESPACE IN 8.1 | ||
---|---|---|---|
Oracle8i에서는 tablespace단위로 그 구성 datafile들을 옮겨서 다른
database에 연결시켜 사용할 수 있는 기능이 제공된다. SCOPE ----- 8i~10g Standard Edition 에서는 Import transportable tablespaces 기능만이 지원이 됩니다. 유용성 ------ 1. 전사적 정보시스템내에서 대량의 data의 흐름이 필요할 경우, - 예를 들어, OLTP database에서 data warehouse database로의 data이전 또는 data warehouse에서 data mart로의 data이전 등 - 8.1이전까지는 SQL*Loader의 direct path나 parallel DML등의 방법을 이용하여 그 작업속도를 향상시키려고 시도 하였다. 8.1의 Transportable Tablespace기능을 이용한다면 datafile들을 새로운 system으로 copy하는 정도의 시간으로 작업을 완료할 수 있다. 2. 중앙에서 변경, 관리되고 지방(지사)에서 사용되는 data들을 CD-ROM에 담아서 배포하는 등에 이용가능하다. 예를 들어, 제품의 사양, 가격등에 대한 정보를 담는 tablespace를 중앙에서 변경, 저장하여 배포하고, 이 data를 지방의 database에 연결하여 주문 system등에 이용할 수 있다. 3. Contents 사업자들은 자신이 제공하는 contents들을 Transportable Tablespace형태로 제공 하여 고객들의 database에 바로 연결하여 사용할 수 있도록 할 수 있다. 특성, 제한사항 ------------- 1. 특정 tablespace내의 전체 data를 이동시킨다. 2. Media recovery를 지원한다. 3. Source database와 target database는 - 동일한 OS에서 구동되고 있어야 한다. - Oracle8i(8.1)이상의 version이어야 한다. - 동일한 block size를 이용해야 한다. - 동일한 characterset을 이용해야 한다. 작업절차 ------- 1. 대상 tablespace를 read only 상태로 변경한다. file을 copy하는 동안 해당 tablespace에 변경작업이 일어나지 않도록 보장한다. 2. Source database에서 metadata를 export한다. 해당 tablespace와 그 안의 object들에 대한 dictionary정보를 dump file에 받는 과정이다. 3. 대상 tablespace의 datafile들을 target system으로 이동시킨다. 4. Export dump file을 이동시킨다. 5. Metadata를 target database에 import한다. 6. 필요하다면 이후에 해당 tablespace를 read-write mode로 변경한다. SAMPLE ------ Source database : dbA Target database : dbB 이동 대상 tablespace : TRANS_TS(/u01/data/trans_ts01.dbf, /u01/data/trans_ts02.dbf 로 구성) 1. dbA에서 TRANS_TS를 read only로 변경 alter tablespace TRANS_TS read only ; 2. dbA에서 metadata를 export한다. exp sys/manager file=trans.dmp transport_tablespace=y tablespaces=trans_ts triggers=n constraints=n version이 8.1.6이상이라면, exp system/manager 대신에 exp \'sys/manager as sysdba\'와 같이 주여야 한다. transport_tablespace(Y or N)는 Y로 설정한다. tablespaces에는 transport의 대상이 되는 tablespace를 지정한다. 대상 tablespace의 table들에 걸려있는 trigger, constraint들도 대상으로 할 것인지를 지정한다. 3. TRANS_TS의 두개의 datafile들을 dbB가 존재하는 system으로 binary copy한다. 4. 위의 2번 과정에서 export한 dump file을 dbB가 존재하는 system으로 binary copy한다. 5. dbB에 metadata를 import한다. imp sys/manager file=trans.dmp transport_tablespace=y datafiles=/disk1/trans_ts01.dbf,/disk2/trans_ts02.dbf 8.1.6이상이라면 이 부분도 sys/manager대신에 \'sys/manager as dba\' 와 같이 적는다. transport_tablespace(Y or N)는 Y로 설정한다. datafile의 name은 dbB system에 copy된 filename을 지칭한다. 6. 필요할 경우 tablespace를 read write mode로 변경한다. alter tablespace TRANS_TS read write ; TRANSPORT SET ------------- Transport하고자 하는 tablespace set은 self-contained이어야만 한다. 대상이 되는 tablespace set 내에 partitioned table이 존재한다면 해당 table의 모든 partition들이 이들 tablespace 내에 존재해야 하며, 비슷하게 LOB column의 data들도 table의 data들과 함께 이들 tablespace 내에 존재해야 하는데, 이렇게 서로 관련된 object들이 tablespace set내에 모두 존재하는 것을 self-contained라고 지칭한다. tablespace set이 self-contained하지 않다면 transport할 수 없다. Transport tablespace set이 self-contained인지의 여부를 확인하기 위해서 DBMS_TTS.TRANSPORT_SET_CHECK procedure를 이용한다. 예를 들어, DBMS_TTS.TRANSPORT_SET_CHECK(ts_list=>'A,B,C',incl_constraints=>TRUE) 을 수행하면 A, B, C 세개의 tablespace로 구성된 transport tablespace set이 self-contained인지에 대한 정보를 TRANSPORT_SET_VIOLATIONS view에 기록해 준다. incl_constraints를 설정하면 referencial(foreign key) constraint에 대해서도 self-contained 여부를 check해준다. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |