Содержание
Настройка ora2pgpro заключается в выборе экспортируемой БД Oracle и типа экспорта.
Используя один файл конфигурации ora2pgpro.conf, можно полностью управлять процессом миграции БД Oracle. В файле записывается имя директивы заглавными буквами и её значение после символа табуляции. Строки, начинающиеся с #, представляют собой комментарии. Директивы можно задавать в любом порядке, а включаются они при считывании значения в файле конфигурации.
Директивы, принимающие одно значение, можно задавать в файле конфигурации несколько раз, при этом будет использоваться последнее вхождение. Директивы, принимающие список значений, также можно задавать несколько раз, и значения из последующих вхождений будут добавляться в список. Если для загрузки пользовательского файла конфигурации используется директива IMPORT, директивы из этого файла будут сохраняться в файле конфигурации после директивы IMPORT, поэтому рекомендуется задавать её в конце файла конфигурации.
Значения, переданные в командой строке, переопределяют значения из файла конфигурации.
Сначала необходимо убедиться, что пути ко всем библиотекам и двоичным файлам включают каталог установки Oracle Instant Client:
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib export PATH="/usr/lib/oracle/11.2/client64/bin:$PATH"
По умолчанию ora2pgpro выполняет поиск файла конфигурации /etc/ora2pgpro/ora2pgpro.conf, и если этот файл существует, достаточно выполнить команду:
/usr/local/bin/ora2pgpro
Если необходимо вызвать другой файл конфигурации, задайте путь в командной строке:
/usr/local/bin/ora2pgpro -c /etc/ora2pgpro/new_ora2pgpro.conf
Ниже приведены все доступные параметры командной строки для ora2pgpro:
ora2pgpro [-dhpqv --estimate_cost --dump_as_html] [--параметр значение]-a, --allowЗадать список экспортируемых объектов, разделённых запятыми. Параметр может также использоваться с типом SHOW_COLUMN.
-b, --basedirЗадать выходной каталог для файлов, полученных в результате экспорта.
-c, --confУказать файл конфигурации, отличный от используемого по умолчанию /etc/ora2pgpro/ora2pgpro_scanner.conf.
-C, --cdc_fileУказать файл для хранения/чтения SCN таблиц во время экспорта. По умолчанию: TABLES_SCN.log в текущем каталоге. Для создания этого файла используйте параметр --cdc_ready.
-d, --debugВыводить подробные сообщения.
-D, --data_typeРазрешить использование пользовательских типов в командной строке.
-e, --excludeИсключить из экспорта список указанных объектов, разделённых запятыми. Может использоваться с типом SHOW_COLUMN.
-h, --helpВыводить краткую справку.
-g, --grant_objectИзвлекать права для данного типа объектов. Возможные значения даны в описании конфигурации GRANT_OBJECT.
-i, --inputУказать файл, содержащий код PL/SQL для портирования, когда подключение к БД Oracle отсутствует.
-j, --jobsЗадать число параллельных процессов при передаче данных в Postgres Pro.
-J, --copiesЗадать число параллельных соединений для извлечения данных из Oracle.
-l, --logУказать файл журнала. По умолчанию: stdout.
-L, --limitЗадать количество кортежей, извлекаемых из Oracle и сохраняемых в памяти до записи, по умолчанию 10000.
-n, --namespaceУказать схему Oracle для извлечения данных.
-N, --pg_schemaЗадать search_path для Postgres Pro.
-o, --outУказать путь к выходному файлу, в который записываются команды SQL. По умолчанию: output.sql в текущем каталоге.
-p, --plsqlВключить преобразование кода PL/SQL в код PL/pgSQL.
-P, --parallelЗадать число таблиц для параллельного извлечения данных.
-q, --quietОтключить вывод индикатора выполнения.
-r, --relativeИспользовать параметр \ir вместо \i в создаваемых скриптах psql.
-s, --sourceЗадать источник данных DBI для Oracle.
-S, --scnЗадать системный номер изменения Oracle (System Change Number, SCN) для экспорта данных. Он используется в предложениях WHERE для получения данных с типами экспорта COPY или INSERT.
-t, --typeЗадать тип экспорта. Параметр переопределяет значение, заданное в файле конфигурации (TYPE).
-T, --temp_dirУказать отдельный временный каталог для одновременного запуска двух или более экземпляров ora2pgpro.
-u, --userУказать пользователя для подключения к БД Oracle. Вместо этого параметра можно использовать переменную окружения ORA2PG_USER.
-v, --versionПоказать версию ora2pgpro и прервать выполнение.
-w, --passwordУказать пароль для пользователя БД Oracle. Вместо этого параметра можно использовать переменную окружения ORA2PG_PASSWD.
-W, --whereЗадать предложение WHERE, добавляемое к запросу Oracle для получения данных. Параметр можно указывать несколько раз.
--forceownerПринудительно назначать владельца таблиц и последовательностей, как в Oracle. Если в значении указать имя пользователя, он будет назначен владельцем. По умолчанию владельцем будет пользователь, используемый для подключения к БД Postgres Pro.
--nls_langЗадать кодировку клиента Oracle в NLS_LANG.
--client_encodingЗадать кодировку клиента Postgres Pro.
--view_as_tableУказать список представлений, разделённых запятыми, для экспорта в виде таблиц.
--estimate_costАктивировать оценку стоимости миграции для SHOW_REPORT.
--cost_unit_valueЗадать число минут для оценки стоимости. По умолчанию 5 минут, что соответствует скорости миграции, выполняемой специалистом Postgres Pro. Для первой миграции установите значение 10.
--dump_as_htmlВыгружать отчёт в формате HTML. Параметр используется только с SHOW_REPORT. По умолчанию отчёт выгружается в формате простого текста.
--dump_as_csvАналогично предыдущему, но отчёт выгружается в формате CSV.
--dump_as_sheetВыводить отчёт по оценке миграции с отдельной строкой в формате CSV для каждой БД.
--init_projectИнициализировать стандартное дерево проекта ora2pgpro. Каталог верхнего уровня создаётся в базовом каталоге проекта.
--project_baseУказать базовый каталог для деревьев проекта ora2pgpro. По умолчанию это текущий каталог.
--print_headerВыводить заголовок CSV, что особенно полезно при первом запуске ora2pgpro. Параметр используется вместе с параметром --dump_as_sheet.
--human_days_limitЗадать предел человеко-дней, по достижении которого уровень оценки миграции меняется с B на C. По умолчанию 5 человеко-дней.
--audit_userУказать список имён пользователей для фильтрации запросов в таблице AUDIT_USER. Используется только с типами экспорта SHOW_REPORT и QUERY.
--pg_dsnУказать источник данных для прямого импорта в Postgres Pro.
--pg_userУказать пользователя Postgres Pro.
--pg_pwdУказать пароль пользователя Postgres Pro.
--count_rowsПринудительно подсчитывать действительное количество строк при выполнении TEST, TEST_COUNT и SHOW_TABLE.
--no_headerНе выводить заголовок ora2pgpro в выходной файл.
--oracle_speedУзнать скорость, с которой могут передаваться данные из Oracle. Данные не обрабатываются и не записываются.
--ora2pg_speedУзнать скорость, с которой ora2pgpro может отправлять преобразованные данные. Данные не записываются.
--blob_to_loЭкспортировать BLOB в виде больших объектов. Параметр может использоваться только при выполнении SHOW_COLUMN, TABLE и INSERT.
--cdc_readyИспользовать текущие SCN для экспорта данных из таблиц и записать их в файл под названием TABLES_SCN.log по умолчанию. Другое имя файла можно указать, используя параметр -C|--cdc_file.
--lo_importИспользовать команду psql \lo_import для импорта BLOB в виде больших объектов. Параметр можно использовать для импорта с типом COPY и последующим импортом большого объекта вручную. Необходим для импорта BLOB размером более 1 ГБ.
--mview_as_tableУказать список материализованных представлений, разделённых запятыми, для экспорта в виде обычных таблиц.
--drop_if_existsУдалить объект перед созданием, если он уже существует.
--offlineПреобразовывать экспортируемые данные без подключения к БД Oracle.
В случае успеха ora2pgpro возвращает 0, а в случае ошибки 1. Если дочерний процесс прерывается, возвращается 2 и выводится следующее предупреждение: «WARNING: an error occurs during data export. Please check what's happen.» (ПРЕДУПРЕЖДЕНИЕ: Во время экспорта данных произошла ошибка. Обратите внимание.) В большинстве случаев ошибка вызвана нехваткой памяти — попробуйте уменьшить значение DATA_LIMIT.
Обратите внимание, что производительность можно увеличить, обновив статистику в Oracle:
DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_DATABASE_STATS DBMS_STATS.GATHER_DICTIONARY_STATS
Если заданы параметры --project_base и --init_project, ora2pgpro создаёт шаблон проекта, содержащий дерево проекта, файл конфигурации и скрипт для экспорта всех объектов из БД Oracle. Пример использования команды:
ora2pgpro --project_base /app/migration/ --init_project test_project Creating project test_project. /app/migration/test_project/ schema/ dblinks/ directories/ functions/ grants/ mviews/ packages/ partitions/ procedures/ sequences/ synonyms/ tables/ tablespaces/ triggers/ types/ views/ sources/ functions/ mviews/ packages/ partitions/ procedures/ triggers/ types/ views/ data/ config/ reports/ Generating generic configuration file Creating script export_schema.sh to automate all exports. Creating script import_all.sh to automate all imports.
При этом создаётся стандартный файл конфигурации, в котором можно задать параметры подключения к БД Oracle, и скрипт оболочки export_schema.sh. Каталог sources/ будет содержать код Oracle, каталог schema/ — код для портирования в Postgres Pro. Каталог reports/ будет содержать HTML-отчёты с оценкой стоимости миграции.
Если вы хотите использовать собственный файл конфигурации, укажите путь к нему в параметре -c. Допишите к имени файла суффикс .dist, чтобы добавить в него стандартные параметры конфигурации ora2pgpro, в противном случае файл будет копирован в исходном состоянии.
После установки подключения к БД Oracle можно выполнить скрипт export_schema.sh, чтобы экспортировать все типы объектов из БД Oracle и вывести файлы DDL в подкаталоги схемы. По завершении процесса, когда импортируемая схема будет проверена, будет выдана команда для последующего экспорта данных.
Можно загрузить созданные файлы DDL вручную или воспользоваться скриптом import_all.sh, чтобы импортировать файлы интерактивно. Если миграция не выполняется сразу, рекомендуется использовать эти скрипты.