Проект

Общее

Профиль

Действия

Миграция с Oracle на PostgreSQL

Миграция на операционной системе Windows

Подготовка к миграции: установка необходимого ПО

  1. Установка Perl
    Скачайте и установите Strawberry Perl. После установки убедитесь, что Perl добавлен в переменную среды PATH.
    Проверьте установку выполнив команду:
    perl -v
    
  2. Установка Oracle Client. Уже описан процесс в нашей инструкции: ссылка
  3. Установка зависимостей Perl
    1. Откройте командную строку (cmd.exe) от имени администратора и выполните:
      cpan DBI
      cpan DBD::Oracle
      cpan DBD::Pg
      cpan XML::Simple
      cpan DateTime
      cpan JSON
      cpan Term::ReadKey
      cpan Test::Simple
      

      Для установки модулей может потребоваться доступ в интернет и права администратора.
    2. Проверьте установленные зависимости при помощи команд:
      perl -e "use DBI;" 
      perl -e "use DBD::Oracle;" 
      perl -e "use DBD::Pg;" 
      perl -e "use XML::Simple;" 
      perl -e "use DateTime;" 
      perl -e "use JSON;" 
      perl -e "use Term::ReadKey;" 
      perl -e "use Test::Simple;" 
      
  4. Установка ora2pg
    1. 2 варианта для скачивания
      1. Перейдите на их оффициальный сайт. Найдите на сайте и перейлите по ссылке "GitHub Download v<version>". Скачиваем архив с исходниками:
      2. Если у вас установлен git то откройте консоль и перейдите в то местоположение куда хотите скачать. Выполните команду:
        git clone https://github.com/darold/ora2pg.git
        
    2. Перейдите в папку с исходниками:
      cd ora2pg
      

      Установите:
      perl Makefile.PL
      dmake
      dmake install
      

      Примечание: Если dmake не найден, используйте gmake или nmake (входит в Strawberry Perl).
    3. Проверка установки
      ora2pg --version
      

      Если команда возвращает версию — установка прошла успешно.
  5. Скопируйте tnsnames.ora из вашего рабочего клиента или сервера базы данных Oracle. Подробнее что за файл и откуда брать: ссылка
  6. Проверка подключения к Oracle
    1. Создайте конфигурационный файл ora2pg.conf используя файл шаблон который можно найти по пути где установлен ora2pg.
      Пример минимальной конфигурации:
      # Set the Oracle home directory
      ORACLE_HOME    <путь ORACLE_HOME куда установлен Oracle клиент>
      
      # Set Oracle database connection (datasource, user, password)
      ORACLE_DSN    dbi:Oracle:host=<имя ПК в сети или его IP адрес>;service_name=<TNS имя вашего сервера>;port=<порт>
      ORACLE_USER    <имя пользователся администратора Омеги>
      ORACLE_PWD    <пароль пользователся администратора Омеги>
      
    2. Проверьте соединение с помощью команды:
      ora2pg -t SHOW_VERSION -c /путь/к/вашему/ora2pg.conf
      

      или
      ora2pg -c <путь к вашему ora2pg.conf> -e "SELECT * FROM dual;" 
      

      Если соединение успешно, вы увидите ответ или версию базы данных.

Подготовка к миграции: развёртывание PostgreSQL и приведение к одинаковой версии с Oracle

  1. Установить PostgreSQL. Инструкция по установке: ссылка
  2. Произвести импорт стартовой версии БД Omega Production:
    1. Дамп БД брать из нашего фтп сервера: ftp://demo:demo@internal.omp-system.ru/ServerDistr/DB/omp/dmp/postgres/omp_adm.sql
    2. Рекомендуется переименовать базу данных в содержимом дампа на ту же что у вас сейчас на оракл.
      То есть к примеру если у вас пользователь администратор омеги именуется как test_adm то ваша база данных именуется как test_adm.
      В таком примере необходимо открыть дамп как текстовый файл и заменить по всему файлу OMP_ADM на TEST_ADM. (именно заглавными но в поиске/замене отключаем учитывание регистра)
    3. Произвести импорт дампа при помощи консольных скриптов описанные в инструкции импорта/экспорта дампа: ссылка
  3. Выслать отделу сопровождения текущую версию скриптов указанную в окне "О программе" внутри приложения Omega Production и написать чтобы прислали набор скриптов для обновления версии скриптов базы данных
  4. Проверить подключение к базе данных на устройстве на котором ранее устанавливали ora2pg
    1. Используйте следующую команду для подключения:
      psql -h <имя ПК в сети или его IP адрес> -p <порт> -U <пользователь> -d <имя_базы>
      

      Где:
      - <пользователь> - имя пользователя администратора базы данных
      - <имя_базы> - такое же как и имя пользователя администратора базы данных
      При подключении вас попросят ввести пароль.
    2. Проверка соединения
      После успешного подключения вы увидите приглашение вида:
      <имя базы>=#
      

      Это означает, что соединение установлено.
    3. Выполнение простых команд для проверки базы
      • Проверка версий PostgreSQL:
        SELECT version();
        
      • Проверка содержимого OMP_PROPERTIES:
        SELECT * FROM omp_properties op order by op.code LIMIT 10;
        
      • Выйти из psql:
        \q
        
  5. Дождаться ответа от нашего отдела сопровождения и получить набор скриптов для обновления базы данных.
    1. В наборе скриптов должен присутствовать run.bat. Открыть его для редактирования и подправить параметры подключения к базе данных.
      Содержимое данного скрипта будет из себя представлять уже ранее указанный в этой инструкции psql ....
    2. Дождаться конца выполнения. Проверить созданный лог на наличие ошибок.
      Стандартный формат ошибок у PostgreSQL: :ERROR: на английском или :ОШИБКА: на русском в зависимости от выбранного языка при установке СУБД.
      Если ошибки присутствуют то связаться с нами по вопросу их устранений

ВНИМАНИЕ: после данного этапа необходимо приостановить установку обновлений

Миграция: выгрузка из Oracle

  1. Скачайте указанные ниже файлы из этого вики на ПК где установлен ora2pg и сложите их по одному пути:
  2. Отредактируйте файлы указав свои настройки в ниже перечисленных местах
    • Исполняемые .cmd скрипты:
      ora2pg -d -o OTHER_TBLS.pgsql -b <путь к файлам> -c <путь к файлам>\ora2pg_OTHER_TBLS.conf -l <путь к файлам>\OTHER_TBLS.log
      

      Где:
      <путь к файлам> - путь куда вы скачали данные файлы.
  3. Файлы настроек для ora2pg. Файлы формата .conf
    # Set the Oracle home directory
    ORACLE_HOME    <путь ORACLE_HOME куда установлен Oracle клиент>
    
    # Set Oracle database connection (datasource, user, password)
    ORACLE_DSN    dbi:Oracle:host=<имя ПК в сети или его IP адрес>;service_name=<TNS имя вашего сервера>;port=<порт>
    ORACLE_USER    <имя пользователся администратора Омеги>
    ORACLE_PWD    <пароль пользователся администратора Омеги>
    

    # Oracle schema/owner to use
    SCHEMA        <имя пользователя администратора>
    
  4. ВНИМАНИЕ: Если у вас есть свои таблицы внутри нашей схемы которые не заложены в поддерживаемый функционал Omega Production то этот пункт обязателен
    1. Открываем ora2pg_OTHER_TBLS.conf и находим там длинный перечень как на скриншоте ниже:
    2. Добавляем перечень ваших таблиц в этот список разделяя между собой проблемали
  5. ВНИМАНИЕ: начиная с этого момента запуска база уже должна быть заблокирована и на ней никто в том числе пользователя администратора сидеть не должен!!!
    Запускаем .cmd скрипты в порядке указанный ниже.
    1. conv_obj_attrs.cmd
    2. conv_other_tbls.cmd
    3. conv_data.cmd

Миграция: загрузка в PostgreSQL

В этом разделе все команды однообразны и представляют из себя запуск скриптов через psql

psql -h <имя ПК в сети или его IP адрес> -p <порт> -U <пользователь админимтратор омеги> -d <пользователь админимтратор омеги> -f <файл .pgsql> 1>>import_data.log 2>&1

  1. Пускаем все скрипты кроме DATA.pgsql через psql как показано выше. После пуска скрипта проверяем лог на наличие ошибок (формата PostgreSQL).
    Если не хватает какого то объекта из Оракл который не экспортировался - возвращаемся к Миграция: выгрузка из Oracle и повторяем выгрузку с включением недостающего объекта
  2. Скачиваем файл data_wrap.pgsql на ПК где установлен ora2pg.
  3. Пускаем data_wrap.pgsql через psql как показано выше. После пуска скрипта проверяем лог на наличие ошибок (формата PostgreSQL).
    Если не хватает какого то объекта из Оракл который не экспортировался - возвращаемся к Миграция: выгрузка из Oracle и повторяем выгрузку с включением недостающего объекта

Миграция: функции, процедуры и прочее

Мы не производим миграцию функций, процедур и прочего по причинам:
  • Оптимизация времени миграции: базовый макет БД Omega Production предоставляется заранее что позволяет меньше времени затратить на критический сегмент этого процесса где блокируется БД
  • На момент того когда мы сами мигрировали БД для создания стартового макета на POstgreSQL утилита ora2pg не может полностью корректно конвертировать данные объекты.

Если возникнут сложности — пишите нам. Поможем

Обновлено BEA 1 день назад · 5 изменени(я, ий)