Содержание
- Материализованные представления
- Экспорт представлений как таблиц Postgres Pro
- Оценка стоимости миграции
- Глобальная оценка миграции
- Метод оценки миграции
- Увеличение скорости создания индексов и ограничений
- Экспорт LONG RAW
- Глобальные переменные
- Тестирование миграции
- Проверка корректности данных
- Использование системного номера изменения (System Change Number, SCN)
- Захват изменения данных (CDC, Change Data Capture)
- Импорт BLOB как больших объектов
- Экспорт пакетов
- Экспорт ассоциативных массивов
- Экспорт представлений как таблиц Postgres Pro
Материализованные представления экспортируются в виде снимка «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()
с именем материализованного представления в качестве параметра.