Edition Based Redefinition. Обновление приложений на “лету”
-
Upload
andrey-akulov -
Category
Technology
-
view
188 -
download
10
description
Transcript of Edition Based Redefinition. Обновление приложений на “лету”
<Insert Picture Here>
Edition Based RedefinitionОбновление приложений на “лету”Игорь МельниковOracle СНГ
2
Высокая доступность
• Внеплановый простой
• Системный сбой• Real Application
Clusters
• Потеря данных • Сбой носителя • ASM, Physical Standby
• Ошибки человека• Технологии Flashback• Logical Standby
• Повреждение данных
• Data Recovery Advisor• RMAN• Oracle Secure Backup
• Катастрофа • Data Guard
• Плановый простой
• Изменение PL/SQL-объектов БД приложения
• Online Application Upgrade
• Сопровождение данных
• Online Redefinition
3
Oracle Database 11g Release 2Online Application Upgrade
• Часто бизнес-критичные приложения бывают много часов недоступны из-за “наката” обновлений (патчей) или установки новой версии приложения• Oracle Database 11g Release 2 предлагает
революционную технологию которая дает возможность обновлять приложения на “лету” – без остановки !• Одновременно могут быть использованы как
старая, так и новая версия приложения !
4
Решение проблемы установки патчейEdition-based redefinition
• Новые типы объектов в СУБД: – edition– editioning view– crossedition trigger
• PL/SQL-код устанавливается в новую версию (edition)• Новые столбцы таблиц и изменения данных в них, не
видимы в старой версии– Editioning view делают разную проекцию таблиц, структура
которых менялась в каждую версию (новые столбцы невидимы в старой версии)
– Crossedition триггер, невидимо для старой версии, осуществляет конвертацию данных сделанных в старой версии в новую (и наоборот – в случае “отката” патча) структуру
5
Версия (редакция) объектаEditions
• Edition – новое понятие в 11.2• Версия наследуется от родительской – Наследует все объекты от родительской (кроме таблиц и
индексов)– Каждая версия может иметь собственную реализацию одного и
того же PL/SQL-объекта– Версия может иметь только одного потомка
• БД должна иметь как минимум одну версию (ORA$BASE – существует по умолчанию)• Сессия всегда выполняется в определенной версии (по
умолчанию в ORA$BASE)
6
Версионируемые объекты Editioned Objects
• Не все объекты версионируемы (editioned)• Чтобы объект был версионируемым должно быть
соблюдено два условия:1. Объект должен быть объектом версионируемого
(editionable) типа: • Function, Procedure, • Package (specification and body)• Type (specification and body)• Trigger• Library• Synonym• View
2. Объект должен принадлежать версионно-полномочному пользователю (has an editions-enabled owner)
7
CREATE EDITION version_2 AS CHILD OF ora$base;
GRANT USE ON version_2 TO ibs;
ALTER USER ibs ENABLE EDITIONS;
Версия (редакция) объектаСоздание редакции
8
Видимость унаследованных объектов
Object_4
Object_3
Object_2
Object_1
Pre-upgrade edition
9
Object_4
Object_3
Object_2
Object_1
Object_2
Object_1
Pre-upgrade edition
Post-upgrade edition
Наследуется от
(inherited)
(inherited)
(inherited)
(inherited)
Object_4
Object_3
Видимость унаследованных объектов
10
Object_4
Object_3
Object_2
Object_1
Object_4*
Object_3*
Object_2
Object_1
Pre-upgrade edition
Post-upgrade edition
(actual)
(actual)
(inherited)
(inherited)
Видимость унаследованных объектов
Наследуется от
11
Object_4
Object_3
Object_2
Object_1
(Object_4)
Object_3
Object_2
Object_1
Pre-upgrade edition
Post-upgrade edition
(dropped)
(actual)
(inherited)
(inherited)
Видимость унаследованных объектов
Наследуется от
12
Версионирующие представления Editioning Views
• Таблицы и индексы – это неверсионируемые объекты (noneditionable objects)– Таблицы и индексы содержат огромный объем данных,
хранение их копий для разных версий потребовало бы много дисковой памяти
• Версионирующие представления (editioning views):– Новый класс представлений, появившийся в Oracle11g R2– Логически представляют собой копии таблицы в разных
версиях - это логические проекции неверсионируемых физических таблиц
CREATE EDITIONING VIEW accounts ASSELECT Id,Name,Amount FROM accounts_table;
13
Кросс-версионные триггерыCrossedition triggers
• В Oracle11g R2 введен новый специализированный вид триггеров – crossedition triggers• Создаются в «новой» версии (post-upgrade edition)• Два типа кросс-версионных триггеров:– Прогрессивные (forward)• Срабатывают для команд DML, вызванных сессиями «старой»
версии• Обновляют данные в «новых» столбцах таблицы на основе
изменений данных в «старых» её столбцах
– Регрессивные (reverse) (Не обязательны, нужны для “отката” в online)• Срабатывают для команд DML, вызванных сессиями «новой»
версии• Обновляют данные в «старых» столбцах таблицы на основе
изменений данных в «новых» её столбцах
14
Edition-based Redefinition
"Edition-based Redefinition is the killer feature of Oracle Database 11g Release 2.
It is worth 2 features".
Tom Kyte (24-feb-2010, Moscow, Russia)
<Insert Picture Here>
Игорь МельниковВедущий консультант Oracle СНГ
Email : [email protected] Phone : +7 (495) 641 14 00Direct: +7 (495) 641 14 42Mobile: +7 (915) 205 26 27