Содержание
- Использование
- Подключение к базе данных Oracle
- Шифрование данных с использованием Oracle Server
- Тестирование подключения
- Решение проблем
- Экспортируемая схема Oracle
- Подключение к базе данных Oracle
- Экспорт из Oracle Spatial в PostGIS
- Импорт в Postgres Pro
- Управление типами столбцов
- Настройка процесса экспорта
- Дополнительные параметры для настройки кодировок клиентов
- Преобразование кода PL/SQL в код PL/pgSQL
- Прочие директивы
- Импорт в Postgres Pro
Настройка 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
, чтобы импортировать файлы интерактивно. Если миграция не выполняется сразу, рекомендуется использовать эти скрипты.