4.4. Настройка источника и приёмника Postgres ProGate #

Данный раздел описывает настройку, необходимую для запуска Postgres ProGate.

4.4.1. Настройка источника #

4.4.1.1. Источник Oracle #

Для настройки работы с источником Oracle необходимо выполнить следующие действия:

  • Чтобы запустить prosync, включите на стороне источника расширенные журналы (SUPPLEMENTAL LOGS) на уровне PRIMARY KEY:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS
  • Назначьте пользователю, под которым будет выполняться миграция, следующие права:

    GRANT CONNECT, RESOURCE TO PROGATE_USER;
    
    GRANT EXECUTE ON DBMS_LOGMNR TO PROGATE_USER;
    GRANT EXECUTE ON SYS.DBMS_CRYPTO TO PROGATE_USER;  -- для procheck для сравнивания LOB объектов
    
    GRANT EXECUTE_CATALOG_ROLE TO PROGATE_USER;
    GRANT LOGMINING TO PROGATE_USER;
    
    GRANT SELECT ON V_$LOG TO PROGATE_USER;
    GRANT SELECT ON V_$LOGFILE TO PROGATE_USER;
    GRANT SELECT ON V_$LOGMNR_LOGS TO PROGATE_USER;
    GRANT SELECT ON V_$LOGMNR_CONTENTS TO PROGATE_USER;
    GRANT SELECT ON V_$LOGMNR_PARAMETERS TO PROGATE_USER;
    GRANT SELECT ON V_$ARCHIVED_LOG TO PROGATE_USER;
    GRANT SELECT ON V_$TRANSACTION TO PROGATE_USER;
    GRANT SELECT ON V_$DATABASE TO PROGATE_USER;
  • Для работы prosync с источником Oracle назначьте пользователю, под которым будет выполняться миграция, дополнительные права:

    GRANT CONNECT, RESOURCE TO PROGATE_USER;
    
    GRANT EXECUTE ON DBMS_LOGMNR TO PROGATE_USER;
    
    GRANT EXECUTE_CATALOG_ROLE TO PROGATE_USER;
    GRANT LOGMINING TO PROGATE_USER;
    
    GRANT SELECT ON V_$LOG TO PROGATE_USER;
    GRANT SELECT ON V_$LOGFILE TO PROGATE_USER;
    GRANT SELECT ON V_$LOGMNR_LOGS TO PROGATE_USER;
    GRANT SELECT ON V_$LOGMNR_CONTENTS TO PROGATE_USER;
    GRANT SELECT ON V_$LOGMNR_PARAMETERS TO PROGATE_USER;
    GRANT SELECT ON V_$ARCHIVED_LOG TO PROGATE_USER;
    GRANT SELECT ON V_$TRANSACTION TO PROGATE_USER;
    GRANT SELECT ON V_$DATABASE TO PROGATE_USER;
  • Для работы procheck с источником Oracle поддерживаются следующие драйверы:

    • oracle — не требует установки дополнительного программного обеспечения.

    • godror —требует установки Oracle Instant Client. После распаковки загруженного архива добавьте путь к каталогу в переменную окружения LD_LIBRARY_PATH:

      LD_LIBRARY_PATH=<путь_к_клиенту_oracle>

4.4.1.2. Источник Postgres Pro/PostgreSQL #

Предоставьте пользователю, под которым будет выполняться подключение к базе данных, права CONNECT, SELECT и EXECUTE:

GRANT SELECT ON ALL TABLES IN SCHEMA public TO PROGATE_USER;

GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO PROGATE_USER;

GRANT CONNECT ON DATABASE имя_бд TO PROGATE_USER;

Если в базе данных-источнике содержатся большие объекты, предоставьте пользователю дополнительные права для доступа к ним.

Для чтения изменений установите следующий параметр конфигурации сервера базы данных:

wal_level = logical

Для корректной работы prosync для параметра max_slot_wal_keep_size установите значение, которое превышает объём изменений за время, необходимое для начальной загрузки данных. Если значение недостаточно большое, при запуске prosync могут возникнуть ошибки базы данных: ERROR: can no longer get changes from replication slot (ОШИБКА: из слота репликации больше нельзя получать изменения). В этом случае корректный перенос изменений с помощью prosync становится невозможным. Для миграции данных рекомендуется устанавливать для параметра max_slot_wal_keep_size значение -1.

4.4.2. Настройка приёмника #

Примечание

Для приёмника в виде файлов формата Parquet специальная настройка не требуется.

4.4.2.1. Приёмник Postgres Pro #

Для настройки работы с приёмником Postgres Pro выполните следующие действия:

  • Установите и активируйте следующие расширения, доступные, начиная с Postgres Pro 16.4:

    CREATE EXTENSION IF NOT EXISTS pgpro_bfile;
    CREATE EXTENSION IF NOT EXISTS pgpro_sfile;
    CREATE EXTENSION IF NOT EXISTS dbms_lob;
    
    do
    $$
    BEGIN
        PERFORM sf_initialize();
    EXCEPTION WHEN OTHERS THEN
        RAISE NOTICE 'already initialized';
    end;
    $$;
  • Для переноса объектов BFILE создайте в приёмнике те же псевдонимы, что и в базе-источнике:

    do
    $$
        BEGIN
            PERFORM bfile_directory_create('ALIAS1', '/tmp/alias1');
        EXCEPTION WHEN OTHERS THEN
            RAISE NOTICE 'alias1 already exists';
        end;
    $$;
    
    do
    $$
        BEGIN
            PERFORM bfile_directory_create('ALIAS2', '/tmp/alias2');
        EXCEPTION WHEN OTHERS THEN
            RAISE NOTICE 'alias2 already exists';
        end;
    $$;
  • Перенесите схему из базы-источника с помощью ora2pgpro.