Согласование схемы базы данных SQL Server с Oracle DB

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

У меня есть существующая база данных SQL Server, которая в настоящее время испытывает много проблем с обновлением своих данных, так как использует много недокументированных и нечитаемых устаревших кодов для извлечения информации из разных внешних источников данных. К счастью, существует база данных Oracle, которая, основываясь на характере бизнеса, кажется, содержит всю информацию, требуемую БД SQL Server. Проблема в том, что схемы между двумя средами значительно отличаются. Они не следуют общему соглашению об именах и могут даже не следовать той же норме (некоторые таблицы могут быть плоскими на одном и нормализовать на другом).

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

1 ответ

На рынке существуют коммерческие решения (например, Database Compare Suite, Cross Database Studio), которые могут использоваться для сравнения как однородных, так и гетерогенных сред базы данных. Но неплохо было потратить деньги на эти инструменты только для сравнения схемы.

Могут быть несколько методов/инструментов/решений, которые имеют определенные ограничения, основанные на их объеме. Я даю решение сравнить сопоставление схем между SQL Server и Oracle. Уровень соответствия, такой как содержимое таблицы и структура данных, зависит от вашего уровня реализации.

В моем подходе, предлагая следующие шаги для полного заполнения ваших требований:

  1. Установите сервер ссылок SQL Server в базу данных Oracle. Шаги упоминаются в цепочке ответов.
  2. Теперь обращайтесь к таблицам SQL Server и Oracle непосредственно из среды SQL Server. Можно сравнить данные таблицы с использованием следующего подхода:

SQL Server:

select field1, field2, field_N from openquery(DEV, 'select * from oracle_owner_schema.testtable') 
minus 
select field1, field2, field_N from sqlserver_database.schema_name.testtable

3 Вы можете сравнить структуру данных (длину поля, тип данных, значение по умолчанию и т.д.), Используя таблицу словаря SQL Server и Oracle таким же образом.

Установите сервер ссылок SQL Server в базу данных Oracle

  1. Настройка ODAC

  2. Скопируйте отсутствующие DLL файлы из instaclient в c:\oracle\product...\client_1\BIN [Местоположение, в котором установлен ODAC.]

  3. Добавьте имя хоста, номер порта и имя службы в c:\oracle\product...\client_1\network\admin\tnsnames.ora, sample:

    LOCALSERVER =

    (ОПИСАНИЕ =

    (ADDRESS_LIST =
    
     (ADDRESS = (PROTOCOL = TCP)(HOST = IP_Hostname_Oracle_Server)(PORT = 1521))
    
    )
    
    (CONNECT_DATA =
    
     (SERVICE_NAME = orcl)
    
    )

    )

  4. Конфигурация в SQL Server:

    а. Подключение к серверу SQL

    б. База данных> Объекты сервера> серверы ссылок> поставщики> OraOLEDB.Oracle> Right

    с. Нажмите "Свойства"> "Включить проверку для" Разрешить процесс ", а затем" Сохранить ".

    д. База данных> Объекты сервера> серверы ссылок> Щелкните правой кнопкой мыши> Новый сервер ссылок>

    ************** Общее TAB *************************

Связанный сервер: любое имя для сервера ссылок в MSSQL

Provide name: Oracle Provider

Product Name: Oracle

Datasource: Provide name which you have added in tnsnames.ora 


****************Security TAB***************************

Choose "Be made using this security contest:"

 Remote login: username for remote database <<e.g. guest="">>

 With password: password <<e.g. guest="">>
</e.g.></e.g.>

Как использовать: select * from openquery (Linked_server_Name, 'select * from schema_name.table_name'); т.е. выберите * из openquery (Any Name_for_link_server_in_MSSQL, 'select * from oracle_owner_schema.testtable');

Примечание. Версия ODAC и клиент oracle должны быть одинаковыми.

licensed under cc by-sa 3.0 with attribution.