Содержание
- Материализованные представления
- Экспорт представлений как таблиц 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() с именем материализованного представления в качестве параметра.