Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать действие копирования в конвейере для копирования данных из базы данных 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 |
| Максимальное число одновременных подключений | Верхний предел количества одновременных подключений, устанавливаемых к хранилищу данных в ходе выполнения действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. | < максимальное число одновременных подключений > | Нет | максимальное количество одновременных подключений |