TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-02-06 |
제목 | ORACLE 10G CONVERTING TABLESPACES WITH THE RMAN CONVERT | ||
---|---|---|---|
ORACLE 10G CONVERTING TABLESPACES WITH THE RMAN CONVERT
===================================================================== PURPOSE Oracle 10g RMAN의 New feature인 CONVERT 기능을 사용하여 Byte ordering이 다른 platform간에 Tablespace transporting 하는 방법에 대해서 알아 봅니다. SCOPE Export Transportable Tablespace Feature는 10g Standard Edition에서는 지원하지 않습니다. Explanation RMAN의 CONVERT 명령은 Byte ordering이 서로 다른 platform들 사이에 transporting 작업을 수행할때 사용됩니다. 만약에 Platform들이 동일한 Byte ordering을 가진다면 CONVER명령을 사용하던지 아니면 직접 file을 copy하여 사용할 수도 있습니다. CONVERT명령사용 절차에 대한 개요는 다음과 같습니다: 1) Transport될 tablespace들을 확인합니다. 2) Tablespace들을 READ-ONLY로 만듭니다. Make the tablespaces to be moved read-only. 3) Original Export utility를 사용하여 Transport될 tablespace에 대한 구조적인 정보들을 Data dictionary에서 추출하여 Structural information file을 생성합니다. 이렇게 추출된 정보는 tablespace가 Destination database에 합쳐질 때에 사용됩니다. 4) 만약에 Source System의 Resouce를 사용하여 Conversion 작업을 수행하고자 한다면 이 단계에서 RMAN CONVERT 명령을 사용하여 Source platform의 tablespace를 Target platform에 맞게끔 CONVERSION 합니다. 자세한 내용은 아래 첫 번째 예제를 참조 하십시요 (만약에 Conversion을 위해 Destination System의 Resource를 이용하고 싶다면 이 단계에서는 아무 작업도 하지 마십시요) 5) Datafile 또는 Converted datafile과 함께 structural information file을 target database에 복사합니다. 이때 os system copy, ftp, CD, tape등과 같이 편리한 방법을 사용하여 복사하시면 됩니다. 6) Endian conversion이 필요한 platform들 사이에서 tablespace transporting을 수행한다면, 그리고 Source platform에서 아직 conversion을 수행하지 않았다면 Destination platform 상에서 conversion을 수행해야 합니다. 두 번째 예제가 이에 대해 자세히 설명하고 있습니다. 7) Tablespace set을 target database에 합할때는 Original Import utility를 사용하십시요. <예제 1> Converting Tablespaces on the Source Platform: ======================================================== Sun Solaris 상에서 운영되고 있는 Source database의 두 개의 tablespace, finance (datafiles `/orahome/fin/fin01.dbf' and `/orahome/fin/fin02.dbf') 와 hr (datafiles `/orahome/fin/hr01.dbf' and `/orahome/fin/hr02.dbf')을 Linux PC 상에서 운영되고 있는 Destination Database으로 transport해야 한다고 가정합니다. Converted datafile은 Source host상의 임시 디렉토리인 /tmp/transport_linux/ 안에 생성될 것입니다. 이 예제는 tablespace transport를 준비하는 과정에서 다음과 같은 과정을 이미 수행했다고 가정합니다. a) Transport될 tablespace는 이미 READ-ONLY로 변경되었슴. b) V$TRANSPORTABLE_PLATFORM 안에서 Destination platform의 이름을 이미 찾았슴. c) Destination platform 에 대한 Oracle name을 이미 알고 있슴. Target platform에 대한 Oracle의 internal name을 알아야 합니다. 왜냐하면 이 name은 CONVERT 명령의 parameter로 사용되기 때문입니다. Platform name을 얻기 위해서 V$TRANSPORTABLE_PLATFORM을 Query하면 됩니다. SQL> SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT 2 FROM V$TRANSPORTABLE_PLATFORM; PLATFORM_ID PLATFORM_NAME ENDIAN FORMAT ----------------------- 1 Solaris[tm] OE (32-bit) Big 2 Solaris[tm] OE (64-bit) Big 3 HP-UX (64-bit) Big 4 HP-UX IA (64-bit) Big 5 HP Tru64 UNIX Little 6 AIX-Based Systems(64-bit) Big 7 Microsoft Windows NT Little 10 Linux IA (32-bit) Little 11 Linux IA (64-bit) Little 위 Query 결과에서 PC상의 Linux에 대한 PLATFORM_NAME은 'Linux IA (32-bit)'입니다. 이제 RMAN을 사용하여 Source db의 datafile들을 Destination platform에 맞게 convert 합니다. FORMAT은 converted datafile의 이름과 directory명으로 구성됩니다. % rman TARGET / RMAN> CONVERT TABLESPACE finance,hr TO PLATFORM 'Linux IA (32-bit)' FORMAT='/tmp/transport_linux/%U'; 위 명령의 수행 결과로서 /tmp/transport_linux/ 안에 Converted datafile이 생성됩니다. 이 converted datafile들은 Linux IA (32-bit) platform을 위해 right endian-order로 data를 가집니다. 이 시점 이후로는 tablespace transport의 일반적인 절차에 따라 나머지를 계속 수행해 주시면 됩니다. 아직 structural information file을 생성하지 않았으면 export utility를 사용하여 생성하십시요 그리고 생성된 파일을 /tmp/transport_linux/ 안에 있는 converted datafile과 함께 Destination host로 옮긴 후에 import utility를 사용하여 tablespace를 new database에 포함시기시면 됩니다. <예제 2> Converting Tablespaces on the Target Platform ======================================================== Sun Solaris 상에서 운영되고 있는 Source database의 두 개의 tablespace, finance (datafiles `/orahome/fin/fin01.dbf' and `/orahome/fin/fin02.dbf') 와 hr (datafiles `/orahome/fin/hr01.dbf' and `/orahome/fin/hr02.dbf')을 Linux PC 상에서 운영되고 있는 Destination Database으로 transport해야 한다고 가정합니다. Conversion은 Target host상에서 수행될 것입니다. Unconverted datafile들은 임시로 target host의 /tmp/transport_solaris/ 안에 저장될 것입니다. Datafile들이 Destination database에 포함되면 /orahome/dbs 안에 저장될 것입니다. 이 예제는 Tablespace transport를 준비하는 과정에서 다음과 같은 과정이 이미 수행되었다고 가정합니다: 1) Transport될 source tablespace들을 READ-ONLY로 변경 2) Export utility를 사용하여 structural information file 생성(이 예제에서는 expdat.dmp) 3) expdat.dmp 와 unconverted tablespace datafile을 target host의 /tmp/transport_solaris/ 안에 복사 Unconverted datafile들이 복사된 Directory구조는 다음과 같습니다: /tmp/transport_solaris/fin/fin01.dbf /tmp/transport_solaris/fin/fin02.dbf /tmp/transport_solaris/hr/hr01.dbf /tmp/transport_solaris/hr/hr02.dbf 이제 RMAN의 CONVERT 명령을 사용하여 transport될 datafile들을 Destination host의 format으로 convert합니다. 그러면 /orahom/dbs 아래에 converted된 datafile들이 생성됩니다. Note the following: ================== Tablespace name이 아닌 filename으로 datafile을 구별해야 합니다. datafile이 new database에 포함되기 전에는 Local instance는 transport된 tablespace에 대해서 알 수 없습니다. FORMAT은 converted datafile의 이름과 directory명으로 구성됩니다. Source나 destination platform을 기술하지 않았습니다. 이러한 경우 RMAN은 datafile을 조사함으로써 Source platform이 어떠한 것인지를 결정합니다. 그리고 conversion이 수행되는 platform을 기본적으로 Target platform으로 간주합니다. % rman TARGET / RMAN> CONVERT DATAFILE='/tmp/transport_solaris/*' DB_FILE_NAME_CONVERT '/tmp/transport_solaris/fin','/orahome/dbs/fin', '/tmp/transport_solaris/hr','/orahome/dbs/hr' 위 명령의 수행 결과 /orahome/dbs directory아래에는 다음과 같은 file들이 생성되었습니다: /orahome/dbs/fin/fin01.dbf /orahome/dbs/fin/fin02.dbf /orahome/dbs/hr/hr01.dbf /orahome/dbs/hr/hr02.dbf 이제 tablespace transport에 대한 나머지 일반적인 절차를 수행합니다. converted tablespace의 metadata를 새로운 database에 import합니다. 마지막으로 필요에 따라서 tablespace를 read-write로 변경합니다. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |