Проблемы производительности передачи данных между 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.