<chapter id="ora2pgpro-features">
<title>Функциональные возможности</title>

    <para>Утилита <application>ora2pgpro</application> состоит из Perl-скрипта <filename>ora2pgpro</filename> и Perl-модуля <filename>Ora2PgPro.pm</filename>. Для использования утилиты достаточно указать в файле конфигурации <filename>ora2pgpro.conf</filename> DSN для подключения к БД Oracle и, при необходимости, имя схемы. После этого необходимо указать тип экспорта: <literal>TABLE</literal> с ограничениями, <literal>VIEW</literal>, <literal>MVIEW</literal>, <literal>TABLESPACE</literal>, <literal>SEQUENCE</literal>, <literal>INDEXES</literal>, <literal>TRIGGER</literal>, <literal>GRANT</literal>, <literal>FUNCTION</literal>, <literal>PROCEDURE</literal>, <literal>PACKAGE</literal>, <literal>PARTITION</literal>, <literal>TYPE</literal>, <literal>INSERT</literal> или <literal>COPY</literal>, <literal>FDW</literal>, <literal>QUERY</literal>, <literal>SYNONYM</literal>.</para>
    <para>По умолчанию <application>ora2pgpro</application> экспортирует данные в файл, который можно загрузить в БД Postgres Pro, используя клиент <application>psql</application>. Кроме того, можно настроить импорт напрямую в БД Postgres Pro, указав DSN в файле конфигурации. Множество параметров конфигурации <filename>ora2pgpro.conf</filename> позволяют гибко управлять процессом экспорта. Доступны следующие функциональные возможности:</para>
    <itemizedlist spacing="compact">
      <listitem><simpara>Полный экспорт схемы БД (таблицы, представления, последовательности, индексы) с ограничениями уникальности, первичным ключом, внешними ключами и ограничениями-проверками.</simpara></listitem>
      <listitem><simpara>Экспорт прав пользователей и групп.</simpara></listitem>
      <listitem><simpara>Экспорт секций по спискам и по диапазонам.</simpara></listitem>
      <listitem><simpara>Экспорт нескольких таблиц (с указанием имён).</simpara></listitem>
      <listitem><simpara>Экспорт схемы Oracle как схемы Postgres Pro.</simpara></listitem>
      <listitem><simpara>Экспорт предопределённых функций, триггеров, процедур, пакетов и тел пакетов.</simpara></listitem>
      <listitem><simpara>Экспорт всех данных или выбранных предложением <literal>WHERE</literal>.</simpara></listitem>
      <listitem><simpara>Полная поддержка экспорта объектов BLOB Oracle как <type>bytea</type> Postgres Pro.</simpara></listitem>
      <listitem><simpara>Экспорт представлений Oracle как таблиц Postgres Pro.</simpara></listitem>
      <listitem><simpara>Экспорт определяемых пользователем типов Oracle.</simpara></listitem>
      <listitem><simpara>Базовое автоматическое преобразование кода <application>PL/SQL</application> в код <application>PL/pgSQL</application>.</simpara></listitem>
      <listitem><simpara>Работа на любой платформе.</simpara></listitem>
      <listitem><simpara>Экспорт таблиц Oracle как таблиц, реализованных через обёртку сторонних данных.</simpara></listitem>
      <listitem><simpara>Экспорт материализованных представлений.</simpara></listitem>
      <listitem><simpara>Вывод отчёта о содержимом БД Oracle.</simpara></listitem>
      <listitem><simpara>Помощь в оценке стоимости миграции БД Oracle.</simpara></listitem>
      <listitem><simpara>Помощь в оценке сложности миграции БД Oracle.</simpara></listitem>
      <listitem><simpara>Помощь в оценке стоимости миграции кода <application>PL/SQL</application> из файла.</simpara></listitem>
      <listitem><simpara>Помощь в оценке стоимости миграции SQL-запросов Oracle, хранящихся в файле.</simpara></listitem>
      <listitem><simpara>Экспорт Oracle Locator и пространственных данных в <application>PostGIS</application>.</simpara></listitem>
      <listitem><simpara>Экспорт <literal>DBLINK</literal> в Oracle FDW.</simpara></listitem>
      <listitem><simpara>Экспорт <literal>SYNONYM</literal> как представлений.</simpara></listitem>
      <listitem><simpara>Экспорт <literal>DIRECTORY</literal> как внешних таблиц или каталога для расширения <literal>external_file</literal>.</simpara></listitem>
      <listitem><simpara>Передача SQL-команд с использованием нескольких соединений с Postgres Pro.</simpara></listitem>
      <listitem><simpara>Сравнение БД Oracle и Postgres Pro для целей тестирования.</simpara></listitem>
      <listitem><simpara>Полная поддержка экспорта пакетов Oracle в пакеты Postgres Pro.</simpara></listitem>
      <listitem><simpara>Экспорт <type>VARRAY</type> как массивов Postgres Pro.</simpara></listitem>
      <listitem><simpara>Экспорт ассоциативных массивов как коллекций <ulink url="https://postgrespro.ru/docs/enterprise/16/pg-variables"><application>pg_variables</application></ulink>.</simpara></listitem>
    </itemizedlist>
    <para>Утилита <application>ora2pgpro</application> делает всё возможное, чтобы преобразовать БД Oracle в Postgres Pro автоматически, но некоторые действия необходимо выполнить вручную, например, проверить код <application>PL/SQL</application>, сгенерированный для функций, процедур, пакетов и триггеров, на соответствие синтаксису Postgres Pro. Некоторые рекомендации по портированию кода из <application>PL/SQL</application> в <application>PL/pgSQL</application> даны в разделах <ulink url="https://postgrespro.ru/docs/enterprise/15/plpgsql-porting">Портирование из Oracle PL/SQL</ulink> и <ulink url="https://postgrespro.ru/docs/enterprise/15/pgpro-migration-tools">Инструменты миграции в Postgres Pro</ulink>.</para>
</chapter>
