0 회신 58565 님이 Dec 11, 2006 6:55 AM에 마지막 답글

    서로 다른 VERSION의 ORACLE에서의 EXPORT & IMPORT (ORACLE7/8/8I/9I DATABASE)

    58565
      제품 : ORACLE SERVER

      작성날짜 : 2002-10-25


      서로 다른 VERSION의 ORACLE에서의 EXPORT & IMPORT (ORACLE7/8/8I/9I DATABASE)
      ===========================================================================


      Purpose
      -------

      Oracle7, Oracle8, Oracle8i 또는 Oracle9i databases를 사용하는
      users들이 Oracle database release x로 부터 data를 export를
      받아서 Oracle database release y로 import를 하려고 하는 경우
      어떤 version의 utility가 사용되어야 하며 또한 data를 export
      하기 전에 어떤 Oracle data dictionary가 준비되어야 하는지
      알아 봅니다.



      Explanation
      -----------

      Oracle EXPORT와 IMPORT utilities를 사용하면 Oracle databases가
      서로다른 hardware와 software configurations을 가진 platforms에
      있더라도 data objects를 서로 전달할 수 있습니다.

      Oracle EXPORT utility는 Oracle database로부터 object
      definitions 과 table data 를 추출하여 disk 또는 tape에 있는
      Oracle binary-format인 export dump file에 저장합니다.
      이 파일들은 FTP를 이용해서 전달될 수 있고 tape인 경우에는
      다른 site로 이동시킬 수 있습니다.
      network을 통해서 export dump file을 이동시키실 때에는 반드시
      binary mode로 file을 전송하여야 합니다.
      만일 export files들을 character mode (ASCII)로 전송할 경우에는
      import시에 IMP-9 또는 IMP-10 에러가 발생하게 됩니다.

      Oracle IMPORT utility는 export dump file로 부터 object
      definitions과 table data를 추출하여 Oracle databse로 insert
      합니다.


      Data Dictionary Views.
      ----------------------
      EXPORT 또는 IMPORT utility 를 사용하기 전에, 반드시 이
      utilities 에 의해 서용될 Data Dictionary가 준비되어야만
      합니다. 다음 script를 실행하면 됩니다.

      UNIX : SQL> @$ORACLE_HOME/rdbms/admin/catexp.sql

      Windows: SQL> @%ORACLE_HOME%\rdbms\admin\catexp.sql

      이 CATEXP.SQL script는 반드시 SYS user로 실행되어야만 합니다.
      이 script는 CATALOG.SQL script에 의해 자동으로 호출됩니다.
      CATEXP.SQL 와 CATALOG.SQL script는 하나의 database에 단지
      한번만 실행되면 됩니다. 정상적인 상태라면 export나 import
      전에 이 script를 실행해 줄 필요는 결코 없습니다.

      CATEXP.SQL는 다음과 같은 일을 해서 database를 export와 import
      에 대해 준비시켜 줍니다.

      - data dictionary에 필요한 export와 import views들을 생성합니다.
      - EXP_FULL_DATABASE role 과 IMP_FULL_DATABASE role을 생성합니다.
      - EXP_FULL_DATABASE role 과 IMP_FULL_DATABASE role에
      필요한 모든 privileges를 할당합니다.
      - EXP_FULL_DATABASE 과 IMP_FULL_DATABASE 를 DBA role에 할당합니다.
      - sys.props$ table을 export 와 import views의 version으로 update
      합니다.
      (이 문서의 마지막 부분을 보시기 바랍니다)

      Oracle8/8i/9i database으로부터 Oracle7 export file를 만들려면
      먼저 Oracle8/8i/9i database 쪽 SYS user에서 CATEXP7.SQL script를
      실행해야 하며 Oracle8/8i/9i server에 대해서 Oracle7 EXPORT
      utility를 실행해야 합니다.

      UNIX : SQL> @$ORACLE_HOME/rdbms/admin/catexp7.sql

      Windows: SQL> @%ORACLE_HOME%\rdbms\admin\catexp7.sql

      이 script는 database를 EXPORT에게 마치 Oracle7 release database
      인것처럼 보이게 하는 export views를 생성시킵니다.
      이 말은 여기서 만들어 지는 views는 Oracle8/8i/9i에 specific한
      objects들을 볼수 없게 됩니다.
      따라서 Oracle7 database에서 어떤 문제도 없이 import가 될 수 있게
      됩니다.

      CATEXP.SQL와 CATEXP7.SQL는 단지 한번만 실행되어야 한다는 것을
      명심하시기 바랍니다. CATEXP.SQL는 Oracle8/8i/9i EXPORT utilities
      가 사용하는 exu8% views를 만들고 CATEXP7.SQL는 Oracle7 EXPORT
      utilities에서 사용하는 exu7% views를 만듭니다.
      그렇기 때문에 SYS user로 두 scripts를 실행한 경우에는 그 scripts
      들을 다시 실행할 필요가 없습니다.
      이 database에 대해서는 Oracle7 또는 Oracle8/8i/9i EXPORT utility
      를 모두 사용할 수 있습니다.

      같은 방법으로 Oracle7 database로 부터 Oracle6 export file을
      만들어 낼 수 있습니다.
      이 경우에 Oracle7 database 에서 SYS user로 CATEXP6.SQL를
      실행시켜 주어야 합니다.


      Basic Compatibility.
      --------------------
      정의
      Source database = data가 export된 database.
      Target database = data를 import할 database.

      1) 언제나 source 또는 target database 중에서 낮은 version의
      EXPORT utility를 사용합니다.

      a) 만일 높은 version의 database로 import하기 위해 export dump
      file을 만드는 경우 (예: Oracle8i에서 Oracle9i로)
      source database version과 같은 version의 EXPORT utility를
      사용하라는 의미입니다. (예에서는 낮은 version이 Oracle8i가
      됩니다.)
      b) 만일 낮은 verion의 database로 import하기 위해 export dump
      file을 만드는 경우 (예: Oracle9i에서 Oralce8i로)
      target database version과 같은 version의 EXPORT utility를
      사용하라는 의미입니다. (예에서는 낮은 version이 Oracle8i가
      됩니다.)
      (1) 만일 Oracle7 database로부터 Oracle6 export file을 만들
      경우에 먼저 Oracle7 databas에서 SYS user로 CATEXP6.SQL를 실행
      한 후 Oracle7 server에 대해 Oracle6 EXPORT utility를 실행
      해야 합니다. 이 script는 database를 EXPORT에게 Oracle6 release
      database인 것 처럼 보이게 합니다.
      (2) Oracle8/8i/9i database로부터 Oracle7 export file을 만들
      경우에 먼저 Oracle8/8i/9i database에서 SYS user로 CATEXP7.SQL
      script를 실행하고 Oracle7 EXPORT utility를 Oracle8/8i/9i server
      에 대해서 실행해야 합니다.
      CATEXP7.SQL script는 database를 EXPORT에게 Oracle7 release
      database처럼 보이도록 합니다.
      (3) Oracle9i database로부터 Oracle8/8i export file을 만들때에는
      특별한 작업이 필요합니다.
      물론 Oracle9i server에 대해서 Oracle8/8i EXPORT utility를 실행
      해야 합니다.
      그리고 Oracle9i에 specific한 기능들은 export할 수 없으며 support
      할 수 없습니다. ( 예를 들어 LOBs나 objects들은 DIRECT=YES를
      주었을때 export 되지 않습니다. 이러한 제약 사항들은 "Oracle9i
      Database Utilities" 메뉴얼에서 참조하실 수 있습니다. )

      2) IMPORT utility는 항상 target database와 같은 version의 것을 사용해
      야 합니다.

      제약 사항들
      -----------
      다음 제약 사항들은 EXPORT 와 IMPORT utilities에 적용이 됩니다.
      자세한 사항은 아래의 matrix를 참조하시기 바랍니다.

      1. dump files들은 특별한 Oracle-binary format으로 저장되어 있기 때문에
      Oracle export dump files은 Oracle IMPORT utility에 의해서만 읽어질
      수 있습니다.
      2. 모든 export dump file은 향후 Oralce major, patch, maintenace
      releases에서 import 가능합니다.
      3. export dump files은 이전 maintenance releases 와 version에서의
      IMPORT utilities로는 읽어질 수 없습니다.
      따라서 version 9 export dump file은 version 8i IMPORT utility
      를 이용해서 import될 수 없습니다.
      그리고 version 8 export dump file은 version 7 IMPORT utility
      로 import될 수 없습니다.
      4. IMPORT는 EXPORT release 5.1.22와 그 이상의 version(최고 같은
      version까지)으로 만들어진 export dump files을 읽을 수 있습니다.
      5. IMPORT는 더 높은 version 이나 maintenance releases의 EXPORT
      utility로 만들어진 export dump files들을 읽을 수 없습니다.
      따라서 release 8.1 export dump file은 release 8.0 IMPORT utility
      로 import되어 질 수 없으며, version 8 export dump file은
      version 7 IMPORT utility로 import될 수 없습니다.
      6. Oracle6 (또는 그 이전의) EXPORT utility는 Oracle8 이나 Oracle8i
      database 에 대해서 사용되어 질 수 없습니다.
      7. 더 낮은 EXPORT utility 가 더 높은 version의 Oracle server와
      실행될 경우, 낮은 version에서 존재하지 않는 database objects의
      categories는 export에서 제외됩니다.
      예를 들어 partitioned tables은 version 7 EXPORT utility로는
      export되어 지지 않습니다.
      만일 version 8 partitioned table을 version 7 database를 이동
      할려면 먼저 table을 non-partitioned table로 재구성하셔야 합니다.




      Matrix 1: Oracle7 이나 더 낮은 database 로 import할때에 사용할
      EXPORT utility
      (IMPORT utility 는 항상 target database의 것을 사용):

      ---------------------------------------------------------------+
      | EXPORT | IMPORT to |
      | from ------------------------------------------------+
      | \/ | 5.x | 6.x | 7.0.x | 7.1.x | 7.2.x | 7.3.x |
      ----------------------------------------------------------
      | 5.x 1) 2)| EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x |
      | 6.x 2)| N/S | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x |
      ----------------------------------------------------------
      | 7.0.x 3)| N/S | EXP6x | EXP70x | EXP70x | EXP70x | EXP70x |
      | 7.1.x 3)| N/A | EXP6x | EXP70x | EXP71x | EXP71x | EXP71x |
      | 7.2.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP72x | EXP72x |
      | 7.3.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP72x | EXP73x |
      ----------------------------------------------------------
      | 8.0.x 4)| not supported | EXP70x | EXP71x | EXP72x | EXP73x |
      | 8.1.x 4)| not supported | EXP70x | EXP71x | EXP72x | EXP73x |
      ----------------------------------------------------------
      | 9.0.x 4)| not supported | EXP70x | EXP71x | EXP72x | EXP73x |
      -----------------------------------------------------------+

      주의:
      1) IMPORT는 EXPORT release 5.1.22와 그 이상의 version(최고 같은
      version까지)으로 만들어진 export dump files을 읽을 수 있습니다.
      2) Oracle5 나 Oracle6 export dump를 Oracle7 IMPORT에서 사용할때:
      특별히 신경써야 하는 것들이 Oracle Utilities Manual,
      Chapter 2 "Import"에 나와 있습니다.
      3) Oracle7으로부터 export해서 Oracle6 database로 이동시킬때는
      먼저 Oracle7 database쪽 SYS user에서 CATEXP6.SQL script를
      실행해야 합니다.
      (이 script는 version6 views를 만들기 위해
      단 한번만 실행되면 됩니다.)
      4) Oracle8, Oracle8i 또는 Oracle9i 에서 export해서 Oracle7
      database에 이도할 경우 먼저 Oracle8/8i/9i database쪽에서
      SYS user로 CATEXP7.SQL script를 수행해야 합니다.
      (이 script는 version7 views를 만들기위해 단 한번만 실행되면
      됩니다.)

      Matrix 2: Oracle8 이나 더 높은 database 로 import할때에 사용할
      EXPORT utility
      (IMPORT utility 는 항상 target database의 것을 사용):

      ------------------------------------------------------------------------+
      | EXPORT | IMPORT to |
      | from --------------------------------------------------------
      | \/ | 8.0.4 | 8.0.5 | 8.0.6 | 8.1.5 | 8.1.6 | 8.1.7 | 9.0.1 |
      ------------------------------------------------------------------+
      | 5.x 1) 2)| EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x |
      | 6.x 2)| EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x |
      | 7.x 3)| EXP7x | EXP7x | EXP7x | EXP7x | EXP7x | EXP7x | EXP7x |
      ------------------------------------------------------------------+
      | 8.0.4 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 |
      | 8.0.5 | EXP804 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 |
      | 8.0.6 | EXP804 | EXP805 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 |
      ------------------------------------------------------------------+
      | 8.1.5 | EXP804 | EXP805 | EXP806 | EXP815 | EXP815 | EXP815 | EXP815 |
      | 8.1.6 | EXP804 | EXP805 | EXP806 | EXP815 | EXP816 | EXP816 | EXP816 |
      | 8.1.7 | EXP804 | EXP805 | EXP806 | EXP815 | EXP816 | EXP817 | EXP817 |
      ------------------------------------------------------------------+
      | 9.0.1 | EXP804 | EXP805 | EXP806 | EXP815 | EXP816 | EXP817 | EXP901 |
      ------------------------------------------------------------------+

      주의:
      1) IMPORT는 EXPORT release 5.1.22와 그 이상의 version(최고 같은
      version까지)으로 만들어진 export dump files을 읽을 수 있습니다.
      2) Oracle5 이나 Oracle6 export dump 를 Oracle8/8i/9i IMPORT와 사용할 경우:
      중요: 특별히 주의해야 할 부분이 있습니다. Oracle Utilities Manual
      에서 Chapter 2 "Import"를 보시기 바랍니다.
      3) Oracle7 export dump를 Oracle8/8i/9i IMPORT와 사용할 경우:
      constraint에서 TO_DATE function이 사용되지 않은 경우 DATE columns의
      constraints들이 invalid로 됩니다. ( 이작업은 이전 version에는 필요하지
      않습니다. )


      Example
      --------


      1. From 7.3.3 to 8.1.6 => EXPORT 7.3.3를 사용해서 7.3.3 database로부터
      export하고 IMPORT 8.1.6를 사용해서 8.1.6
      database로 import합니다.
      2. From 8.1.6 to 8.1.6 => EXPORT 8.1.6를 사용해서 8.1.6 database로부터
      export하고 IMPORT 8.1.6를 사용해서 8.1.6
      database로 import합니다.
      3. From 8.1.5 to 8.0.6 => EXPORT 8.0.6를 사용해서 8.1.5 database로부터
      export하고 IMPORT 8.0.6를 사용해서 8.0.6
      database로 import합니다.
      4. From 8.1.7 to 8.1.6 => EXPORT 8.1.6를 사용해서 8.1.7 database로부터
      export하고 IMPORT 8.1.6를 사용해서 8.1.6
      database로 import합니다.
      5. From 9.0.1 to 8.0.6 => EXPORT 8.0.6를 사용해서 9.0.1 database로부터
      export하고 IMPORT 8.0.6를 사용해서 8.0.6
      database로 import합니다.
      6. From 8.1.7 to 7.3.4 => CATEXP7.SQL이 실행된 적이 없다면 Oracle7
      data dictionary views를 만들기 위해 8.1.7
      database에서 SYS user로 CATEXP7.SQL를 실행하고
      난 후에
                     EXPORT 7.3.4를 사용해서 8.1.7 database로부터
      export하고 IMPORT 7.3.4를 사용해서 7.3.4
      database로 import합니다.
      7. From 8.1.7 to 9.0.1 => EXPORT 8.1.7를 사용해서 8.1.7 database로부터
      export하고 IMPORT 9.0.1를 사용해서 9.0.1
      database로 import합니다.


      주의사항
      --------

      1. EXPORT를 사용하기위해서는 Oracle database에 CREATE SESSION privilege
      권한이 있어야 합니다. 다른 user가 소유한 tables들을 export하기 위해
      서는 EXP_FULL_DATABASE role를 사용가능하게 만들어야 합니다.
      이 role은 모든 DBA에게 부여되어 있습니다.

      2. 새 버전의 database release에서 오래된 EXPORT를 사용하기 위해서는
      database에 접속하기 위해서 SQL*Net 이나 Net8 를 사용해야 합니다.

      EXP <username>/<password>@<instance_alias> ...

      3. 새 버전의 database release에서 오래된 EXPORT를 사용하기 위해서는
      default인 CONVENTIONAL path export를 사용해야 합니다
      (즉: export명령에 DIRECT=YES를 주어서는 안됩니다.)
      conventional path export는 table에서 data를 추출하기위해 SQL SELECT
      statement를 사용합니다.
      direct path export는 data를 직접 바로 읽어 SQL Command Processing
      layer(evaluating buffer)를 거치지 않습니다.

      4. export 와 import views의 version을 확인하려면
      다음처럼 sys.props$를 조회해서 알 수 있습니다.

      SQL> SELECT * FROM sys.props$ WHERE name LIKE 'EXPORT%';

      NAME VALUE$ COMMENT$
      ------------------------- ----------- ------------------------
      EXPORT_VIEWS_VERSION 8 Export views revision #

      EXPORT_VIEWS_VERSION의 의미는 다음과 같습니다.

      -------------------------------
      | EXPORT_VIEWS_VERSION |
      ------------------------------+
      | Value | Introduced in Release |
      ------------------------------+
      | *)| 7.0.* | *) no compatibility - assume zero
      | 1 | 7.1.3 |
      | 2 | 7.2.1 |
      | 3 | 7.2.3 |
      | 4 | 8.0.1 |
      | 5 | 8.0.2 |
      | 6 | 8.0.3 |
      | 7 | 8.0.4 |
      | 8 | 8.1.6 |
      ------------------------------+


      Reference Documents
      -------------------
      <Note.132904.1