다음을 통해 공유


Azure Data Factory 또는 Azure Synapse Analytics를 사용하여 Oracle 간에 데이터 복사

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

이 문서에서는 Azure Data Factory의 복사 작업을 사용하여 Oracle 데이터베이스 간에 데이터를 복사하는 방법을 간략하게 설명합니다. 복사 작업 개요를 기반으로 빌드됩니다.

중요합니다

Oracle 커넥터 버전 2.0은 향상된 네이티브 Oracle 지원을 제공합니다. 솔루션에서 Oracle 커넥터 버전 1.0을 사용하는 경우 2025년 7월 31일 이전에 Oracle 커넥터를 업그레이드하세요. 버전 2.0과 버전 1.0의 차이점에 대한 자세한 내용은 이 섹션 을 참조하세요.

지원되는 기능

이 Oracle 커넥터는 다음과 같은 기능에 지원됩니다.

지원되는 기능 적외선
복사 작업(원본/싱크) 3,4
조회 작업 3,4
스크립트 작업 3,4

① Azure 통합 런타임 ② 자체 호스팅 통합 런타임

복사 작업의 원본 또는 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소 표를 참조하세요.

특히 이 Oracle 커넥터는 다음을 지원합니다.

  • 버전 2.0용 Oracle 데이터베이스의 다음 버전은 다음과 같습니다.
    • Oracle Database 19c 이상
  • 버전 1.0용 Oracle 데이터베이스의 다음 버전은 다음과 같습니다.
    • Oracle 19c R1 (19.1) 이상
    • Oracle 18c R1 (18.1) 이상
    • Oracle 12c R1 (12.1) 이상
    • Oracle 11c R1 (11.1) 이상
    • Oracle 10c R1 (10.1) 이상
    • Oracle 9i R2 (9.2) 이상
    • Oracle 8i R3 (8.1.7) 이상
    • Oracle Database Cloud Exadata Service
  • Oracle 원본에서 병렬 복사. 자세한 내용은 Oracle에서 병렬 복사 섹션을 참조하세요.

참고 항목

Oracle 프록시 서버는 지원되지 않습니다.

필수 조건

데이터 저장소가 온-프레미스 네트워크, Azure 가상 네트워크 또는 Amazon Virtual Private Cloud 내에 있는 경우 자체 호스팅된 통합 런타임을 구성하여 연결해야 합니다.

데이터 저장소가 관리형 클라우드 데이터 서비스인 경우 Azure Integration Runtime을 사용할 수 있습니다. 액세스가 방화벽 규칙에서 승인된 IP로 제한되는 경우 허용 목록에 Azure Integration Runtime IP를 추가할 수 있습니다.

또한 Azure Data Factory의 관리형 가상 네트워크 통합 런타임 기능을 사용하면 자체 호스팅 통합 런타임을 설치하고 구성하지 않고도 온-프레미스 네트워크에 액세스할 수 있습니다.

Data Factory에서 지원하는 네트워크 보안 메커니즘 및 옵션에 대한 자세한 내용은 데이터 액세스 전략을 참조하세요.

통합 런타임은 기본 제공 Oracle 드라이버를 제공합니다. 따라서 Oracle 데이터 복사 작업에는 드라이버를 수동으로 설치할 필요가 없습니다.

시작하기

파이프라인에 복사 작업을 수행하려면 다음 도구 또는 SDK 중 하나를 사용하면 됩니다.

UI를 사용하여 Oracle에 연결된 서비스 만들기

다음 단계를 사용하여 Azure Portal UI에서 Oracle에 연결된 서비스를 만듭니다.

  1. Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.

  2. Oracle을 검색하고 Oracle 커넥터를 선택합니다.

    Oracle 커넥터의 스크린샷

  3. 서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.

    Oracle에 대한 연결된 서비스 구성의 스크린샷

커넥터 구성 세부 정보

다음 섹션에서는 Oracle 커넥터에 한정된 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.

연결된 서비스 속성

Oracle 커넥터 버전 2.0은 TLS 1.3을 지원합니다. 버전 1.0에서 Oracle 커넥터 버전을 업그레이드하려면 이 섹션 을 참조하세요. 속성 세부 정보는 해당 섹션을 참조하세요.

버전 2.0

Oracle 연결된 서비스는 버전 2.0을 적용할 때 다음 속성을 지원합니다.

속성 설명 필수
유형 type 속성은 Oracle로 설정해야 합니다.
버전 지정한 버전입니다. 값은 2.0입니다.
서버 연결하려는 Oracle 데이터베이스의 위치입니다. 서버 속성 구성을 참조하여 지정할 수 있습니다.
인증유형 Oracle 데이터베이스에 연결하기 위한 인증 유형입니다. 이제 기본 인증만 지원됩니다.
사용자 이름 Oracle 데이터베이스 사용자 이름입니다.
암호 Oracle 데이터베이스 암호입니다. 이 필드를 SecureString으로 표시하여 안전하게 저장합니다. 또는 Azure Key Vault에 저장된 비밀을 참조할 수 있습니다.
connectVia 데이터 저장소에 연결하는 데 사용할 통합 런타임입니다. 필수 구성 요소 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime이 사용됩니다. 아니요

사례에 따라 연결된 서비스에서 설정할 수 있는 추가 연결 속성:

속성 설명 필수 기본값
암호화 클라이언트 암호화 클라이언트 동작을 지정합니다. 지원되는 값은 accepted, rejected또는 requestedrequired. 형식: 문자열 아니요 required
암호화 유형 클라이언트 클라이언트에서 사용할 수 있는 암호화 알고리즘을 지정합니다. 지원되는 값은 AES128,AES192, AES2563DES112. 3DES168 형식: 문자열 아니요 (AES256)
cryptoChecksumClient 이 클라이언트가 서버에 연결할 때 원하는 데이터 무결성 동작을 지정합니다. 지원되는 값은 accepted, rejected또는 requestedrequired. 형식: 문자열 아니요 required
cryptoChecksumTypesClient 클라이언트에서 사용할 수 있는 암호화 체크섬 알고리즘을 지정합니다. 지원되는 값은 SHA1, SHA256, SHA384SHA512. 형식: 문자열 아니요 (SHA512)
initialLobFetchSize 데이터 소스가 LOB 열에 대해 처음 가져오는 양을 지정합니다. 형식: int 아니요 0
fetchSize 한 데이터베이스 왕복에서 데이터를 가져오기 위해 드라이버가 할당하는 바이트 수를 지정합니다. 형식: int 아니요 10MB
문장 캐시 크기 각 데이터베이스 연결에 대해 캐시할 커서 또는 문의 수를 지정합니다. 형식: int 아니요 0
initializationString 세션 설정을 관리하기 위해 데이터베이스에 연결한 직후에 실행되는 명령을 지정합니다. 형식: 문자열 아니요
대량 로드 활성화 데이터베이스에 데이터를 로드할 때 대량 복사 또는 일괄 삽입을 사용할지 여부를 지정합니다. 형식: 불리언 아니요 맞다
supportV1DataTypes 버전 1.0 데이터 형식 매핑을 사용할지 여부를 지정합니다. 버전 1.0의 데이터 형식 매핑과 이전 버전과의 호환성을 유지하려는 경우가 아니면 true로 설정하지 마세요. 형식: 불리언 아니요, 이 속성은 이전 버전과의 호환성 전용입니다. 거짓
fetchTswtzAsTimestamp 드라이버가 TIMESTAMP WITH TIME ZONE 데이터 형식을 DateTime 또는 문자열로 사용하여 열 값을 반환할지 여부를 지정합니다. supportV1DataTypes가 true가 아니면 이 설정은 무시됩니다. 형식: 불리언 아니요, 이 속성은 이전 버전과의 호환성 전용입니다. 맞다

예제:

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>", 
            "username": "<user name>", 
            "password": "<password>", 
            "authenticationType": "<authentication type>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

예제: Azure Key Vault에 암호 저장

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>", 
            "username": "<user name>", 
            "authenticationType": "<authentication type>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

server 속성 구성

속성의 경우 server 다음 세 가지 형식 중 하나로 지정할 수 있습니다.

포맷 예시
연결 설명자 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))
간편한 연결(더하기) 이름 지정 salesserver1:1521/sales.us.example.com
Oracle Net Services 이름(TNS 별칭) (자체 호스팅 통합 런타임에만 해당) 영업

다음 목록에서는 .에 사용되는 지원되는 매개 변수를 보여 있습니다 server. 다음 목록에 없는 매개 변수를 사용하면 연결이 실패합니다.

  • Azure 통합 런타임을 사용하는 경우:

    호스트
    포트
    프로토콜
    서비스_이름
    보안 식별자 (SID)
    INSTANCE_NAME
    서버
    CONNECT_TIMEOUT (연결 시간 초과)
    재시도 횟수
    재시도 지연
    SSL_VERSION
    SSL_SERVER_DN_MATCH
    SSL_SERVER_CERT_DN

  • 자체 호스팅 통합 런타임을 사용하는 경우:

    호스트
    포트
    프로토콜
    사용
    만료 시간
    장애 조치(failover)
    로드 밸런스
    RECV_BUF_SIZE (수신 버퍼 크기)
    SDU
    SEND_BUF_SIZE
    SOURCE_ROUTE
    서비스 유형
    COLOCATION_TAG
    CONNECTION_ID_PREFIX
    장애 조치 모드
    GLOBAL_NAME
    HS
    INSTANCE_NAME
    수영장 경계
    POOL_CONNECTION_CLASS
    POOL_NAME
    수영장_순도
    RDB_데이터베이스
    샤딩 키
    SHARDING_KEY_ID
    SUPER_SHARDING_KEY
    서버
    서비스_이름
    보안 식별자 (SID)
    TUNNEL_SERVICE_NAME
    SSL_클라이언트_인증
    SSL 인증서 별칭 (SSL_CERTIFICATE_ALIAS)
    SSL_CERTIFICATE_THUMBPRINT (SSL 인증서 지문)
    SSL_VERSION
    SSL_SERVER_DN_MATCH
    SSL_SERVER_CERT_DN
    지갑 위치
    CONNECT_TIMEOUT (연결 시간 초과)
    재시도 횟수
    재시도 지연
    연결 대기 시간 초과
    RECV_TIMEOUT
    압축
    압축 수준

버전 1.0

Oracle 연결된 서비스는 버전 1.0을 적용할 때 다음 속성을 지원합니다.

속성 설명 필수
유형 type 속성은 Oracle로 설정해야 합니다.
연결 문자열 Oracle 데이터베이스 인스턴스에 연결하는 데 필요한 정보를 지정합니다.
Azure Key Vault에 암호를 입력하고 연결 문자열에서 password 구성을 끌어올 수도 있습니다. 자세한 내용은 다음 샘플 및 Azure Key Vault에 자격 증명 저장을 참조하세요.

지원되는 연결 유형: 데이터베이스를 식별하기 위해 Oracle SID 또는 Oracle 서비스 이름을 사용할 수 있습니다.
- SID를 사용하는 경우: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;
- 서비스 이름을 사용하는 경우: Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>;
고급 Oracle 네이티브 연결 옵션의 경우 자체 호스팅 통합 런타임이 설치된 컴퓨터의 TNSNAMES.ORA 파일에 항목을 추가하고 Oracle 연결 서비스에서 Oracle 서비스 이름 연결 형식을 사용하고 해당 서비스 이름을 구성하도록 선택할 수 있습니다.
connectVia 데이터 저장소에 연결하는 데 사용할 통합 런타임입니다. 필수 구성 요소 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime이 사용됩니다. 아니요

"ORA-01025: UPI 매개 변수 범위를 벗어남" 오류가 발생하고 Oracle 버전이 8i인 경우, 연결 문자열에 WireProtocolMode=1을 추가합니다. 그런 다음, 다시 시도하세요.

장애 조치(failover) 시나리오에 대해 여러 Oracle 인스턴스가 있는 경우, Oracle 연결된 서비스를 만들고 기본 호스트, 포트, 사용자 이름, 암호 등을 입력한 다음 속성 이름을 로 하고 값을 AlternateServers으로 하여 새 "(HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>)"을 추가합니다. 이 때 괄호를 누락하지 않고 콜론(:)을 구분 기호로 사용하도록 합니다. 예를 들어 대체 서버 값 (HostName=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany)는 연결 장애 조치(failover)를 위해 두 개의 대체 데이터베이스 서버를 정의합니다.

경우에 따라 연결 문자열에서 설정할 수 있는 추가 연결 속성이 있습니다.

속성 설명 허용된 값
배열 크기 단일 네트워크 왕복에서 커넥터가 페치할 수 있는 바이트 수입니다. 예를 들면 ArraySize=‭10485760‬입니다.

값이 클수록 네트워크를 통해 데이터를 페치하는 횟수가 줄어들어 처리량이 증가합니다. 값이 작을수록 서버에서 데이터 전송을 기다리는 지연 시간이 줄어들기 때문에 응답 시간이 증가합니다.
1에서 4294967296(4GB)사이의 정수입니다. 기본값은 60000여야 합니다. 값 1은 바이트 수를 정의하지 않지만 정확히 하나의 데이터 행에 대한 공간 할당을 나타냅니다.

Oracle 연결에서 암호화를 사용하도록 설정하려면 다음 두 가지 옵션이 있습니다.

  • 3DES(Triple-DES Encryption) 및 AES(Advanced Encryption Standard)를 사용하려면 Oracle 서버 쪽에서 OAS(Oracle Advanced Security)로 이동하여 암호화 설정을 구성합니다. 자세한 내용은 이 Oracle 설명서를 참조하세요. Oracle ADF(Application Development Framework) 커넥터는 Oracle에 대한 연결을 설정할 때 OAS에서 구성한 암호화 메서드를 사용하도록 자동으로 협상합니다.

  • TLS를 사용하려면 다음 세 가지 방법 중 하나를 적용하여 SSL 서버 인증에 대한 truststore를 설정합니다.

    • 방법 1(권장):

      1. TLS/SSL 인증서를 로컬 인증서 저장소로 가져와 설치합니다. 기본 제공 Oracle 드라이버는 인증서 저장소에서 필요한 인증서를 로드할 수 있습니다.

      2. 서비스에서 EncryptionMethod=1을 사용하여 Oracle 연결 문자열을 구성합니다.

    • 방법 2:

      1. TLS/SSL 인증서 정보를 가져옵니다. TLS/SSL 인증서의 DER(Distinguished Encoding Rules)로 인코딩되거나 PEM(Privacy Enhanced Mail)으로 인코딩된 인증서 정보를 가져옵니다.

        openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -text
        
      2. 서비스에서 EncryptionMethod=1 및 해당하는 TrustStore 값을 사용하여 Oracle 연결 문자열을 구성합니다. 예를 들어 Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----

        참고 항목

        • TrustStore 필드 값에는 data:// 접두사가 있어야 합니다.
        • 여러 인증서에 대한 콘텐츠를 지정할 때 -----BEGIN CERTIFICATE----------END CERTIFICATE-----사이에 각 인증서의 콘텐츠를 지정합니다. 대시(-----)의 수는 BEGIN CERTIFICATEEND CERTIFICATE의 앞과 뒤에 동일해야 합니다. 예시:
          -----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE-----
        • TrustStore 필드는 최대 8192자까지 콘텐츠를 지원합니다.
    • 방법 3:

      1. AES256과 같은 강력한 암호화를 사용하여 truststore 파일을 만듭니다.

        openssl pkcs12 -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -out [Path and name of TrustStore] -passout pass:[Keystore PWD] -keypbe AES-256-CBC -certpbe AES-256-CBC -nokeys -export
        
      2. 자체 호스팅 통합 런타임 머신에 truststore 파일을 배치합니다. 예를 들어 파일을 C:\MyTrustStoreFile에 배치합니다.

      3. 서비스에서 EncryptionMethod=1 및 해당하는 TrustStore/TrustStorePassword 값을 사용하여 Oracle 연결 문자열을 구성합니다. 예: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.

예제:

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "typeProperties": {
            "connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

예제: Azure Key Vault에 암호 저장

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "typeProperties": {
            "connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

데이터 세트 속성

이 섹션에는 Oracle 데이터 세트에서 지원하는 속성의 목록을 제공합니다. 데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트를 참조하세요.

Oracle 간에 데이터를 복사하려면 데이터 세트의 type 속성을 OracleTable로 설정합니다. 다음과 같은 속성이 지원됩니다.

속성 설명 필수
유형 데이터 세트의 type 속성은 OracleTable로 설정해야 합니다.
schema(스키마) 스키마의 이름입니다. 원본에는 아니요이고 싱크에는 예입니다
테이블 테이블/뷰의 이름입니다. 원본에는 아니요이고 싱크에는 예입니다
테이블 이름 스키마가 포함된 테이블/뷰의 이름입니다. 이 속성은 이전 버전과의 호환성을 위해 지원됩니다. 새 워크로드의 경우 schematable을 사용합니다. 원본에는 아니요이고 싱크에는 예입니다

예제:

{
    "name": "OracleDataset",
    "properties":
    {
        "type": "OracleTable",
        "schema": [],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        },
        "linkedServiceName": {
            "referenceName": "<Oracle linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

복사 작업 속성

이 섹션에서는 Oracle 원본 및 싱크에서 지원하는 속성 목록을 제공합니다. 작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인을 참조하세요.

Oracle을 원본으로

데이터 분할을 사용하여 Oracle에서 데이터를 효율적으로 로드하려면 Oracle에서 병렬 복사에서 자세히 알아보세요.

Oracle에서 데이터를 복사하려면 복사 작업의 원본 형식을 OracleSource로 설정합니다. 복사 작업 원본 섹션에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
유형 복사 작업 원본의 type 속성은 OracleSource로 설정해야 합니다.
oracleReaderQuery 사용자 지정 SQL 쿼리를 사용하여 데이터를 읽습니다. 예제는 "SELECT * FROM MyTable"입니다.
분할된 로드를 사용하도록 설정하는 경우 쿼리에 해당하는 기본 제공 파티션 매개 변수를 후크해야 합니다. 예제는 Oracle에서 병렬 복사 섹션을 참조하세요.
아니요
소수점 변환 정수로 크기가 0이거나 지정되지 않은 Oracle NUMBER 형식은 해당 정수로 변환됩니다. 허용되는 값은 truefalse(기본값)입니다.
Oracle 버전 2.0을 사용하는 경우 supportV1DataTypes가 true인 경우에만 이 속성을 설정할 수 있습니다.
아니요
파티션 옵션 Oracle에서 데이터를 로드하는 데 사용되는 데이터 분할 옵션을 지정합니다.
허용되는 값은 None(기본값), PhysicalPartitionsOfTableDynamicRange입니다.
파티션 옵션을 사용하도록 설정하는 경우 (즉, None이 아님), Oracle 데이터베이스에서 데이터를 동시에 로드하는 병렬 처리 수준이 복사 작업에서 parallelCopies 설정으로 제어됩니다.
아니요
파티션 설정 데이터 분할에 대한 설정 그룹을 지정합니다.
파티션 옵션이 None이 아닌 경우 적용됩니다.
아니요
파티션 이름 복사해야 하는 물리적 파티션 목록입니다.
파티션 옵션이 PhysicalPartitionsOfTable인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfTabularPartitionName를 후크합니다. 예제는 Oracle에서 병렬 복사 섹션을 참조하세요.
아니요
분할열이름 병렬 복사를 위해 범위 분할에서 사용되는 정수 형식으로 원본 열의 이름을 지정합니다. 지정하지 않으면 테이블의 기본 키가 자동으로 검색되어 파티션 열로 사용됩니다.
파티션 옵션이 DynamicRange인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionColumnName를 후크합니다. 예제는 Oracle에서 병렬 복사 섹션을 참조하세요.
아니요
파티션 상한值 데이터를 복사할 파티션 열의 최댓값입니다.
파티션 옵션이 DynamicRange인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionUpbound를 후크합니다. 예제는 Oracle에서 병렬 복사 섹션을 참조하세요.
아니요
파티션 하한값 (partitionLowerBound) 데이터를 복사할 파티션 열의 최솟값입니다.
파티션 옵션이 DynamicRange인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionLowbound를 후크합니다. 예제는 Oracle에서 병렬 복사 섹션을 참조하세요.
아니요

예: 파티션이 없는 기본 쿼리를 사용하여 데이터 복사

"activities":[
    {
        "name": "CopyFromOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Oracle input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "OracleSource",
                "convertDecimalToInteger": false,
                "oracleReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Oracle을 싱크로

Oracle에 데이터를 복사하려면 복사 작업의 싱크 형식을 OracleSink로 설정합니다. 복사 작업 싱크 섹션에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
유형 복사 작업 싱크의 type 속성을 OracleSink로 설정해야 합니다.
쓰기배치크기 버퍼 크기가 writeBatchSize에 도달하면 SQL 테이블에 데이터를 삽입합니다.
허용되는 값은 정수(행 수)입니다.
아니요(기본값: 10,000)
writeBatchTimeout 시간이 초과되기 전에 완료하려는 배치 삽입 작업을 위한 대기 시간입니다.
허용되는 값은 시간 범위입니다. 예를 들어 "00:30:00"(30분)입니다.
아니요
preCopyScript 각 실행 시 Oracle에 데이터를 쓰기 전에 실행할 복사 작업에 대한 SQL 쿼리를 지정합니다. 이 속성을 사용하여 미리 로드된 데이터를 정리할 수 있습니다. 아니요
 최대 동시 연결 작업 실행 중 데이터 저장소에 설정된 동시 연결의 상한입니다. 동시 연결을 제한하려는 경우에만 값을 지정합니다.   아님

예제:

"activities":[
    {
        "name": "CopyToOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Oracle output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "OracleSink"
            }
        }
    }
]

Oracle에서 병렬 복사

Oracle 커넥터는 Oracle에서 병렬로 데이터를 복사하는 기본 제공 데이터 분할을 제공합니다. 복사 작업의 원본 탭에서 데이터 분할 옵션을 찾을 수 있습니다.

파티션 옵션의 스크린샷

분할된 복사를 사용하도록 설정하면 서비스가 Oracle 원본에 대한 병렬 쿼리를 실행하여 파티션별로 데이터를 로드합니다. 병렬 수준은 복사 작업의 parallelCopies 설정에 의해 제어됩니다. 예를 들어 parallelCopies를 4로 설정하는 경우, 서비스는 지정된 파티션 옵션과 설정에 따라 4개의 쿼리를 동시에 생성하고 실행하며, 각 쿼리는 Oracle 데이터베이스에서 데이터의 일부를 검색합니다.

특히 Oracle 데이터베이스에서 대량의 데이터를 로드하는 경우 특별히 데이터 분할로 병렬 복사를 사용하도록 설정하는 것이 좋습니다. 다양한 시나리오에 대해 권장되는 구성은 다음과 같습니다. 파일 기반 데이터 저장소에 데이터를 복사할 때 여러 파일로 폴더에 쓰는 것이 좋습니다(폴더 이름만 지정). 이 경우 단일 파일에 쓰는 것보다 성능이 좋습니다.

시나리오 제안된 설정
실제 파티션이 있는 대형 테이블에서 전체 로드 파티션 옵션: 테이블의 실제 파티션

실행하는 동안 서비스에서 실제 파티션을 자동으로 검색하여 데이터를 파티션별로 복사합니다.
데이터 분할을 위해 물리적 파티션을 사용하지 않지만 정수 열을 사용하여 대형 테이블에서 전체 로드합니다. 파티션 옵션: 동적 범위 파티션입니다.
파티션 열: 데이터를 분할하는 데 사용되는 열을 지정합니다. 지정하지 않으면 기본 키 열이 사용됩니다.
사용자 지정 쿼리를 사용하여 물리적 파티션과 함께 대량의 데이터를 로드합니다. 파티션 옵션: 테이블의 실제 파티션
쿼리:SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.
파티션 이름: 데이터를 복사할 파티션 이름을 지정합니다. 지정하지 않으면 서비스는 Oracle 데이터 세트에서 지정한 테이블의 물리적 파티션을 자동으로 검색합니다.

실행하는 동안 서비스는 ?AdfTabularPartitionName을 실제 파티션 이름으로 바꾸고 Oracle로 보냅니다.
물리적 파티션이 없는 사용자 지정 쿼리를 사용하여 대량의 데이터를 로드하는 동시에 데이터 분할을 위한 정수 열을 사용합니다. 파티션 옵션: 동적 범위 파티션입니다.
쿼리:SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
파티션 열: 데이터를 분할하는 데 사용되는 열을 지정합니다. 정수 데이터 형식의 열에 대해 분할할 수 있습니다.
파티션 상한파티션 하한: 파티션 열에 대해 필터링하려는 하한과 상한 범위 사이에서만 데이터를 검색하도록 지정합니다.

실행하는 동안 서비스에서 ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound, ?AdfRangePartitionLowbound를 각 파티션의 실제 열 이름과 값 범위로 바꾸고 Oracle에 보냅니다.
예를 들어 파티션 열 “ID”의 하한이 1로 설정되고 상한이 80으로 설정된 경우 병렬 복사를 4로 설정하면 서비스는 4개의 파티션으로 데이터를 검색합니다. 해당 ID는 [1, 20], [21, 40], [41, 60] 및 [61, 80] 사이에 각각 있습니다.

분할되지 않은 테이블에서 데이터를 복사하는 경우 "동적 범위" 파티션 옵션을 사용하여 정수 열에 대해 분할할 수 있습니다. 원본 데이터에 이러한 유형의 열이 없는 경우 원본 쿼리에서 ORA_HASH 함수를 활용하여 열을 생성하고 이를 파티션 열로 사용할 수 있습니다.

예: 물리적 파티션이 있는 쿼리

"source": {
    "type": "OracleSource",
    "query": "SELECT * FROM <TABLENAME> PARTITION(\"?AdfTabularPartitionName\") WHERE <your_additional_where_clause>",
    "partitionOption": "PhysicalPartitionsOfTable",
    "partitionSettings": {
        "partitionNames": [
            "<partitionA_name>",
            "<partitionB_name>"
        ]
    }
}

예: 동적 범위 파티션이 있는 쿼리

"source": {
    "type": "OracleSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

Oracle에 대한 데이터 형식 매핑

Oracle에서 데이터를 복사할 때 서비스 내에서 다음과 같은 중간 데이터 형식 매핑이 사용됩니다. 복사 활동에서 원본 스키마와 데이터 형식을 싱크에 매핑하는 방법에 대한 자세한 내용은 스키마 및 데이터 형식 매핑을 참조하세요.

Oracle 데이터 형식 중간 서비스 데이터 형식(버전 2.0의 경우) 중간 서비스 데이터 형식(버전 1.0의 경우)
BFILE 바이트[] 바이트[]
BINARY_FLOAT 싱글 싱글
BINARY_DOUBLE 두 배 두 배
BLOB 바이트[] 바이트[]
문자 문자열 문자열
CLOB 문자열 문자열
날짜 날짜와 시간 날짜와 시간
FLOAT(P < 16) 두 배 두 배
FLOAT(P >= 16) 십진수 두 배
연월 간격 Int64 문자열
일부터 초까지의 간격 TimeSpan 문자열
길다 문자열 문자열
LONG RAW 바이트[] 바이트[]
NCHAR 문자열 문자열
NCLOB 문자열 문자열
NUMBER(p,s) Int16, Int32, Int64, Double, Single, Decimal 10진수, 문자열(p의 경우 > 28)
전체 자릿수 및 소수 자릿수가 없는 NUMBER 십진수 두 배
NVARCHAR2 문자열 문자열
원본 바이트[] 바이트[]
타임 스탬프 날짜와 시간 날짜와 시간
현지 시간대를 사용하는 타임스탬프 날짜와 시간 날짜와 시간
시간대를 포함한 타임스탬프 DateTimeOffset (날짜 및 시간 오프셋) 날짜와 시간
VARCHAR2 문자열 문자열
XMLTYPE (XML 유형) 문자열 문자열

참고 항목

NUMBER(p,s)는 전체 자릿수(p) 및 배율(s)에 따라 적절한 임시 서비스 데이터 형식에 매핑됩니다.

조회 작업 속성

속성에 대한 자세한 내용을 보려면 조회 작업을 확인하세요.

Oracle 커넥터 업그레이드

Oracle 커넥터를 업그레이드하는 데 도움이 되는 단계는 다음과 같습니다.

  1. 연결된 서비스 편집 페이지에서 버전 아래에서 2.0을 선택하고 연결된 서비스 속성 버전 2.0을 참조하여 연결된 서비스를 구성합니다.

    사용자 이름 및 암호를 포함한 인증 관련 속성의 경우 버전 2.0의 해당 필드에 원래 값을 지정합니다. 버전 1.0의 호스트, 포트 및 Oracle 서비스 이름/Oracle SID와 같은 다른 연결 속성은 이제 버전 2.0에서 속성의server 매개 변수입니다.

    예를 들어 아래와 같이 버전 1.0 연결된 서비스를 구성하는 경우:

    버전 1.0 연결된 서비스의 스크린샷

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "typeProperties": { 
                "connectionString": "host=oraclesample.com;port=1521;servicename=db1" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    }
    

    Easy Connect(Plus) 명명을 사용하는 동일한 버전 2.0 연결된 서비스 구성은 다음과 같습니다.

    간편한 커넥터(Plus) 이름을 사용하는 연결된 서비스의 스크린샷.

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "version": "2.0", 
            "typeProperties": { 
                "server": "oraclesample.com:1521/db1",  
                "username": "<user name>",  
                "password": "<password>",  
                "authenticationType": "<authentication type>" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    } 
    

    커넥터 설명자를 사용하는 동일한 버전 2.0 연결된 서비스 구성은 다음과 같습니다.

    커넥터 설명자를 사용하는 연결된 서비스의 스크린샷

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "version": "2.0", 
            "typeProperties": { 
                "server": "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))",  
                "username": "<user name>",  
                "password": "<password>",  
                "authenticationType": "<authentication type>" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    } 
    

    Azure Key Vault는 server 속성에 대해 지원됩니다. 아래와 같이 연결된 서비스 JSON을 편집하여 Azure Key Vault 참조를 추가할 수 있습니다.
    서버에서 Azure Key Vault를 사용하는 스크린샷

    다음 사항에 유의합니다.

    • 버전 1.0에서 Oracle 서비스 이름을 사용하는 경우 Easy Connect(Plus) 명명 또는 커넥터 설명자를 버전 2.0의 서버 형식으로 사용할 수 있습니다.

    • 버전 1.0에서 Oracle SID 를 사용하는 경우 버전 2.0에서 커넥터 설명자를 서버 형식으로 사용해야 합니다.

    • 버전 1.0의 일부 추가 연결 속성의 경우 버전 2.0의 속성에 server 대체 속성 또는 매개 변수를 제공합니다. 버전 1.0 속성을 업그레이드하려면 아래 표를 참조할 수 있습니다.

      버전 1.0 버전 2.0
      암호화 방식 PROTOCOL(server 내의 매개변수)
      tnsnamesfile TNS_ADMIN(자체 호스팅 통합 런타임에서 지원되는 환경 변수)
      서버 이름 서버
      벌크로드 활성화
      값: 1, 0
      일괄 로드 활성화
      값: true, false
      fetchtswtzastimestamp
      값: 1, 0
      fetchTswtzAsTimestamp
      값: true, false
      대체 서버 DESCRIPTION_LIST(server 안의 매개 변수)
      배열 크기 (arraysize) fetchSize
      캐시된커서제한 문장 캐시 크기
      연결재시도횟수 RETRY_COUNT (server 내의 매개 변수)
      초기화문자열 initializationString
      로그인 타임아웃 CONNECT_TIMEOUT(매개 변수 server)
      크립토프로토콜버전 SSL_VERSION(매개 변수 server에 있는 경우)
      truststore WALLET_LOCATION (server의 매개변수)

      예를 들어, 버전 1.0에서 alternateservers을(를) 사용할 경우, 버전 2.0의 서버 속성에서 DESCRIPTION_LIST 매개 변수를 설정할 수 있습니다.

      1.0 버전 연결 서비스 사용 alternateservers:

      {
          "name": "OracleV1",
          "properties": {
              "type": "Oracle",
              "typeProperties": {
                  "connectionString": "host=oraclesample.com;port=1521;servicename=db1;alternateservers=(HostName= oraclesample2.com:PortNumber=1521:SID=db2,HostName=255.201.11.24:PortNumber=1522:ServiceName=db3)"
              }
          }
      }
      

      DESCRIPTION_LIST에서 매개 변수를 사용하는 동일한 버전 2.0 연결된 서비스:

      {
          "name": "OracleV2",
          "properties": {
              "type": "Oracle",
              "version": "2.0",
              "typeProperties": {
                  "server": "(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample2.com)(PORT=1521))(CONNECT_DATA=(SID=db2)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=255.201.11.24)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=db3))))",
                  "username": "<user name>",  
                  "password": "<password>",  
                  "authenticationType": "<authentication type>" 
              }
          }
      }
      
  2. Oracle 연결된 서비스 버전 2.0에 대한 데이터 형식 매핑은 버전 1.0의 데이터 형식 매핑과 다릅니다. 최신 데이터 형식 매핑을 알아보려면 Oracle에 대한 데이터 형식 매핑을 참조하세요.

    버전 2.0의 추가 연결 속성을 supportV1DataTypes 사용하면 데이터 형식 변경으로 인한 업그레이드 어려움을 줄일 수 있습니다. 버전 2.0의 데이터 형식이 버전 1.0과 일치하도록 이 속성을 true 설정합니다.

Oracle 버전 2.0과 버전 1.0의 차이점

Oracle 커넥터 버전 2.0은 새로운 기능을 제공하며 버전 1.0의 대부분의 기능과 호환됩니다. 다음 표에서는 버전 2.0과 버전 1.0 간의 기능 차이점을 보여 줍니다.

버전 2.0 버전 1.0
다음 매핑은 Oracle 데이터 형식에서 서비스에서 내부적으로 사용하는 중간 서비스 데이터 형식으로 사용됩니다.

NUMBER(p,s) -> Int16, Int32, Int64, Double, Single, Decimal
FLOAT(p)-> 정밀도를 기반으로 하는 Double 또는 Decimal
숫자 -> 소수
시간대 포함 타임스탬프 -> 날짜 시간 오프셋
년에서 월 간격 -> Int64
일수에서 초까지 간격 -> 시간 간격
다음 매핑은 Oracle 데이터 형식에서 서비스에서 내부적으로 사용하는 중간 서비스 데이터 형식으로 사용됩니다.

NUMBER(p,s) -> 정밀도에 따라 10진수 또는 문자열
FLOAT(p)-> 더블
NUMBER -> 더블
시간대가 포함된 타임스탬프 -> 날짜시간
연도에서 월까지의 간격 -> 문자열
DAY TO SECOND 간격 -> 문자열
supportV1DataTypestrue로 설정될 때, 원본 복사에서 convertDecimalToInteger를 지원합니다. 복사 원본에서 convertDecimalToInteger를 지원합니다. 
스크립트 작업 쿼리 매개 변수에 자리 표시자로 사용하는 ? 것은 지원되지 않습니다. 명명된 매개 변수(예: :paramA) 또는 위치 매개 변수(예: :1)를 대체로 사용할 수 있습니다. 스크립트 작업 쿼리 매개 변수의 자리 표시자로 사용할 ? 수 있습니다. 
TLS 1.3을 지원합니다. TLS 1.3은 지원되지 않습니다.