Oracle Data Pump를 사용하여 데이터 익스포트

Oracle Data Pump는 Autonomous Database와 다른 Oracle 데이터베이스 간에 매우 빠른 대량 데이터 및 메타데이터 이동을 제공합니다.

Oracle은 Autonomous Database에서 다른 Oracle 데이터베이스로 데이터를 익스포트하기 위해 최신 Oracle Data Pump 버전을 사용할 것을 권장합니다. 더 나은 경험을 위해 개선 사항 및 수정 사항이 포함되어 있습니다. 최신 버전의 Oracle Instant Client를 다운로드하고 Oracle Instant Client 다운로드에서 사용 중인 플랫폼용 Oracle Data Pump가 포함된 도구 패키지를 다운로드합니다. Oracle Instant Client 및 Tools 패키지를 다운로드한 후 필요한 설치 단계는 플랫폼 설치 다운로드 페이지의 설치 지침을 참조하십시오.

Oracle Data Pump를 사용하여 Autonomous Database에서 다른 Oracle 데이터베이스로 데이터를 이동하려면 다음 옵션 중 하나를 사용합니다.
  • 옵션 1: 데이터 펌프 익스포트를 사용하여 데이터를 Autonomous Database 디렉토리로 이동

    Oracle Data Pump를 사용하여 데이터를 데이터베이스의 디렉토리로 엑스포트한 다음 디렉토리에서 클라우드 객체 저장소로 데이터를 이동합니다. 이 방법은 Autonomous Database에서 여러 대상 데이터베이스로 데이터를 이동하려는 경우 유용합니다. 데이터를 여러 클라우드 객체 저장소로 익스포트하는 대신 덤프 파일 세트를 한 번 생성하고 여러 대상 데이터베이스에 사용할 수 있습니다.

    다음 단계를 수행하여 Autonomous Database에서 데이터를 데이터베이스의 디렉토리로 익스포트합니다.
    1. 데이터를 Autonomous Database의 디렉토리로 익스포트하고 덤프 파일 세트를 디렉토리에서 클라우드 객체 저장소로 이동합니다. Export Data Using a Directory on Autonomous Database를 참조하십시오.
    2. 클라우드 객체 저장소에서 덤프 파일을 다운로드하고, 데이터를 대상 데이터베이스로 임포트하고, 클라우드 객체 저장소를 정리합니다. Dump 파일 다운로드, 데이터 펌프 임포트 실행 및 객체 저장소 정리를 참조하십시오.
  • 옵션 2: 데이터 펌프 엑스포트를 사용하여 객체 저장소로 데이터 이동

    이 엑스포트 방식을 사용하면 Oracle Data Pump를 사용하여 데이터를 객체 저장소로 직접 엑스포트할 수 있습니다. 이 익스포트 방법은 Oracle Cloud Infrastructure Object Storage 및 Oracle Cloud Infrastructure Object Storage Classic에서 지원됩니다. 그러면 Autonomous Database의 디렉토리에 덤프 파일 세트를 만든 다음 덤프 파일 세트를 클라우드 객체 저장소로 이동하는 오버헤드가 발생하지 않습니다. 데이터를 단일 Target Database로 이동하려는 경우 이 방법을 사용하면 작업을 줄이고 엑스포트 프로세스의 속도를 높일 수 있습니다.

    다음 단계를 수행하여 객체 저장소로 직접 익스포트하여 Autonomous Database에서 데이터를 이동합니다.
    1. Autonomous Database에서 클라우드 객체 저장소로 데이터를 직접 익스포트합니다. Export Data From Autonomous Database to Object Store Directly를 참조하십시오.
    2. 클라우드 객체 저장소에서 덤프 파일을 다운로드하고, 데이터를 대상 데이터베이스로 임포트하고, 클라우드 객체 저장소를 정리합니다. Dump 파일 다운로드, 데이터 펌프 임포트 실행 및 객체 저장소 정리를 참조하십시오.

Autonomous Database에서 디렉토리를 사용하여 데이터 익스포트

Autonomous Database의 디렉토리를 사용하여 데이터를 익스포트하려면 먼저 데이터베이스의 디렉토리에 익스포트된 데이터로 덤프 파일 세트를 생성한 다음 데이터베이스 디렉토리에서 클라우드 객체 저장소로 해당 파일을 업로드해야 합니다.

데이터 펌프를 사용하여 Autonomous Database에서 덤프 파일 세트 생성

  1. 내보낸 데이터가 포함된 덤프 파일을 저장할 디렉토리를 만듭니다. 예:
    CREATE DIRECTORY data_export_dir as 'data_export';
  2. dumpfile 매개변수 세트, filesize 매개변수가 50G 미만으로 설정 및 directory 매개변수 세트를 사용하여 데이터 펌프 익스포트를 실행합니다. 예를 들어, 다음은 ECPU가 64개인 ATPC1라는 이름의 Autonomous Database에서 SALES라는 스키마를 익스포트하는 방법을 보여줍니다.
    expdp sales/password@ATPC1_high 
    directory=data_export_dir 
    dumpfile=exp%L.dmp 
    parallel=16
    encryption_pwd_prompt=yes
    filesize=1G
    logfile=export.log
    Data Pump 파라미터에 대한 참고 사항:
    • ECPU의 경우 parallel를 ECPU 수의 0.25배로 설정해야 합니다. 따라서 위의 예에서 ECPU가 64개인 경우 parallel는 0.25 x 64, 즉 16(expdp 포함)로 설정됩니다.

    • OCPU의 경우 parallel를 OCPU 수와 동일한 값으로 설정해야 합니다. 위 예에서 OCPU가 16개인 경우 parallelexpdp를 사용하여 16으로 설정됩니다.

    • expdp를 사용하여 익스포트하는 동안 encryption_pwd_prompt=yes 매개변수를 사용하는 경우 임포트와 함께 encryption_pwd_prompt=yes를 사용하고 impdp 프롬프트에 동일한 비밀번호를 입력하여 덤프 파일을 해독해야 합니다(익스포트와 함께 제공한 비밀번호 기억). 암호화 암호의 최대 길이는 128바이트입니다.

    • dumpfile 매개변수는 레거시 %U%u 와일드카드와 함께 %L%l 와일드카드를 지원합니다. 예: dumpfile=export%L.dmp.

      Oracle Database 릴리스 12.2 이상에서 익스포트하려면 %L 또는 %l 와일드카드를 사용하십시오. 이 와일드카드는 덤프 파일 파일 이름을 100에서 시작하여 2147483646으로 끝나는 10자리 가변 너비 증분 정수로 3자리로 확장합니다.

    최적의 익스포트 성능을 위해 익스포트 접속에 HIGH 데이터베이스 서비스를 사용하고 PARALLEL 매개변수를 데이터베이스의 CPU 수로 설정합니다. 데이터 펌프 익스포트를 실행하기 위해 접속할 데이터베이스 서비스 이름에 대한 자세한 내용은 자율운영 데이터베이스에 대해 미리 정의된 데이터베이스 서비스 이름을 참조하십시오.

    엑스포트가 완료되면 다음과 같은 query를 실행하여 생성된 덤프 파일을 볼 수 있습니다.
    SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_EXPORT_DIR');
    예를 들어, 이 query의 출력은 생성된 덤프 파일과 엑스포트 로그 파일을 보여줍니다.
    
    OBJECT_NAME                 BYTES  CHECKSUM                   CREATED          LAST_MODIFIED  
    ---------------------- ---------- ----–---- –------------------------–----- --------------------
    exp01.dmp                   12288               12-NOV-19 06.10.47.0 PM GMT       12-NOV-19...
    exp02.dmp                    8192               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    exp03.dmp                 1171456               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    exp04.dmp                  348160               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    export.log                   1663               12-NOV-19 06.10.50.0 PM GMT       12-NOV-19...
    

참고:

  • 전체 익스포트를 수행하거나 다른 사용자가 소유한 객체를 익스포트하려면 DATAPUMP_CLOUD_EXP 롤이 필요합니다.

  • 덤프 파일을 오브젝트 스토리지로 이동하는 데 사용하는 API는 최대 50GB의 파일 크기를 지원하므로 filesize 인수의 파일 크기보다 큰 크기를 지정하지 마십시오.

  • 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 23ai UtilitiesOracle Data Pump Export를 참조하십시오.

Autonomous Database에서 클라우드 객체 저장소로 덤프 파일 세트 이동

  1. Autonomous Database에 연결합니다.

  2. DBMS_CREDENTIAL.CREATE_CREDENTIAL 프로시저를 사용하여 클라우드 객체 스토리지 인증서를 저장합니다. 예:
    BEGIN
      DBMS_CREDENTIAL.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@oracle.com',
        password => 'password'
      );
    END;
    /
    usernamepassword에 제공하는 값은 사용 중인 클라우드 객체 스토리지 서비스에 따라 달라집니다.
    • Oracle Cloud Infrastructure Object Storage: username는 Oracle Cloud Infrastructure 사용자 이름이고 password는 Oracle Cloud Infrastructure 인증 토큰입니다. 인증 토큰 작업을 참조하십시오.

    • Oracle Cloud Infrastructure Object Storage Classic: username은 Oracle Cloud Infrastructure Classic 사용자 이름이며, password은 Oracle Cloud Infrastructure Classic 비밀번호입니다.

      이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다. 인증서 이름에 대해 원하는 이름을 사용할 수 있습니다. 이 단계는 객체 저장소 인증서가 변경되지 않는 한 한 한 번만 필요합니다. 인증서를 저장한 후에는 모든 데이터 로드에 대해 동일한 인증서 이름을 사용할 수 있습니다.

  3. DBMS_CLOUD.PUT_OBJECT을 호출하여 덤프 파일을 Autonomous Database에서 클라우드 객체 저장소로 이동합니다.

    예:
    BEGIN
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp01.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp01.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp02.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp02.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp03.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp03.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp04.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp04.dmp');
    END;
    /

    PUT_OBJECT에 대한 자세한 내용은 PUT_OBJECT 프로시저를 참조하십시오.

Autonomous Database에서 객체 저장소로 직접 데이터 익스포트

Oracle Data Pump를 사용하여 Autonomous Database에서 클라우드 객체 저장소로 데이터를 직접 익스포트하는 방법을 보여줍니다.

  1. Autonomous Database에 접속합니다.
  2. DBMS_CREDENTIAL.CREATE_CREDENTIAL 프로시저를 사용하여 클라우드 객체 스토리지 인증서를 저장합니다. 예를 들면, 다음과 같습니다.
    BEGIN
      DBMS_CREDENTIAL.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
               username => 'adb_user@oracle.com',
        password => 'password'
        );
    END;
    /
    사용자 이름 및 비밀번호에 제공하는 값은 사용 중인 클라우드 객체 스토리지 서비스에 따라 다릅니다.
    • Oracle Cloud Infrastructure Object Storage: usernameOracle Cloud Infrastructure 사용자 이름이고 passwordOracle Cloud Infrastructure 인증 토큰입니다. 인증 토큰 작업을 참조하십시오.
    • Oracle Cloud Infrastructure Object Storage Classic: usernameOracle Cloud Infrastructure Classic 사용자 이름이며, passwordOracle Cloud Infrastructure Classic 비밀번호입니다.

    이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다. 인증서 이름에 대해 원하는 이름을 사용할 수 있습니다. 이 단계는 객체 저장소 인증서가 변경되지 않는 한 한 한 번만 필요합니다. 인증서를 저장한 후에는 모든 데이터 로드에 대해 동일한 인증서 이름을 사용할 수 있습니다.

  3. ADMIN 사용자로서 위 단계에서 정의한 인증서를 Autonomous Database에 대한 기본 인증서로 설정합니다.
    예:
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'DEF_CRED_NAME';
  4. 클라우드 객체 스토리지의 기존 버킷에 대한 URL로 설정된 dumpfile 매개변수를 사용하여 데이터 펌프 익스포트를 실행합니다(파일 이름 또는 exp%U.dmp와 같은 대체 변수가 있는 파일 이름으로 끝남).
    • Oracle Data Pump 버전 19.9 이상:
      credential 매개변수를 Step 2에서 만든 자격 증명 이름으로 설정합니다. 예:
      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      credential=DEF_CRED_NAME \
      dumpfile=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index
      이 예에서 dumpfileus-ashburn-1 영역의 mybucket 버킷에서 이름이 export<number>.dmp와 일치하는 모든 파일을 지정하는 Oracle Cloud Infrastructure Swift URI입니다. (adbdpreview1는 버킷이 상주하는 오브젝트 스토리지 네임스페이스입니다.)
    • Oracle Data Pump 19.9 이전 버전:
      dumpfile 매개변수의 값을 default_credential 키워드와 콜론으로 시작합니다. 예:
      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      dumpfile=DEF_CRED_NAME:https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \ 
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index 
      이 예에서는 dumpfile 매개변수의 default_credential 키워드가 필요합니다.
    Oracle Data Pump 파라미터에 대한 참고 사항:
    • 기본적으로 Oracle Data Pump Export는 덤프 파일 세트에 쓰기 전에 메타 데이터만 압축합니다. 덤프 파일 세트에 쓰기 전에 메타데이터 및 데이터를 압축하도록 compression 매개변수를 ALL로 설정할 수 있습니다. 자세한 내용은 Oracle Database 19c UtilitiesCOMPRESSION 또는 Oracle Database 23ai Utilities를 참조하십시오.

    • dumpfile 매개변수는 레거시 %U%u 와일드카드와 함께 %L%l 와일드카드를 지원합니다. 예: dumpfile=export%L.dmp.

      Oracle Database 릴리스 12.2 이상에서 익스포트하려면 %L 또는 %l 와일드카드를 사용하십시오. 이 와일드카드는 덤프 파일 파일 이름을 100에서 시작하여 2147483646으로 끝나는 10자리 가변 너비 증분 정수로 3자리로 확장합니다.

      자세한 내용은 Oracle Data Base 19c Utilities 또는 Oracle Data Base 23ai UtilitiesParameters Available in Data Pump Export Command-Line Mode를 참조하십시오.

    • 최상의 익스포트 성능을 위해 익스포트 접속에 high 데이터베이스 서비스를 사용하고 parallel 매개변수를 Autonomous Database의 OCPU 수와 동일하거나 ECPU 수의 0.25배로 설정합니다. 데이터 펌프 익스포트를 실행하기 위해 접속할 데이터베이스 서비스 이름에 대한 자세한 내용은 자율운영 데이터베이스에 대해 미리 정의된 데이터베이스 서비스 이름을 참조하십시오.

    • 다른 클라우드 오브젝트 스토리지 서비스에 대한 덤프 파일 URL 형식은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

    Autonomous Database의 허용되지 않는 객체에 대한 자세한 내용은 Limitations on the Use of SQL Commands을 참조하십시오.

  5. 결과를 검증합니다.
    Oracle Data Pump는 빠른 업로드를 위해 각 덤프 파일 부분을 작은 조각으로 나눕니다. Oracle Cloud Infrastructure 오브젝트 스토리지 콘솔에는 내보내는 각 덤프 파일 부분에 대해 여러 개의 파일이 표시됩니다. 실제 덤프 파일의 크기는 0으로 표시되고 관련 파일 조각은 10MB 이하로 표시됩니다. 예:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa

    주:

    Oracle Cloud Infrastructure 콘솔에서 또는 Oracle Cloud Infrastructure CLI를 사용하여 0바이트 덤프 파일을 다운로드해도 전체 덤프 파일은 제공되지 않습니다. 객체 저장소에서 전체 덤프 파일을 다운로드하려면 curl과 같은 Swift를 지원하는 도구를 사용하고 사용자 로그인 및 Swift 인증 토큰을 제공합니다. 예:
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/export01.dmp

덤프 파일 다운로드, 데이터 펌프 임포트 실행 및 객체 저장소 정리

필요한 경우 클라우드 객체 저장소에서 덤프 파일을 다운로드하고 Oracle Data Pump 임포트를 사용하여 덤프 파일 세트를 대상 데이터베이스로 임포트합니다. 그런 다음 필요한 정리를 수행합니다.

  1. 클라우드 객체 저장소에서 덤프 파일을 다운로드합니다.

    주:

    데이터를 다른 Autonomous Database로 임포트하는 경우에는 이 단계가 필요하지 않습니다.
    Export Data From Autonomous Database to Object Store Directly에 나와 있는 것처럼 Oracle Data Pump를 사용하여 객체 저장소로 직접 익스포트하는 경우 객체 저장소의 덤프 파일에 크기가 0으로 표시됩니다. Oracle Data Pump는 빠른 업로드를 위해 각 덤프 파일 부분을 작은 조각으로 나눕니다. Oracle Cloud Infrastructure 오브젝트 스토리지 콘솔에는 내보내는 각 덤프 파일 부분에 대해 여러 개의 파일이 표시됩니다. 실제 덤프 파일의 크기는 0으로 표시되고 관련 파일 조각은 10MB 이하로 표시됩니다. 예:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    Oracle Cloud Infrastructure 콘솔에서 또는 Oracle Cloud Infrastructure CLI를 사용하여 0바이트 덤프 파일을 다운로드해도 전체 덤프 파일은 제공되지 않습니다. 객체 저장소에서 전체 덤프 파일을 다운로드하려면 curl과 같은 Swift를 지원하는 도구를 사용하고 사용자 로그인 및 Swift 인증 토큰을 제공합니다. 예:
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    cURL 명령은 URL에서 와일드카드나 대체 문자를 지원하지 않습니다. 객체 저장소에서 덤프 파일 세트를 다운로드하려면 여러 cURL 명령을 사용해야 합니다. 또는 대체 문자를 지원하는 스크립트를 사용하여 단일 명령으로 객체 저장소의 모든 덤프 파일을 다운로드할 수 있습니다. 예제는 방법: 익스포트에서 cURL을 사용하여 Autonomous Database의 객체 저장소 작업으로 모든 파일을 다운로드하는 방법을 참조하십시오.

  2. Data Pump Import를 실행하여 덤프 파일 세트를 Target Database로 임포트합니다.

    주:

    데이터를 다른 Autonomous Database로 임포트하는 경우 Oracle Data Pump를 사용하여 데이터 로드를 참조하십시오.

    Export Data From Autonomous Database to Object Store Directly에 나와 있는 것처럼 Oracle Data Pump를 사용하여 객체 저장소로 직접 익스포트된 파일의 경우 'datapump' 값을 사용하여 format 매개변수 type를 지원하는 DBMS_CLOUD 프로시저가 포함된 파일을 임포트하는 경우 기본 파일 이름만 제공하면 됩니다. 'datapump' 형식 유형을 지원하는 절차는 청크를 자동으로 검색하고 다운로드합니다.

  3. 가져오기 후 정리 태스크를 수행합니다. 덤프 파일을 대상 데이터베이스로 임포트한 경우 데이터가 포함된 버킷을 삭제하거나 클라우드 객체 저장소 버킷에서 덤프 파일을 제거하고 덤프 파일을 다운로드한 위치에서 덤프 파일을 제거하여 데이터 펌프 임포트를 실행합니다.

자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 23ai UtilitiesParameters Available in Oracle Data Pump Import Command-Line Mode를 참조하십시오.