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.