Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Практика внедрения и использования функционала EBR в базе данных Oracle

CUSTIS
June 25, 2019

Практика внедрения и использования функционала EBR в базе данных Oracle

Выступление Ильи Деева, архитектора баз данных «Иннова Дистрибьюшен» (апрель 2010 — февраль 2019), ведущего программиста «КантриКом» (с февраля 2019), с докладом на CUSTIS Meetup: Russian Oracle User Group (25 июня 2019, Москва).

Видеозапись выступления: https://www.youtube.com/watch?v=W39S1MYDTQs&feature=youtu.be

CUSTIS

June 25, 2019
Tweet

More Decks by CUSTIS

Other Decks in Programming

Transcript

  1. Краткая история реального внедрения EBR Потребности бизнеса:  Частые релизы

     Минимальные простои всей системы  Быстрый процесс обновления базы данных  Отсутствие проблем после обновления  Возможность быстрого отката изменений
  2. Краткая история реального внедрения EBR Путь к использованию EBR 

    Работа в МТС. Обслуживание биллинговой системы CBOSS. Ночные работы по применению патчсетов.  Работа в CBOSS в группе системы контроля версий. Работы по ускорению применения крупных релизных патчсетов.  Разработка и поддержка биллинга в Иннове – обычные проблемы с обновлениями. Возможность усовершенствования обновления биллинга.  Oracle 11.2 - выход EBR
  3. Краткая история реального внедрения EBR  Первое знакомство. Противоречивые впечатления.

    Привлекательные возможности и мешающие ограничения.  Статьи Oracle Magazine и White Paper по EBR, семинар с Tom Kyte, общение c Bryn Llewellyn на конференции Oracle Developer Day в 2010 г.  Пристальное исследование и эксперименты в тестовой среде. Ознакомление с возможностями, особенностя- ми и ограничениями.  Плавный переход к использованию в средах разработки и тестирования. Постепенное привыкание, освоение приемов работы.
  4. Краткая история реального внедрения EBR  Реализация в рабочей системе

     Шишки, грабли, подводные камни – спектр различных проблем  Временный отказ и возвращение к EBR Положительные эффекты:  Надежный процесс обновления и возможность тщательной проверки работы обновленных компонентов  Обновление биллинга без остановки работы других подсистем  Возможность быстрого отката изменений  Работы по реализации концепции обновления всей системы без остановки работы
  5. Предварительное исследование базы данных. Вопросы адаптации системы к использованию EBR.

     Версия базы данных (>=11.2)  Учет ограничений версии Oracle и EBR  Учет авторства разработанных приложений (самостоятельно ли разработаны приложения или приобретены)  Возможность внесения изменений  Сложность системы
  6. Предварительное исследование базы данных. Вопросы адаптации системы к использованию EBR.

     Типы объектов и их взаимосвязи  Исследование актуальных для данной системы багов, относящихся к EBR.  Используемые внешние программные компоненты и возможность их конфигурации или изменения  Ограничения при использовании внешних инструментов (например, прежние версии Golden Gate не поддерживали EBR)
  7. Предварительное исследование базы данных. Вопросы адаптации системы к использованию EBR.

    Оптимальный выбор первого проекта с использованием возможностей EBR:  Версия Oracle 12.1 и выше  Ограничения при использовании EBR несущественны или преодолимы  Приложение разработано своими силами  Есть возможность внесения изменений в самой базе  Система не слишком сложна  Внешние компоненты могут быть при необходимости изменены  Не используются обязательные инструменты, текущая версия которых несовместима с EBR
  8. Предварительное исследование базы данных. Вопросы адаптации системы к использованию EBR.

    Само собой, но все-таки, еще раз:  Тестирование?  Тестирование...  Тестирование  Тестирование.  Тестирование!  Тестирование!!  Тестирование!!!
  9. Термины Edition – ревизия Edition-based – ревизионный, на основе ревизий

    Editioned – ревизионируемый, ревизионированный, ревизионирован(а), ревизионируем(ы/а) Noneditioned – неревизионируемый, неревизионированный Editionable – ревизионируемый Noneditionable – неревизионируемый Editioning view – ревизионирующее представление Editions-enabled – ревизионно-полномочный Crossedition – кросс-ревизионный Forward crossedition trigger – прогрессивный кросс-ревизионный триггер Reverse crossedition trigger – регрессивный кросс-ревизионный триггер
  10. Процесс первоначального перехода к использованию EBR Возможные изменения в схемах

    приложений  Перенос некоторых объектов в другие схемы (пример - очереди в Oracle 11.2)  Задание свойства noneditionable ( в Oracle 12), если некоторые объекты должны стать неревизионируемыми  Анализ использования public-синонимов в 11.2 и их замена синонимами на уровне схем
  11. Процесс первоначального перехода к использованию EBR Подготовка схем базы данных,

    выдача необходимых прав  Анализ списка схем, содержащих объекты базы данных  Анализ списка интерфейсных и других схем, обращающихся к объектам базы данных, расположенных в схемах ревизионно- полномочных пользователей.  Права для использования ревизий вообще и конкретных ревизий в частности  Определение списка пользователей, которые смогут иметь доступ к новым ревизиям до того, как они станут ревизиями по умолчанию
  12. Процесс первоначального перехода к использованию EBR Варианты переключения на новую

    ревизию: - ревизия по умолчанию на уровне базы данных - ревизия на уровне сервиса, задаваемого при подключении - триггер AFTER LOGON - программное переключение по окончании текущего вызова
  13. Процесс первоначального перехода к использованию EBR Переход к использованию ревизионирующих

    представлений со старыми именами таблиц.  Переименование таблиц (тщательная фильтрация, учет особенностей)  Исключение некоторых типов таблиц (сегменты индексно- организованных таблиц, таблицы очередей)  Особая обработка материализованных представлений и логов материализованных представлений
  14. Процесс первоначального перехода к использованию EBR Выдача прав на операции

    с таблицами через ревизионирующие представления  Подготовка скриптов по выдаче прав до переименования таблиц  Выдача прав на ревизионирующие представления после переименования таблиц  Отзыв прав на DML-операции непосредственно с таблицами
  15. Процесс первоначального перехода к использованию EBR Пересоздание триггеров  Триггеры

    создаются на ревизионирующих представлениях  Подготовка скриптов до переименования таблиц  Особенности dbms_metadata при работе от имени других пользователей - в тексте триггера может не указываться имя владельца таблицы
  16. Изменения в процессе разработки приложений  Основной сдвиг парадигмы ,

    который должен произойти у разработчиков – постоянный учет, по сути, нового измерения, ревизии (EDITION).  Ревизия - объект масштаба базы данных. Возможные проблемы пересечения ревизий для разных подсистем на одной базе данных. Применение изменений только в нужных ревизиях, явное задание ревизий. Удаление ревизий.  Возможное решение - разнесение различных подсистем по отдельным контейнерам (опция Multitanent).
  17. Изменения в процессе разработки приложений  “Раздвоение личности” таблиц. Ревизионирующие

    представления как логические интерфейсные оболочки к таблицам. Двойственность подходов при работе с таблицами: DML – работа с ревизионирующими представлениями, DDL – операции с таблицами.  Комментарии для таблиц и ревизионирующих представлений – желательно поддерживать их и там и там.  Код внешних по отношению к базе приложений - тот же, что и раньше. При доступе к таблицам используются ревизионирующие представления, если дело не касается команд DDL.
  18. Изменения в процессе разработки приложений  Объекты базы, связанные с

    данными (индексы, ограничения целостности, логи материализованных представлений) требуют использования наименований таблиц.  Некоторые неудобства, связанные с просмотром объектов типа таблиц и подчиненных им индексов и ограничений целостности (имя таблицы отличается).  DBA_DEPENDENCIES – не учитывает унаследованные объекты в текущей ревизии сессии (просмотр кода системного представления)
  19. Изменения в процессе разработки приложений  Возможные проблемы с унаследованными

    репозиториями систем контроля версий  Нехватка поддержки EBR в инструментах проектирования схем данных. Унаследованные ER- диаграммы.  Автоматическая генерация ревизионирующих представлений и перевыдача прав.  Ведение параллельно двух версий скриптов.  Классические средства проектирования схем - статика, ревизии и ревизионирующие представления могут вносить элементы динамики, связанные с изменениями структур данных.
  20. Новые подходы в развертывании и применении изменений  Возможность одновременного

    существования системы на инстансах разработки и тестирования в двух состояниях - с использованием EBR и без него.  Неизбежность такого положения в течение некоторого времени (отличия сред разработки, тестирования и рабочей системы на этапе внедрения EBR)  Необходимость в отдельных схемах или инстансах для разработки и тестирования, дублирование версий скриптов для соответствующих вариантов.
  21. Новые подходы в развертывании и применении изменений  Более тщательное

    планирование применения изменений  Создание новой ревизии или применение изменений по- старому? Зависит от деталей.  Ограничение EBR - 2000 ревизий  Автоматическое создание ревизии на любой набор изменений – не лучшая идея!  Когда можно обойтись без создания ревизий - Исправления в телах пакетов, в которых нет переменных - Изменения структур данных, не влияющие на другие объекты - Новые объекты, которые не зависят от старых.  Наш оптимум – недельные патчсеты.  При необходимости – нет проблем сделать изменения в любой момент
  22. Новые подходы в развертывании и применении изменений  Учет ревизий

    в инструментах, используемых для применения изменений. Создание, выдача прав на использование нужным схемам на этапе до установления новой ревизии по умолчанию.  Четкий учет особенностей разделения на ревизионирующие представления и таблицы на уровне инструментов и скриптов  Учет особенностей поведения объектов в среде EBR. Особенности, связанные с зависимостями между объектами в среде EBR. Наследование и актуализация Наследование и актуализация объектов в новой ревизии. объектов в новой ревизии.
  23. Новые подходы в развертывании и применении изменений Метод актуализации объектов

    в новой ревизии – использование dbms_utility.validate -- Валидация пакета begin dbms_utility.validate (owner => user, objname =>'MY_PKG', namespace => 1, edition => 'UPGRADE_0002'); dbms_utility.validate (owner => user, objname =>'MY_PKG', namespace => 2, edition => 'UPGRADE_0002'); end; /
  24. Процесс применения обновлений Типовой план работ при использовании EBR 

    создание новой ревизии  выдача прав на использование ревизии  применение изменений в новой ревизии  актуализация всех необходимых объектов  переключение базы на новую ревизию  мониторинг перехода сессий на новую ревизию  возможный откат и переключение на старую ревизию  рассмотрение примера скриптов
  25. Изменения в повседневном обслуживании приложений  Если используется ревизия не

    по умолчанию – нужны соответствующие привилегии для пользователей  Учитывать, что сегменты имеют уже другие имена (мониторинг, сбор статистики)  Учитывать существование ревизионирующих представлений в конкретной ревизии (выдача прав именно на ревизионирующие представления)  Учитывать особенности, связанные с появлением объектов в текущей ревизии в результате DDL- операций (создание комментариев, выдача прав другим пользователям). Стратегия copy-on-change.
  26. Практика использования EBR Инструменты, поддерживающие EBR  SQL*Plus - задание

    EDITION, SHOW EDITION  SQL Developer - вывод ревизий, ревизионирующих представлений, кросс-ревизионных триггеров  PL/SQL Developer - задание EDITION, генерация кода ревизионирующих представлений  Golden Gate 12c R1  Datapump (expdp, параметр SOURCE_EDITION)  Отсутствие поддержки в SQL Developer Data Modeler.
  27. Практика использования EBR EBR в сочетании с другими элементами обеспечения

    высокой доступности  невидимые индексы  перестроение индексов без остановки работы  особенности, связанные с констрейнтами - NOVALIDATE  параллельное выполнение с помощью dbms_parallel_execute  особенности работы пакета dbms_redefinition
  28. Практика использования EBR Основные подводные камни. Как их обойти и

    не поскользнуться. Привычные действия, приводящие к проблемам в среде EBR  Стратегия copy-on-change и ее последствия  Выдача прав на объекты, актуальная версия которых находится в предыдущих ревизиях  Комментарии на ревизионирующих представлениях и их колонках  Создание и удаление констрейнтов некоторых типов – самая больная проблема
  29. Практика использования EBR Констрейнт: PK NOT NULL CHECK UNIQUE (Constr.)

    UNIQUE (Index) FK Создание проблема проблема ok ok ok ok Решение: CONSTRAINT NOVALIDATE CONSTRAINT NOVALIDATE Удаление проблема проблема ok проблема проблема ok Решение: - CONSTRAINT NOVALIDATE - - Проблемы с инвалидацией ревизионирующих представлений при операциях с констрейнтами и возможные способы их решения.
  30. Практика использования EBR Возможные проблемы с частью ключевых данных (словарями,

    справочниками, настройками и т.п.)  Возможны проблемы с содержанием справочников и таблиц с настройками.  Способы решения – дублирование содержания в копиях таких таблиц либо доработка структуры и завязка данных на конкретные ревизии.
  31. Практика использования EBR Почти безостановочное обновление и реальное безостановочное обновление

     Когда и где удобно применять первое и необходимо применять второе  Как это сделать  Необходимость учета особенностей инициализации пакетов  Практика использования
  32. Практика использования EBR Методы, используемые при безостановочном изменении объемных таблиц

     Обновление через dbms_parallel_execute  Обновление данных небольшими частями  Работа пакета dbms_redefinition, принцип действия и недостатки  Воспроизведение функционала dbms_redefinition в сочетании с особенностями EBR
  33. Практика использования EBR Способы обхода некоторых ограничений. Работа с очередями

    AQ  Вынос объектов в схему, которая не использует ревизии (11.2)  Задание параметра неревизионируемости конкретных объектов (12.1) перед началом использования EBR.  Дублирование очередей при необходимости изменения структуры сообщений AQ  Перенос сообщений из старой очереди в новую при переходе к новой ревизии  Сохранение старых вариантов интерфейса к получению сообщений очередей  Особенности заданий. Выполнение заданий в нужной ревизии.
  34. Практика использования EBR Частичный отказ от использования EBR  Почему

    именно “частичный”. Переход к использованию EBR - необратимая операция.  Остановка на последней ревизии  Ревизионируемые объекты: актуализация всех ревизионируемых объектов в ревизии по умолчанию - желательный шаг, чтобы избежать эффектов, связанных с актуализацией. Метод – команда alter … compile ...  Ревизионирующие представления: отказ от использования ревизионирующих представлений и переход к использованию таблиц  Кросс-ревизионные триггеры: удаление, если они еще оставались
  35. Практика использования EBR Отказ от ревизионирующих представлений 1) Проверить соответствие

    имен таблиц и рев. представлений и их колонок, есть ли старые неиспользуемые колонки. 2) Необходимо перенести все привилегии с ревизионирующих представлений на таблицы. 3) Скопировать все данные логов материализованных представлений в промежуточные таблицы и удалить сами логи, если они есть. 4) Удалить ревизионирующие представления во всех ревизиях 5) Переименовать таблицы 6) Пересоздать синонимы и триггеры 7) Пересоздать материализованные представления (используя ON PREBUILT TABLE) и перезаполнить логи материализованных представлений, удалив промежуточные таблицы, созданные в п.3). 8) Перекомпилировать схемы.
  36. Перспективы  EBR - зрелая часть функционала по обеспечению высокой

    доступности  Использование EBR в Oracle EBS. Они сделали это!  Новые возможности в версии Oracle 12.2 – автомати- ческое удаление устаревших объектов прежних ревизий  Возможное дальнейшее снятие ограничений (например, по использованию пользовательских функций в функциональных индексах)  Встраивание поддержки EBR в существующие инструменты  Ожидание новых инструментов с поддержкой EBR. - Утилиты по адаптации к EBR и отказу от EBR - Инструменты по управлению изменениями с учетом использования EBR
  37. Список полезных ссылок  White paper по EBR: http://www.oracle.com/technetwork/database/features/availability/edition-based-redefinition-1-133045.pdf 

    Документация: http://docs.oracle.com/database/122/ADFNS/editions.htm#ADFNS-GUID-C213A6AA-5427-4426-80B5-D530138  Статья Тома Кайта в трех частях с простыми примерами: http://www.oracle.com/technetwork/issue-archive/2010/10-jan/o10asktom-172777.html http://www.oracle.com/technetwork/issue-archive/2010/10-mar/o20asktom-098897.html http://www.oracle.com/technetwork/issue-archive/2010/10-may/o30asktom-082672.html  Статья на http://www.oracle-base.com: http://www.oracle-base.com/articles/11g/EditionBasedRedefinition_11gR2.php  Библиотека Моргана (набор скриптов с примерами): http://www.morganslibrary.com/reference/editions.html  Документ с примером описания перехода на EBR базы данных Metalink по багам - " Online Application Upgrade of Oracle's Bug DB with Edition-Based Redefinition": http://www.oracle.com/technetwork/database/features/availability/317103-186766.pdf  Описание новшеств EBR в версии 12.1 от Игоря Мельникова (Oracle CIS): http://www.igormelnikov.com/2013/11/oracle-database-12c-r1-edition-base.html  Online Patching, Kevin Hudson, Senior Director, Applications Technology: http://www.oracle.com/webfolder/technetwork/tutorials/obe/ebs/ebs121/atg/OnlinePatching.pdf