Поделиться через


Копирование данных из Oracle и обратно с помощью Фабрики данных Azure или Azure Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается, как с помощью действия Copy в Фабрике данных Azure копировать данные в базу данных Oracle и из нее. Она основана на обзоре действия копирования.

Это важно

Соединитель Oracle версии 2.0 обеспечивает улучшенную встроенную поддержку функций Oracle. Если вы используете соединитель Oracle версии 1.0 в решении, обновите соединитель Oracle до 31 октября 2025 г. Дополнительные сведения о разнице между версией 2.0 и версией 1.0 см. в этом разделе .

Поддерживаемые возможности

Этот соединитель Oracle поддерживается для следующих возможностей:

Поддерживаемые возможности ИНФРАКРАСНЫЙ
Копирование (источник данных/приемник данных) (1) (2)
Операция поиска (1) (2)
Действие скрипта (1) (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

В таблице Поддерживаемые хранилища данных и форматы перечислены хранилища данных, которые поддерживаются как источники или приемники для операции копирования.

В частности, этот соединитель Oracle поддерживает:

  • Следующие версии базы данных Oracle для версии 2.0:
    • Oracle Database 19c и выше
    • Oracle Database 18c и выше
    • Oracle Database 12c и выше
  • Следующие версии базы данных Oracle для версии 1.0:
    • Oracle 19c R1 (19.1) и более поздней версии
    • Oracle 18c R1 (18.1) и более поздней версии
    • Oracle 12c R1 (12.1) и более поздней версии
    • Oracle 11g R1 (11.1) и более поздней версии
    • Oracle 10g R1 (10.1)м
    • Oracle 9i R2 (9.2) и более поздней версии
    • Oracle 8i R3 (8.1.7) и более поздней версии
    • Сервис Oracle Database Cloud Exadata
  • Параллельное копирование из источника Oracle. Дополнительные сведения см. в разделе Параллельное копирование из Oracle.

Примечание.

Прокси-сервер Oracle не поддерживается.

Предварительные условия

Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.

Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.

Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.

Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.

Среда выполнения интеграции содержит встроенный драйвер Oracle. Поэтому вам не нужно вручную устанавливать драйвер при копировании данных из базы данных Oracle и в нее.

Начало работы

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы для Oracle с помощью пользовательского интерфейса

Выполните приведенные ниже действия, чтобы создать связанную службу для Oracle с помощью пользовательского интерфейса на портале Azure.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Выполните поиск по запросу "Oracle" и выберите соединитель Oracle.

    Снимок экрана: соединитель Oracle.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Снимок экрана: конфигурация связанной службы для Oracle.

Сведения о конфигурации соединителя

Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей, характерных для коннектора Oracle.

Свойства связанной службы

Соединитель Oracle версии 2.0 поддерживает TLS 1.3. Ознакомьтесь с этим разделом , чтобы обновить версию соединителя Oracle с версии 1.0. Сведения о свойстве см. в соответствующих разделах.

Версия 2.0

Связанная служба Oracle поддерживает следующие свойства при применении версии 2.0:

Недвижимость Описание: Обязательное поле
тип Для свойства type необходимо задать значение Oracle. Да
версия Версия, которую вы указали. Значение равно 2.0. Да
сервер Расположение базы данных Oracle, к которой требуется подключиться. Чтобы указать его, можно ссылаться на конфигурацию свойства сервера . Да
тип аутентификации Тип проверки подлинности для подключения к базе данных Oracle. Теперь поддерживается только базовая проверка подлинности. Да
имя пользователя Имя пользователя базы данных Oracle. Да
пароль Пароль базы данных Oracle. Пометьте это поле как SecureString для безопасного хранения. Вы можете также указать секрет, хранящийся в Azure Key Vault. Да
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано иное, по умолчанию используется Azure Integration Runtime. Нет

В зависимости от вашего случая можно задать следующие дополнительные свойства подключения в связанной службе.

Недвижимость Описание: Обязательное поле Значение по умолчанию
клиент шифрования Указывает поведение клиента шифрования. Поддерживаемые значения: accepted, rejectedrequestedили required. Тип: строка Нет required
Типы шифрования клиента Задает алгоритмы шифрования, которые может использовать клиент. Поддерживаемые значения: AES128, AES192, AES256, 3DES1123DES168. Тип: строка Нет (AES256)
cryptoChecksumClient Указывает требуемое поведение целостности данных при подключении этого клиента к серверу. Поддерживаемые значения: accepted, rejectedrequestedили required. Тип: строка Нет required
cryptoChecksumTypesClient Задает алгоритмы крипто-контрольной суммы, которые может использовать клиент. Поддерживаемые значения: SHA1, SHA256, SHA384SHA512. Тип: строка Нет (SHA512)
InitialLobFetchSize Указывает объем, который исходный источник изначально извлекает для столбцов бизнес-объектов. Тип: int Нет 0
размер выборки Указывает количество байтов, которое драйвер выделяет для извлечения данных за один цикл обращения к базе данных. Тип: int Нет 10 МБ
размерКэшаЗапросов Указывает количество курсоров или инструкций, которые необходимо кэшировать для каждого подключения к базе данных. Тип: int Нет 0
initializationString Указывает команду, выданную сразу после подключения к базе данных для управления параметрами сеанса. Тип: строка Нет ноль
ВключитьМассовуюЗагрузку Указывает, следует ли использовать массовую копию или пакетную вставку при загрузке данных в базу данных. Тип: логический Нет правда
поддержкаТиповДанныхV1 Указывает, следует ли использовать сопоставления типов данных версии 1.0. Не устанавливайте это значение true, если вы не хотите поддерживать обратную совместимость с сопоставлениями типов данных версии 1.0. Тип: логический Нет, это свойство предназначено только для обратной совместимости. неправда
fetchTswtzAsTimestamp Указывает, возвращает ли драйвер значение столбца с типом данных TIMESTAMP WITH TIME ZONE как DateTime или string. Этот параметр игнорируется, если значение 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)))
Именование Easy Connect Plus salesserver1:1521/sales.us.example.com
Имя служб Oracle Net Services (псевдоним TNS) ( только для локальной среды выполнения интеграции) продажи

В следующем списке показаны поддерживаемые параметры, используемые в server. Если вы используете параметры, которые не находятся в следующем списке, подключение завершается ошибкой.

  • При использовании среды выполнения интеграции Azure:

    ведущий
    ПОРТ
    ПРОТОКОЛ
    Название_сервиса
    идентификатор безопасности (SID)
    INSTANCE_NAME
    СЕРВЕР
    ТАЙМАУТ СОЕДИНЕНИЯ
    Количество_повторных_попыток
    ЗАДЕРЖКА_ПОВТОРА
    SSL_VERSION
    SSL_SERVER_DN_MATCH (проверка соответствия имени сервера SSL)
    SSL_SERVER_CERT_DN

  • При использовании локальной среды выполнения интеграции:

    ведущий
    ПОРТ
    ПРОТОКОЛ
    ВКЛЮЧИТЬ
    Время истечения срока
    ПЕРЕКЛЮЧЕНИЕ НА РЕЗЕРВ
    балансировка нагрузки
    Размер_буфера_приема
    SDU
    РАЗМЕР_БУФЕРА_ОТПРАВКИ
    исходный_маршрут
    ТИП_УСЛУГИ
    COLOCATION_TAG
    Префикс_ИД_ПОДКЛЮЧЕНИЯ
    Режим резервирования
    GLOBAL_NAME
    HS
    INSTANCE_NAME
    граница бассейна
    КЛАСС_ПОДКЛЮЧЕНИЯ_ПУЛА
    Имя пула
    ЧИСТОТА БАССЕЙНА
    База данных RDB
    Ключ шардирования
    ИД_КЛЮЧА_ШАРДИРОВАНИЯ
    SUPER_SHARDING_KEY
    СЕРВЕР
    Название_сервиса
    идентификатор безопасности (SID)
    ИМЯ_СЛУЖБЫ_ТУННЕЛЯ
    SSL_АУТЕНТИФИКАЦИЯ_КЛИЕНТА
    АЛИАС_SSL_СЕРТИФИКАТА
    SSL_CERTIFICATE_THUMBPRINT (Отпечаток сертификата SSL)
    SSL_VERSION
    SSL_SERVER_DN_MATCH (проверка соответствия имени сервера SSL)
    SSL_SERVER_CERT_DN
    МЕСТОПОЛОЖЕНИЕ_КАРМАНА
    ТАЙМАУТ СОЕДИНЕНИЯ
    Количество_повторных_попыток
    ЗАДЕРЖКА_ПОВТОРА
    TRANSPORT_CONNECT_TIMEOUT (тайм-аут подключения транспорта)
    RECV_TIMEOUT
    Компрессия
    УРОВНИ СЖАТИЯ

Версия 1.0

Связанная служба Oracle поддерживает следующие свойства при применении версии 1.0:

Недвижимость Описание: Обязательное поле
тип Для свойства type необходимо задать значение Oracle. Да
connectionString Указывает сведения, необходимые для подключения к экземпляру базы данных Oracle.
Вы можете также поместить пароль в Azure Key Vault и извлечь конфигурацию password из строки подключения. Ознакомьтесь с приведенными ниже примерами и подробными сведениями в статье Хранение учетных данных в Azure Key Vault.

Поддерживаемые типы подключений: вы можете использовать ИД безопасности Oracle или имя службы 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 в вашу строку подключения. Затем повторите попытку.

При наличии нескольких экземпляров 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).

Дополнительные свойства подключения, которые можно задать в строке подключения в зависимости от сценария

Недвижимость Описание: Допустимые значения
РазмерМассива Количество байтов, которое коннектор может получить за один сетевой запрос. Пример: ArraySize=‭10485760‬.

Чем больше значение, тем больше пропускная способность, поскольку получать данные из сети приходится реже. Чем меньше значение, тем меньше время отклика, так как передача данных с сервера выполняется быстрее.
Целое число от 1 до 4294967296 (4 ГБ). Значение по умолчанию: 60000. Значение 1 не определяет число байтов, а указывает на выделение пространства только для одной строки данных.

Включить шифрование для подключения Oracle можно двумя способами:

  • Чтобы использовать шифрование 3DES и AES, на стороне сервера Oracle перейдите к Oracle Advanced Security (OAS) и настройте соответствующие параметры. Дополнительные сведения см. в этой документации по Oracle. Соединитель Oracle Application Development Framework (ADF) автоматически согласовывает метод шифрования таким образом, чтобы при установлении соединения с Oracle использовался тот метод шифрования, который вы настроили в OAS.

  • Чтобы использовать TLS, настройте truststore проверку подлинности SSL-сервера, применяя один из следующих трех методов:

    • Метод 1 (рекомендуется):

      1. Установите TLS/SSL-сертификат, импортируя его в локальное хранилище сертификатов. Встроенный драйвер Oracle может загрузить необходимый сертификат из хранилища сертификатов.

      2. В службе настройте строку подключения Oracle с помощью EncryptionMethod=1.

    • Метод 2.

      1. Получите сведения о TLS/SSL-сертификате. Получите сведения о сертификате TLS/SSL, закодированном в формате правил кодирования DER или Конфиденциальной улучшенной почты (PEM).

        openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -text
        
      2. В службе настройте строку подключения Oracle с EncryptionMethod=1 и соответствующим TrustStore значением. Например: 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 CERTIFICATE и END 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. truststore Создайте файл с сильными шифрами, такими как AES256.

        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. В службе настройте строку подключения Oracle с EncryptionMethod=1 и соответствующим TrustStore/TrustStorePassword значением. Например, 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 и table. "Нет" для источника, "Да" для стока

Пример:

{
    "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, установите тип источника в действии Copy — OracleSource. В разделе source действия копирования поддерживаются следующие свойства:

Недвижимость Описание: Обязательное поле
тип Свойству типа источника активности копирования необходимо задать значение OracleSource. Да
oracleReaderQuery Используйте пользовательский SQL-запрос для чтения данных. Например, "SELECT * FROM MyTable".
При включении разделенной нагрузки необходимо подключить все соответствующие встроенные параметры раздела в запросе. Примеры см. в разделе Параллельное копирование из Oracle.
Нет
преобразоватьДесятичноеВЦелое Тип Oracle NUMBER с нулевым или неопределенным масштабом будет преобразован в соответствующее целое число. Допустимые значения: true и false (по умолчанию).
Если вы используете Oracle версии 2.0, это свойство может быть задано только в том случае, если значение supportV1DataTypes имеет значение true.
Нет
параметры раздела Задает параметры секционирования данных, используемые для загрузки данных из Oracle.
Допустимые значения: Нет (по умолчанию), PhysicalPartitionsOfTable и DynamicRange.
Если параметр секционирования включен (любое значение, кроме None), степень параллелизма для одновременной загрузки данных из базы данных Oracle управляется настройкой parallelCopies в операции копирования.
Нет
настройки раздела Позволяет указать группу параметров для секционирования данных.
Применяется, если параметр секционирования имеет значение, отличное от None.
Нет
имена разделов Список физических секций, которые необходимо скопировать.
Применяется, если параметр секции имеет значение PhysicalPartitionsOfTable. Если для получения исходных данных используется запрос, подключите ?AdfTabularPartitionName в предложении WHERE. Пример можно найти в разделе Параллельное копирование из Oracle.
Нет
Имя столбца раздела Укажите имя исходного столбца целочисленного типа, который будет использоваться для секционирования по диапазонам при параллельном копировании. Если значение не указано, автоматически определяется первичный ключ таблицы, который используется в качестве столбца секционирования.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionColumnName в предложении WHERE. Пример можно найти в разделе Параллельное копирование из Oracle.
Нет
верхняя граница раздела Максимальное значение столбца секционирования для вывода данных.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionUpbound в предложении WHERE. Пример можно найти в разделе Параллельное копирование из Oracle.
Нет
partitionLowerBound Минимальное значение столбца секционирования для копирования данных наружу.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionLowbound в предложении WHERE. Пример можно найти в разделе Параллельное копирование из 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, в действии Copy задайте тип приемника OracleSink. В разделе sink действия Copy поддерживаются следующие свойства.

Недвижимость Описание: Обязательное поле
тип Для свойства типа приемника действия копирования должно быть задано значение OracleSink. Да
writeBatchSize (размер батча записи) Вставляет данные в таблицу SQL, когда размер буфера достигает значения writeBatchSize.
Допустимые значения: целое число (количество строк).
Нет (значение по умолчанию — 10 000)
writeBatchTimeout Время ожидания завершения операции пакетной вставки перед истечением допустимого времени.
Допустимые значения: Timespan. Например, 00:30:00 (30 минут).
Нет
PreCopyScript Перед записью данных в базу данных Oracle при каждом запуске указывайте SQL-запрос для выполнения действия Copy. Это свойство можно использовать для очистки предварительно загруженных данных. Нет
 максимальное количество одновременных подключений Верхний предел одновременных подключений, установленных к хранилищу данных во время выполнения активности. Указывайте значение только при необходимости ограничить количество одновременных подключений.  Нет

Пример:

"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. Параметры секционирования данных можно найти на вкладке Источник действия Copy.

Снимок экрана с параметрами секционирования

Если включено копирование с секционированием, служба выполняет параллельные запросы к источнику Oracle для загрузки данных по секциям. Степень параллелизма определяется с помощью параметра parallelCopies для действия копирования. Например, если parallelCopies имеет значение 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 секциям. Для них будут применены следующие диапазоны значений идентификаторов: [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 Строка
ИНТЕРВАЛ ОТ ДНЯ ДО СЕКУНДЫ Интервал времени Строка
ДЛИННЫЙ Строка Строка
LONG RAW Байт[] Байт[]
NCHAR Строка Строка
НЦЛОБ Строка Строка
НОМЕР (p,s) Int16, Int32, Int64, Single, Double, Decimal Десятичное число, строка (если p > 28)
ЧИСЛО без указания точности и масштаба Десятичная (256.130) Двойной
NVARCHAR2 Строка Строка
НЕОБРАБОТАННЫЕ Байт[] Байт[]
TIMESTAMP Дата/время Дата/время
Метка времени с локальной временной зоной Дата/время Дата/время
Метка времени с часовым поясом DateTimeOffset (смещение даты и времени) Дата/время
VARCHAR2 Строка Строка
XMLTYPE Строка Строка

NUMBER(p,s) сопоставляется с соответствующим типом данных промежуточной службы версии 2.0 в зависимости от точности (p) и масштабирования (s):

Тип данных временной услуги Состояние
Int16 scale <= 0 AND (точность — масштаб) < 5
Int32 scale <= 0 И 5 <= (точность — масштаб) < 10
Int64 scale <= 0 AND 10 <= (точность − масштаб) < 19
Один точность < 8 И ((масштаб <= 0 И (точность - масштаб) <= 38) ИЛИ (масштаб > 0 И масштаб <= 44))
Десятичное число точность >= 16
Двойной Если ни одно из указанных выше условий не выполняется.

Свойства действия поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Обновление соединителя Oracle

Ниже приведены действия, которые помогут обновить соединитель Oracle:

  1. На странице "Изменить связанную службу " выберите 2.0 в разделе "Версия " и настройте связанную службу, указав свойства связанной службы версии 2.0.

    Для связанных с проверкой подлинности свойств, включая имя пользователя и пароль, укажите исходные значения в соответствующих полях версии 2.0. Другие свойства подключения, такие как узел, порт и имя службы Oracle или идентификатор безопасности Oracle в версии 1.0, теперь являются параметрами server свойства в версии 2.0.

    Например, если настроить связанную службу версии 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" 
            } 
        } 
    }
    

    Идентичная конфигурация связанной службы версии 2.0 с использованием именования Easy Connect (плюс ):

    Снимок экрана связанной службы с использованием простого именования соединителя (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. Чтобы добавить ссылку Azure Key Vault, можно изменить JSON связанной службы, как показано ниже:
    Снимок экрана: использование Azure Key Vault на сервере.

    Обратите внимание, что:

    • Если вы используете имя службы Oracle в версии 1.0, вы можете использовать простое именование (плюс) или дескриптор соединителя в качестве формата сервера в версии 2.0.

    • Если вы используете Oracle SID в версии 1.0, необходимо использовать Дескриптор Соединителя в качестве формата сервера в версии 2.0.

    • Для некоторых дополнительных свойств подключения в версии 1.0 мы предоставляем альтернативные свойства или параметры в свойстве server версии 2.0. См. таблицу ниже, чтобы обновить свойства версии 1.0.

      Версия 1.0 Версия 2.0
      метод шифрования PROTOCOL (параметр в server)
      tnsnames-файл TNS_ADMIN (переменная среды, поддерживаемая в локальной среде выполнения интеграции)
      имя_сервера сервер
      активировать массовую загрузку
      Значение: 1, 0
      включить пакетную загрузку
      Значение: истина, ложь
      Фетчтсвтзастаймштамп
      Значение: 1, 0
      fetchTswtzAsTimestamp
      Значение: истина, ложь
      альтернативные серверы DESCRIPTION_LIST (параметр в server)
      размер массива размер выборки
      предел кешированного курсора размерКэшаЗапросов
      количество_повторов_подключения RETRY_COUNT (параметр в server)
      строка инициализации initializationString
      время ожидания входа CONNECT_TIMEOUT (параметр в server)
      версия криптопротокола SSL_VERSION (параметр в server)
      truststore WALLET_LOCATION (параметр в server)

      Например, если используется alternateservers в версии 1.0, можно задать DESCRIPTION_LIST параметр в свойстве сервера версии 2.0:

      Связанная служба версии 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)"
              }
          }
      }
      

      Идентичная связанная служба версии 2.0 с помощью DESCRIPTION_LIST параметра в дескрипторе соединителя:

      {
          "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.

    Дополнительное свойство supportV1DataTypes подключения в версии 2.0 может снизить трудности обновления, вызванные изменениями типа данных. Установка этого свойства для true обеспечивает согласованность типа данных в версии 2.0 с версией 1.0.

Различия между 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, Single, Double, Decimal
FLOAT(p)-> Double или Decimal в зависимости от точности
NUMBER —> десятичное
TIMESTAMP WITH TIME ZONE —> Смещение даты и времени
ИНТЕРВАЛ ГОДА К МЕСЯЦУ —> Int64
ИНТЕРВАЛ ОТ ДНЯ ДО СЕКУНДЫ —> Интервал времени
Следующие сопоставления используются для преобразования типов данных Oracle в промежуточные типы данных, используемые службой внутри системы.

NUMBER(p,s) —> десятичное число или строка в зависимости от её точности
FLOAT(p)-> Двойной
NUMBER -> Двойной
МЕТКА ВРЕМЕНИ С ЧАСОВЫМ ПОЯСОМ —> ДатаВремя
ИНТЕРВАЛ ГОДА К МЕСЯЦУ —> строка
ИНТЕРВАЛ ДЕНЬ ДО СЕКУНДЫ —> String
Поддержка преобразования DecimalToInteger при копировании из источника, когда supportV1DataTypes установлено в true. Поддержка преобразования DecimalToInteger в копируемом источнике. 
Использование ? в качестве заполнителя для параметров запроса действия скрипта не поддерживается. Вы можете использовать именованный параметр (например :paramA) или позиционный параметр (например :1) в качестве замены. Поддержка использования ? в качестве заполнителя для параметров запроса активности скрипта. 
Поддержка TLS 1.3. TLS 1.3 не поддерживается.
Поддерживается двустороннее подключение TLS/SSL с кошельком Oracle SSO. Дополнительные сведения см. в этой статье. Двусторонний протокол TLS/SSL с кошельком Oracle не поддерживается.