Проблемы производительности передачи данных между Oracle и SQL Server с использованием SSIS

Я пытаюсь разработать процесс передачи данных из Oracle в SQL Server 2016 с помощью служб SSIS. Это делается с целью удаления производительных процессов из экземпляра SQL Server 2000, где передача была осуществлена ​​с помощью связанного сервера.

Передача, которую я разработал в процессе SSIS, медленная.

Я попытался использовать "родной OLE DB\Microsoft OLE DB Provider для Oracle", а также "родной OLE DB\Microsoft OLE DB Provider для Oracle" соединение OLEDB.

В результате на передачу 9 934 записей набора данных, охватывающих 28 228472 строк, уходит около минуты.

Я попытался использовать компонент "Oracle Source" с "Oracle Connection Manager".

В результате я могу проверить соединение, а также спроектировать процесс и даже предварительно просмотреть набор результатов. Как только я запускаю пакет в моей Visual Studio, он сообщает об ошибке: "Невозможно обновить метаданные компонента для более новой версии компонента. Сбой метода PerformUpgrade".

Я должен быть в состоянии перенести дату в разумные сроки.
Среда, которую я использую, выглядит следующим образом:

Visual Studio: Visual Studio 2019 16.2.0
Режим совместимости проекта SSIS: SQL Server 2016

Целевой сервер SQL: SQL Server 2016 (13.0.5233.0)
Пакет служб SSIS будет запущен на: SQL Server 2016 (13.0.5264.1)

Среда Oracle это:
Oracle Database 12c Standard Edition, выпуск 12.1.0.2.0 - 64-разрядная версия

2 ответа

Решение

Я бы посоветовал использовать режим "Таблица или представление - Быстрая загрузка" для пункта назначения oledb.

И использовать поток данных "upsert" с преобразованием поиска, чтобы минимизировать ввод / вывод при записи данных.

Если возможно, используйте "Полный кеш" в качестве режима поиска (требует ОЗУ).

Вот еще несколько советов, которые могут помочь.

Мне удалось решить проблему производительности, а также убедиться, что данные общего объема переданы.

Я отказался от использования соединения OLEDB в пользу "ADO NET". Я использовал ".Net Providers\OracleClient Data Provider" для источника и ".Net Providers\SqlClient Data Provider" для пункта назначения.

Источник и соединение ADO.net обеспечивают стабильную производительность передачи данных и получают все записи. Передачи между SQL Server по-прежнему работают лучше при подключении к OLEDB. Передачи между источниками ADO и адресатами OLEDB требуют не-Unicode-преобразования в Unicode.

Другие вопросы по тегам