Глава 5. Примеры использования

Содержание

Материализованные представления
Экспорт представлений как таблиц Postgres Pro
Оценка стоимости миграции
Глобальная оценка миграции
Метод оценки миграции
Увеличение скорости создания индексов и ограничений
Экспорт LONG RAW
Глобальные переменные
Тестирование миграции
Проверка корректности данных
Использование системного номера изменения (System Change Number, SCN)
Захват изменения данных (CDC, Change Data Capture)
Импорт BLOB как больших объектов
Экспорт пакетов
Экспорт ассоциативных массивов

Материализованные представления

Материализованные представления экспортируются в виде снимка «Snapshot Materialized Views» (Снимок материализованных представлений), поскольку Postgres Pro поддерживает только полное обновление.

При экспорте материализованных представлений ora2pgpro сначала добавляет код SQL для создания таблицы materialized_views (материализованные представления):

CREATE TABLE materialized_views (
        mview_name text NOT NULL PRIMARY KEY,
        view_name text NOT NULL,
        iname text,
        last_refresh TIMESTAMP WITH TIME ZONE
);

Для каждого материализованного представления создаётся одна запись в этой таблице. Затем добавляется код PL/pgSQL для создания деревьев функций:

  • Функция create_materialized_view(text, text, text) используется для создания материализованного представления.
  • Функция drop_materialized_view(text) используется для удаления материализованного представления.
  • Функция refresh_full_materialized_view(text) используется для обновления материализованного представления.

Далее добавляется SQL-код для создания представления и материализованного представления:

CREATE VIEW mviewname_mview AS
SELECT ... FROM ...;

SELECT create_materialized_view('mviewname','mviewname_mview', заменить на имя столбца, используемого для создания индекса);

Первый аргумент — это имя материализованного представления, второй — имя представления, на основе которого создаётся материализованное представление, а третий — имя столбца для построения индекса (а также первичного ключа в большинстве случаев). Этот столбец не рассчитывается автоматически, поэтому его имя необходимо заменить.

Как было сказано выше, ora2pgpro поддерживает только снимок материализованных представлений, поэтому таблица будет обновлена полностью при опустошении таблицы и повторной загрузке данных из представления:

refresh_full_materialized_view('mviewname');

Чтобы удалить материализованное представление, вызовите функцию drop_materialized_view() с именем материализованного представления в качестве параметра.