Slide 1

Slide 1 text

Практика внедрения и использования функционала EBR в базе данных Oracle Деев Илья, [email protected]

Slide 2

Slide 2 text

Краткая история реального внедрения EBR

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Предварительное исследование системы

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Предварительное исследование базы данных. Вопросы адаптации системы к использованию EBR. Само собой, но все-таки, еще раз:  Тестирование?  Тестирование...  Тестирование  Тестирование.  Тестирование!  Тестирование!!  Тестирование!!!

Slide 12

Slide 12 text

Процесс первоначального перехода к использованию EBR

Slide 13

Slide 13 text

Термины Edition – ревизия Edition-based – ревизионный, на основе ревизий Editioned – ревизионируемый, ревизионированный, ревизионирован(а), ревизионируем(ы/а) Noneditioned – неревизионируемый, неревизионированный Editionable – ревизионируемый Noneditionable – неревизионируемый Editioning view – ревизионирующее представление Editions-enabled – ревизионно-полномочный Crossedition – кросс-ревизионный Forward crossedition trigger – прогрессивный кросс-ревизионный триггер Reverse crossedition trigger – регрессивный кросс-ревизионный триггер

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Изменения в процессе разработки приложений

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Новые подходы в развертывании и применении изменений

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Новые подходы в развертывании и применении изменений Метод актуализации объектов в новой ревизии – использование 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; /

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Изменения в повседневном обслуживании приложений

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Практика использования EBR

Slide 34

Slide 34 text

Практика использования 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.

Slide 35

Slide 35 text

Практика использования EBR EBR в сочетании с другими элементами обеспечения высокой доступности  невидимые индексы  перестроение индексов без остановки работы  особенности, связанные с констрейнтами - NOVALIDATE  параллельное выполнение с помощью dbms_parallel_execute  особенности работы пакета dbms_redefinition

Slide 36

Slide 36 text

Практика использования EBR Основные подводные камни. Как их обойти и не поскользнуться. Привычные действия, приводящие к проблемам в среде EBR  Стратегия copy-on-change и ее последствия  Выдача прав на объекты, актуальная версия которых находится в предыдущих ревизиях  Комментарии на ревизионирующих представлениях и их колонках  Создание и удаление констрейнтов некоторых типов – самая больная проблема

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

Перспективы  EBR - зрелая часть функционала по обеспечению высокой доступности  Использование EBR в Oracle EBS. Они сделали это!  Новые возможности в версии Oracle 12.2 – автомати- ческое удаление устаревших объектов прежних ревизий  Возможное дальнейшее снятие ограничений (например, по использованию пользовательских функций в функциональных индексах)  Встраивание поддержки EBR в существующие инструменты  Ожидание новых инструментов с поддержкой EBR. - Утилиты по адаптации к EBR и отказу от EBR - Инструменты по управлению изменениями с учетом использования EBR

Slide 45

Slide 45 text

Список полезных ссылок  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