и сопровождение на полном жизненном цикле масштабных учетно-аналитических систем Год основания – 1996 Количество сотрудников > 200 Ключевые клиенты: Банк России, Газпромбанк, ГК «Спортмастер», ЕИРКЦ г. Астрахани, ЕРКЦ г. Саратова 3/27
Филиалы располагаются в различных часовых поясах, поэтому приложение используется в режиме 24/7 Снижение операционных рисков при обновлении системы во время эксплуатации Поэтапное внедрение изменений в различных филиалах с возможностью их отмены 5/27
системы Параллельная эксплуатация нескольких версий ПО, работающих с одними данными Возможность перевода пользователей на новую версию ПО или «отката» к предыдущей версии 6/27
к остановке системы В каждой временной зоне есть возможность выделить технологическое окно для установки обновлений Необходимость администрировать множество экземпляров ПО Необходимость синхронизации изменений и разрешения конфликтов Нет механизма «отката» обновлений 8/27
Гарантированная согласованность данных Отсутствие технологических окон для установки обновлений Нет механизма поэтапного обновления ПО и «отката» обновлений 9/27
11gR2 Позволяет выполнять изменения (redefinition) объектов, не затрагивая существующие версии (editions) объектов Позволяет управляемо переключать пользователей на различные версии ПО 10/27
Доработка приложения Обновление неверсионных объектов Обеспечение совместимости версий Изменения в модели безопасности Влияние на разработку и эксплуатацию 12/27
версионирующих представлений для всех таблиц 3. Перевод кода PL/SQL и клиентских приложений на использование версионирующих представлений 4. «Перевешивание» триггеров на версионирующие представления 5. Выдача прав другим схемам на версионирующие представления 16/27
edition перед изменением объектов Разработка инструментария управления версиями Задание версии по умолчанию ALTER DATABASE DEFAULT EDITION = edition_name; Переключение пользователей между версиями CREATE OR REPLACE TRIGGER tr_set_edition AFTER LOGON ON DATABASE … ALTER SESSION SET EDITION = edition_name; … 20/27
Появляются новые типы объектов и изменяются структуры Расширяется набор атрибутов, задающих уникальность объектов (owner, object_name, edition_name) Отказ от использования публичных синонимов Изменение работы со словарем данных Oracle 21/27
выполнении DDL операций Использование EBR совместно с Online Redefinition (DBMS_REDEFINITION) Изменение индексов (создание, удаление) затрагивает все editions Workaround при помощи invisible индексов 22/27
использования данных может нарушить работу предыдущей версии Дублирование данных и их синхронизация при помощи кросс-версионных триггеров (Cross-edition triggers) Пример 1 Разделение одной таблицы на «мастер» и «деталь» (связь один ко многим): Существующие столбцы таблицы не удаляются Когда «старая» версия изменяет данные в основной таблице, то Forward-триггер заполняет новую таблицу Когда «новая» версия меняет данные в подчиненной таблице, то Reverse-триггер заполняет «старые» столбцы основной таблицы 23/27
использования данных может нарушить работу предыдущей версии Дублирование данных и их синхронизация при помощи кросс-версионных триггеров (Cross-edition triggers) Пример 2 Изменение набора значений атрибута, с которым связана логика приложения: Создается новый столбец, дублирующий существующий Каждая версия «видит» свой экземпляр столбца Логика преобразования значений атрибута реализуется в кросс-версионных триггерах 24/27
версий при разработке и тестировании Если есть изменения в модели данных, несовместимые с текущей версией Если есть изменения в логике использования атрибутов и структур данных Наличие кросс-версионных триггеров может замедлять операции изменения данных, в том числе в уже эксплуатируемой версии В примере 1 при разделении основной таблицы на две – вставка в подчиненную таблицу замедляется в два раза Одновременная эксплуатация нескольких версий может усложнить процедуры разбора и разрешения инцидентов 25/27
системы за счет создания нового edition для обновления Одновременная работа пользователей с разными версиями ПО в рамках одного экземпляра БД и с одним набором данных за счет использования разных editions и cross-edition triggers Контролируемое переключение пользователей между версиями, в том числе «откат» обновлений за счет использования версии по умолчанию и/или задания версии для отдельного пользователя 26/27