Настройка базы данных Oracle в процессе копирования

В этой статье описывается, как использовать действие копирования в конвейере для копирования данных из базы данных Oracle и в нее.

В частности, этот соединитель базы данных Oracle поддерживает следующее:

  • Следующие версии базы данных Oracle:

    • База данных Oracle 19c и выше
    • База данных Oracle 18c и выше
    • База данных Oracle 12c и выше
    • База данных Oracle 11g и выше
  • Параллельное копирование из источника базы данных Oracle. Дополнительные сведения см. в разделе "Параллельная копия из базы данных Oracle ".

Замечание

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

Поддерживаемая конфигурация

Для настройки каждой вкладки в действии копирования перейдите к следующим разделам соответственно.

Общие

Ознакомьтесь с руководством по общим параметрам, чтобы настроить вкладку "Общие параметры".

Источник

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

Снимок экрана: вкладка источника и список свойств.

Требуются следующие свойства:

  • Подключение. Выберите подключение к базе данных Oracle из списка подключений. Если подключение отсутствует, создайте новое подключение к базе данных Oracle, выбрав "Дополнительно " в нижней части списка подключений.
  • Используйте запрос: выберите из таблицы или запроса.
    • Если выбрать Таблица:

      • Таблица. Укажите имя таблицы в базе данных Oracle для чтения данных. Выберите таблицу из раскрывающегося списка или нажмите клавишу ВВОД вручную , чтобы ввести имя схемы и таблицы.

        Снимок экрана, показывающий использование запроса — таблица.

    • Если выбрать запрос:

      • Запрос. Укажите настраиваемый SQL-запрос для чтения данных. Например: SELECT * FROM MyTable. Обратите внимание, что запрос не должен заканчиваться точкой с запятой (;).

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

        Снимок экрана: использование запроса — запрос.

В разделе "Дополнительно" можно указать следующие поля:

  • Параметр секционирования. Указывает параметры секционирования данных, используемые для загрузки данных из базы данных Oracle. Если параметр секции включен (то есть не None), степень параллелизма для параллельной загрузки данных из базы данных Oracle контролируется степенью параллелизма копирования на вкладке настроек деятельности копирования.

    Если выбрать None, вы решили не использовать секцию.

    Если выбрать физические секции таблицы:

    • Имена секций: укажите список физических секций, которые необходимо скопировать.

      Если для получения исходных данных используется запрос, подключите ?DfTabularPartitionName в предложении WHERE. Пример см. в разделе "Параллельная копия из базы данных Oracle".

      Снимок экрана: конфигурация при выборе физических разделов таблицы.

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

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

      Если для получения исходных данных используется запрос, подключите ?DfRangePartitionColumnName в предложении WHERE. Пример см. в разделе "Параллельная копия из базы данных Oracle".

    • Верхняя граница секции: укажите максимальное значение столбца секции для копирования данных.

      Если для получения исходных данных используется запрос, подключите ?DfRangePartitionUpbound в предложении WHERE. Пример см. в разделе Параллельная копия из базы данных Oracle.

    • Нижняя граница секции: укажите минимальное значение столбца секции для копирования данных.

      Если для получения исходных данных используется запрос, подключите ?DfRangePartitionLowbound в предложении WHERE. Пример см. в разделе Параллельная копия из базы данных Oracle.

      Снимок экрана: конфигурация при выборе динамического диапазона.

  • Время ожидания запроса (минуты): укажите время ожидания для выполнения команды запроса, значение по умолчанию — 120 минут. Если для этого свойства задан параметр, допустимые значения имеют интервал времени, например "02:00:00" (120 минут).

  • Параметры NUMBER: укажите точность и масштаб для NUMBER. Это относится только к типам NUMBER, которые не имеют явно определенных точности и масштаба в базе данных Oracle.

    • Точность. Укажите максимальное число значимых десятичных цифр. Допустимые значения варьируются от 1 до 256. Значение по умолчанию — 256, если оно не указано.

    • Масштабирование: укажите число цифр после десятичной запятой. Допустимые значения варьируются от 0 до 130 и должны быть меньше или равны точности. По умолчанию значения равны 130, если не указано другое.

  • Дополнительные столбцы: добавление дополнительных столбцов данных для хранения относительного пути или статического значения исходных файлов. Выражение поддерживается для последнего.

Назначение

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

Снимок экрана: вкладка назначения.

Требуются следующие свойства:

  • Подключение. Выберите подключение к базе данных Oracle из списка подключений. Если подключение не существует, создайте подключение к базе данных Oracle, выбрав "Дополнительно " в нижней части списка подключений.

  • Таблица: выберите таблицу в базе данных в раскрывающемся списке или нажмите клавишу ВВОД вручную , чтобы ввести имя схемы и таблицы. Если целевая таблица не существует, она автоматически создается на основе исходных данных. Дополнительные сведения о правилах сопоставления для автоматически созданных таблиц см. в разделе "Сопоставление типов данных по умолчанию" для автоматически созданной таблицы Oracle.

  • Поведение записи: описывает запись данных в базу данных Oracle. Допустимые значения: Insert (default) и Upsert.

    • Вставка: Выберите этот параметр, если в исходных данных есть вставки.
    • Upsert: вставьте новые значения в существующую таблицу и обновите существующие значения.
      • Ключевые столбцы: выберите, какой столбец используется для определения того, соответствует ли строка из источника строке из назначения. Можно указать один или несколько столбцов, которые будут рассматриваться как ключевые столбцы. Если ключевой столбец не указан, первичный ключ целевой таблицы используется в качестве ключевого столбца.

В разделе "Дополнительно" можно указать следующие поля:

  • Скрипт предварительного копирования: укажите SQL-запрос для выполнения действия копирования перед записью данных в базу данных Oracle в каждом запуске. Это свойство можно использовать для очистки предварительно загруженных данных.
  • Время ожидания пакетной вставки: время ожидания операции вставки пакета до истечения времени ожидания. Допустимое значение — интервал времени. Например, 00:30:00 (30 минут).
  • Размер пакета записи: укажите количество строк для вставки в таблицу базы данных Oracle в одном пакете. Допустимое значение: целое число (количество строк). Значение по умолчанию — 10 000.
  • Максимальное число одновременных подключений: верхний предел одновременных подключений, установленных в хранилище данных во время выполнения действия. Указывайте значение только при необходимости ограничить количество одновременных подключений.

Сопоставление

Чтобы настроить вкладку "Сопоставление", перейдите к разделу "Настройка сопоставлений" на вкладке "Сопоставление".

Изменение типов данных назначения

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

Например, можно задать тип столбца VAL2 на TIMESTAMP и настроить его масштаб по мере необходимости при сопоставлении его с местом назначения.

снимок экрана с сопоставлением типа целевого столбца.

Настройки

Сведения о настройке вкладки "Параметры" см. в разделе "Настройка других параметров" на вкладке "Параметры".

Сопоставление типов данных для базы данных Oracle

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

Тип данных базы данных Oracle Промежуточный тип данных
BFILE массив байтов;
BINARY_FLOAT Single
BINARY_DOUBLE Double
БЛОБ массив байтов;
CHAR String
CLOB String
DATE DateTime
FLOAT (P < 16) Double
FLOAT (P >≥ 16) Десятичное число
ИНТЕРВАЛ ОТ ГОДА ДО МЕСЯЦА Int64
ИНТЕРВАЛ ОТ ДНЯ ДО СЕКУНДЫ TimeSpan
LONG String
LONG RAW массив байтов;
NCHAR String
НЦЛОБ String
NUMBER(p,s) Int16, Int32, Int64, Single, Double, Decimal
ЧИСЛО без указания точности и масштаба Десятичная (256.130)
NVARCHAR2 String
НЕОБРАБОТАННЫЕ массив байтов;
TIMESTAMP DateTime
Метка времени с локальной временной зоной DateTime
Метка времени с часовым поясом DateTimeOffset
VARCHAR2 String
XMLTYPE String

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

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

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

Промежуточный тип данных Тип данных базы данных Oracle
Single BINARY_FLOAT
Double BINARY_DOUBLE
массив байтов; БЛОБ
String CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB
TimeSpan ИНТЕРВАЛ ОТ ДНЯ ДО СЕКУНДЫ
Типы данных: Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Decimal ЧИСЛО(p,s), ЧИСЛО
DateTime TIMESTAMP, МЕТКА ВРЕМЕНИ С МЕСТНЫМ ЧАСОВЫМ ПОЯСОМ, ДАТА
DateTimeOffset Метка времени с часовым поясом
Boolean NUMBER(p,s), BOOLEAN

Сведения о том, как действие копирования сопоставляет исходную схему и тип данных с назначением, см. в разделе "Сопоставление схем и типов данных".

Сопоставление типов данных по умолчанию для автоматически созданной таблицы Oracle

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

Промежуточный тип данных Тип данных базы данных Oracle
String VARCHAR2(4000)
Байт NUMBER(3,0)
SByte NUMBER(3,0)
Десятичное число NUMBER(38,9)
Int16 NUMBER(5,0)
UInt16 NUMBER(5,0)
Int32 NUMBER(10,0)
UInt32 NUMBER(10,0)
Int64 NUMBER(19,0)
UInt64 NUMBER(20,0)
Single BINARY_FLOAT
Double BINARY_DOUBLE
Boolean ЧИСЛО(1,0)
DateTime TIMESTAMP(7)
DateTimeOffset МЕТКА_ВРЕМЕНИ(7) С ЧАСОВЫМ ПОЯСОМ
TimeSpan ИНТЕРВАЛ ДЕНЬ(8) ДО СЕКУНДА(7)
массив байтов; БЛОБ
ГУИД CHAR(36)

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

  • BINARY_FLOAT
  • BINARY_DOUBLE
  • БЛОБ
  • BOOLEAN
  • CHAR
  • CLOB
  • JSON
  • NCHAR
  • NVARCHAR2
  • VARCHAR2
  • DATE
  • ИНТЕРВАЛ ОТ ГОДА ДО МЕСЯЦА
  • ИНТЕРВАЛ ОТ ДНЯ ДО СЕКУНДЫ
  • ЧИСЛО
  • TIMESTAMP
  • Метка времени с локальной временной зоной
  • Метка времени с часовым поясом

Параллельная копия из базы данных Oracle

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

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

Рекомендуется включить параллельное копирование с секционированием данных, особенно при загрузке большого объема данных из базы данных Oracle. Ниже приведены рекомендуемые конфигурации для разных сценариев. Если данные копируются в файловое хранилище данных, то рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки), так как производительность в таком случае будет выше, чем при записи в один файл.

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

Во время выполнения служба автоматически определяет физические секции и копирует данные по секциям.
Полная загрузка из большой таблицы без физических секций, когда таблица содержит столбец целочисленного типа для секционирования данных. Параметры секции: секция динамического диапазона.
Столбец секционирования: укажите столбец, используемый для секционирования данных. Если значение не указано, то используется столбец с первичным ключом.
Загрузка большого объема данных с помощью пользовательского запроса с физическими секциями. Опции разделов: физические разделы таблицы.
Запрос: SELECT * FROM <TABLENAME> PARTITION("?DfTabularPartitionName") WHERE <your_additional_where_clause>.

Имя секции: укажите имена секций, из которых следует копировать данные. Если оно не указано, служба автоматически обнаруживает физические секции в таблице, указанной в данных базы данных Oracle.
Во время выполнения служба заменяет ?DfTabularPartitionName на фактическое имя раздела и отправляет его в базу данных Oracle.
Загрузка большого объема данных пользовательским запросом без использования физических секций, однако с использованием столбца целочисленного типа для секционирования данных. Параметры секции: секция динамического диапазона.
Запрос: SELECT * FROM <TABLENAME> WHERE ?DfRangePartitionColumnName <= ?DfRangePartitionUpbound AND ?DfRangePartitionColumnName >= ?DfRangePartitionLowbound AND <your_additional_where_clause>.
Столбец секционирования: укажите столбец, используемый для секционирования данных. Секционирование можно выполнять по столбцу с целочисленным типом данных.
Верхняя граница секции и Нижняя граница секции: укажите эти значения, если нужно добавить фильтрацию по столбцу секционирования, чтобы получить данные только в пределах между нижним и верхним значениями.

Во время выполнения служба заменяет ?DfRangePartitionColumnName, ?DfRangePartitionUpbound, и ?DfRangePartitionLowbound на фактическое имя столбца и диапазоны значений для каждой секции и отправляет их в базу данных Oracle.
Например, если указан столбец секционирования ID с нижней границей 1 и верхней границей 80 при этом для параллельного копирования указано значение 4, служба будет извлекать данные по 4 секциям. Их идентификаторы находятся между [1,20], [21, 40], [41, 60], и [61, 80], соответственно.

Совет

При копировании данных из несекционированной таблицы можно использовать параметр секции "Динамический диапазон" для секционирования по целочисленному столбцу. Если в исходных данных нет такого типа столбца, можно использовать функцию ORA_HASH в исходном запросе, чтобы создать столбец и использовать его в качестве столбца секционирования.

Сводка таблицы

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

Сведения об источнике

Имя Описание Значение Обязательное поле Свойство скрипта JSON
Соединение Подключение к исходному хранилищу данных. <подключение к базе данных Oracle> Да подключение
Использование запроса Способ чтения данных из базы данных Oracle. Примените таблицу для чтения данных из указанной таблицы или применения запроса к чтению данных с помощью запросов SQL. Таблица
Запрос
Да /
Для таблицы
Имя схемы Имя схемы. < имя схемы > Нет схема
имя таблицы Имя таблицы. < имя таблицы > Нет таблица
Запрос
Запрос Используйте пользовательский SQL-запрос для чтения данных. Например, SELECT * FROM MyTable. Обратите внимание, что запрос не должен заканчиваться точкой с запятой (;).
При включении секционированной нагрузки необходимо привязать все соответствующие встроенные параметры раздела в запросе. Примеры см. в разделе "Параллельная копия" из раздела базы данных Oracle.
< SQL-запросы > Нет oracleReaderQuery
Параметр секции Параметры секционирования данных, используемые для загрузки данных из базы данных Oracle. Нет (по умолчанию)
Физические секции таблицы
Динамический диапазон
Нет /
Для физических разделов таблицы
Имена секций Список физических секций, которые необходимо скопировать. Если для получения исходных данных используется запрос, подключите ?DfTabularPartitionName в предложении WHERE. < имена разделов > Нет имена разделов
Для динамического диапазона
Имя столбца раздела Укажите имя исходного столбца целочисленного типа, который будет использоваться для секционирования по диапазонам при параллельном копировании. Если значение не указано, автоматически определяется первичный ключ таблицы, который используется в качестве столбца секционирования.
Если для получения исходных данных используется запрос, подключите ?DfRangePartitionColumnName в предложении WHERE. Пример см. в разделе "Параллельная копия из базы данных Oracle".
< Имена столбцов разделов > Нет partitionColumnName
Верхняя граница секции Укажите максимальное значение столбца секционирования для копирования данных. Если вы используете запрос для получения исходных данных, вставьте ?DfRangePartitionUpbound в предложение WHERE. Пример см. в разделе Параллельная копия из базы данных Oracle. < верхняя граница раздела > Нет partitionUpperBound
Нижняя граница раздела Укажите минимальное значение столбца секционирования для копирования данных наружу. Если вы используете запрос для получения исходных данных, внедрите ?DfRangePartitionLowbound в предложение WHERE. Пример см. в разделе Параллельная копия из базы данных Oracle. < нижняя граница раздела > Нет partitionLowerBound
Время ожидания запроса Время ожидания выполнения команды запроса по умолчанию — 120 минут. временной интервал Нет тайм-аут запроса (queryTimeout)
Точность Максимальное число значимых десятичных цифр. Допустимые значения варьируются от 1 до 256. Значение по умолчанию — 256, если оно не указано. < точность > Нет точность числа
Scale Число цифр после десятичной запятой. Допустимые значения варьируются от 0 до 130 и должны быть меньше или равны точности. По умолчанию значения равны 130, если не указано другое. < ваш масштаб > Нет NumberScale
Дополнительные столбцы Добавьте дополнительные столбцы данных для хранения относительного пути или статического значения исходных файлов. Выражение поддерживается для последнего. • Имя
•Ценность
Нет дополнительные колонки
•имя
•ценность

Сведения о назначении

Имя Описание Значение Обязательное поле Свойство скрипта JSON
Соединение Подключение к целевому хранилищу данных. <подключение к базе данных Oracle> Да подключение
Таблица Целевая таблица данных. <имя целевой таблицы> Да /
Имя схемы Имя схемы. < имя схемы > Да схема
имя таблицы Имя таблицы. < имя таблицы > Да таблица
Поведение при записи Описывает запись данных в базу данных Oracle. • вставка (по умолчанию)
• добавление или обновление записи
Нет writeBehavior
Ключевые столбцы Столбец используется для определения того, соответствует ли строка из источника строке из назначения. Можно указать один или несколько столбцов, которые будут рассматриваться как ключевые столбцы. Если ключевой столбец не указан, первичный ключ целевой таблицы используется в качестве ключевого столбца. < ключевые столбцы > Нет ключи (в разделе upsertSettings)
Скрипт предварительного копирования SQL-запрос для выполнения действия копирования перед записью данных в базу данных Oracle в каждом запуске. Это свойство можно использовать для очистки предварительно загруженных данных. < скрипт предварительного копирования > Нет preCopyScript
Тайм-аут записи пакета Время ожидания завершения операции пакетной вставки до истечения тайм-аута. временной интервал Нет writeBatchTimeout
Размер пакета записи Количество строк для вставки в таблицу SQL на пакет. целое число
(Значение по умолчанию — 10 000.)
Нет writeBatchSize
Максимальное число одновременных подключений Верхний предел количества одновременных подключений, устанавливаемых к хранилищу данных в ходе выполнения действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. < максимальное число одновременных подключений > Нет максимальное количество одновременных подключений