Новая версия СУБД Oracle - Oracle 11g: обзор характеристик и возможностей Марк Ривкин (Mark.Rivkin@oracle.com) Российское представительство Oracle Версия Oracle Database 11G • • • • Объявлена в октябре 2006 на OOW Находится в бетта тестировании Выйдет в 2007 г Не все может войти в первый релиз – features for New Versions Новые возможности • GRID • Управляемость • Надежность и устойчивость работы (HA) • Производительность • Управление информацией (Information Management) • Улучшения для всех типов данных • Файловая система в БД • ILM • Разработка и тестирование приложений • Новые опции СУБД (Database/Audit Vault, Content/Records DB, SES, SEB) • И как всегда все работает быстрее <Insert Picture Here> Alfred North Whitehead: Principia Mathematica “The art of progress is to preserve order amid change and to preserve change amid order.” Мастерство движения вперед заключается в том, чтобы сохранить порядок во время выполнения изменений и производить изменения сохраняя порядок. Не дай Вам бог жить в эпоху перемен !!!! Информация всегда доступна Сбой системы Незаплани рованные остановки Катастрофа, потеря файлов/дисков Человеческие ошибки Плановые остановки Сопровождение системы Модификация структуры БД Новые возможности Oracle Database 11g для сохранения работоспособности при внесении изменений Тестирование и настройка Выполнение изменений в изменений в производительности приложениях без остановки (Online) Управление изменением Захват и воспроизведение нагрузки плана выполнения запроса Создание среды для тестирования Пакетирование информации об инцидентах для технической поддержки Online Hot Patching Создание тестовой среды с помощью Snapshot Standbys Beta • Превращение Physical Standby в Snapshot Standby и открытие БД на Physical Standby запись для тестируемых Применение изменений приложений • ALTER DATABASE CONVERT TO SNAPSHOT STANDBY; ОткрыОткатываем ваем БД изменения • Откат тестовых изменений и Snapshot Standby Выполнение тестирования продолжение накатки изменений • ALTER DATABASE CONVERT TO PHYSICAL STANDBY; • Обеспечивает нулевые потери данных • Можно на ней воспроизвести загрузку основной БД (replay) Захват и воспроизведение нагрузки СУБД Database Replay • Захват инфо о нагрузке Beta Rec • Записывает информацию о нагрузке СУБД, включая важную информацию об одновременности нагрузки • Database Replay - проигрывание • Воспроизводит нагрузку в реальном Запиши и проиграй времени (workload with actual timing) • Анализ и отчетность • • • • Отчеты об ошибках Изменение данных Изменение производительности Использование ADDM для дальнейшего анализа производительности Анализ и отчетность Захват и воспроизведение нагрузки SQL – SQL Replay Beta • Фокус на проблемы с нагрузкой при выполнении SQL операторов • Детальный анализ производительности отдельного SQL оператора • Захват информации про SQL Workload в эксплуатационной системе • Захватывает текст SQL, планы, bind variables, статистику выполнения • За указанный период времени • Можно захватить информацию для SQL в Oracle Database 10g Release 2 • Воспроизведение SQL Workload в тестовой среде • Тестовое выполнение SQL в тестовой среде • Выявляет SQL с изменившимися планами выполнения и SQL с ухудшившейся производительностью • Для ухудшившегося SQL можно провести настройку с помощью SQL Tuning Advisor (10g) • Производит анализ и отчеты SQL Replay: анализ производительности Автоматическая настройка SQL Пакетные Кастомизируемые прилож приложения High-Load SQL AWR Ночью Автоматическая настройка SQL SQL Profiling Index, Stats, Structure Analysis SQL Profiles Тестирование Применение Автоматически Отчет от Advisor Настроенный SQL Вручную • Автоматически выбирает наиболее ресурсоемкие операторы SQL на основе анализа времени отклика, потребления ресурсов и частоты выполнения • Автоматически настраивает SQL, создавая SQL Profiles • Автоматически учитывает альтернативные планы выполнения на основе ранее использовавшихся планов • Автоматически тестирует результаты, чтобы оценить степень улучшения • Автоматически принимает сильно улучшающие выполнение (в 3 раза) планы (опционально) • Автоматически строит отчеты о недостающих структурах доступа, устаревшей статистике, плохо структурированном SQL • Автоматически выполняется в указанное время (maintenance window) или запускается вручную Автоматическая настройка областей памяти O/S Memory O/S Memory SGA SGA PGA PGA • Автоматически адаптируется к изменениям нагрузки • Унифицирует управление shared (SGA) и process (PGA) областями памяти • Один динамический параметр для всей памяти СУБД • Максимизирует использование памяти • Помогает исключить out- of-memory ошибки • Берет и освобождает память у следующих ОС: Linux, Windows, Solaris, HPUX, AIX • Умеет работать под большой нагрузкой • Не сжимается ниже минимума Новые советчики (advisers) • Partitioning • Repairing (восстановление) • Streams performance (производительность Streams) • Space management (управление пространством в БД) Исследование причин сбоя Время восстановления Время для анализа и время для планирования • При сбое – паника и неразбериха • Основная часть времени тратится на: • Исследование проблемы • Выбор правильного решения Полное время простоя Data Repair Advisor • Анализирует проблему, основываясь на симптомах • Например, “Open failed” из-за того, что потерян файл данных • Грамотно определяет стратегию лечения • Агрегирует ошибки для выбора эффективного способа лечения • Например, если много плохих блоков – лучше восстановить весь файл • Рекомендует только выполнимые варианты восстановления • Есть ли бэкапы? • Существует ли standby database? • Ранжирует варианты на основе времени восстановления и возможности потери данных • Может автоматически выполнить восстановление ADDM для RAC Database-Level ADDM Self-Diagnostic Engine Instance-Level ADDMs Node 1 Node 2 Node 3 • Эксперт по производительности из коробки • Теперь и для RAC! • Идентифицирует наиболее “Глобально важные” проблемы с производительностью для всей БД RAC • Анализ уровня всей БД и отдельного экземпляра • Анализ уровня всей БД: • Проблемы глобального кэша интерконнекта (Global cache interconnect) • Проблемы перегрузки Lock manager • Глобальный спор за ресурсы (пропускная способность ввода вывода, hot blocks) • Глобальные ресурсоемкие SQL операторы • Ассиметрия во времени отклика инстансов БД • Позволяет дальше перейти к инстансам (drill down) • Выполняется проактивно каждый час (по умолчанию) • Директивы для фильтрации результатов Автоматическая диагностика Репозиторий автоматической диагностики Критическая ошибка 2 1 Автоматическое создание инцидента Захват инфо об ошибке Извещение ДБА Проверка на металинке Да 4 Новый баг? Нет 3 EM Support Workbench: Пакует инфо об инциденте и конфигурации Repair Advisors EM Support Workbench: Применение патча или Workaround Repair Advisors Уменьшает время решения проблемы Простая диагностика с помощью Incident Packaging Service • Пакетирует всю информацию из Automatic Diagnostic Repository, связанную с инцидентом • Берет также информацию из других, связанных с данным, инцидентов • Заставляет пользователя собрать необходимую дополнительную информацию (например, test cases, redo logs) • Пакетирует всю важную информацию о конфигурациях для всех важных продуктов (например, OS, AS, eBusiness suites) • Обеспечивает простую индикацию сбора информации Модификация приложений на лету (Online Application Upgrade) Beta • Большие, важные приложения часто недоступны в течение десятков часов из-за установки их новых версий • Oracle Database 11g вводит новые революционные решения, позволяющие выполнять смену версии приложения не останавливая работу этого приложения • Старая и новая версии приложения могут работать одновременно Online Application Upgrade Демо Как это сделано? • Oracle Database 11g вводит новые понятия Редакция (Edition), Editioning View и CrossEdition Trigger • Измененный код устанавливается в новую Редакцию. • Изменения данных безопасны, поскольку они пишутся в новые колонки или новые таблицы, которые не видны старой Редакции (old Edition) • Editioning View выставляет различные проекции таблицы в каждую редакцию, что позволяет в каждой редакции видеть только свой набор колонок • CrossEdition trigger (Межредакционный триггер) заносит данные, измененные в старой редакции, в колонки новой редакции или наоборот Edition-Based Redefinition • Editions (Редакции) обеспечивают поддержку многоверсионности для объектов БД • PL/SQL, триггеры, views, синонимы, и т д. • Скрипты патчей и апгрейдов вносят изменения в Новую Редакцию и эти изменения не видны для пользователей эксплуатационной системы • После того, как скрипты выполнены и новый код протестирован, Новая Редакция активизируется для эксплуатационной системы sql> create Edition “New_Edition” as child of “Old_Edition”; sql> alter session set Current_Edition = “New_Edition”; … Загрузка новых версий нетабличных объектов Многоверсионность таблиц • Таблицы не заменяются на новую версию через Редакции • Чтобы реализовать новые версии таблиц создается перед таблицей Editioning View • Editioning Views отображает подмножество колонок одной таблицы • Это полезно для того, чтобы спрятать новые или измененные колонки от пользователей старой системы • Editioning view создается в “Старой Редакции” и прячет изменения, сделанные в “Новой Редакции” • Нет испорченных объектов и нет ошибок при переходе на новую версию приложения! Улучшения в переопределении объектов • Быстрое добавление колонки с величиной “по умолчанию” • Не надо обновлять все строки и записывать туда величину “по умолчанию” • Invisible Indexes (невидимые индексы) предотвращают преждевременное использование вновь созданных индексов • Online построение индексов без замедления выполнения DML • Зависимые объекты не перекомпилируются когда • В таблицу добавляются колонки • Процедуры добавляются в пакет • Легче выполнять DDL операции для таблиц в online • Можно задать режим ожидания для активных DML операций (вместо их прерывания) Online Patching of One-off Patches • Патчирование работающих инстансов Oracle без их остановки • Многие специализированные (one-off) патчи могут быть применены online • Подмножество обновляющих RAC online патчей • Подходит для диагностирующих патчей • Включать, выключать и деинстолировать специализированные патчи без остановки инстанса • Интегрировано с OPatch и inventory • Первоначально пригодны для Linux и Solaris • Долговременная цель - online применение критических патчей (Critical Patch Updates -CPUs). Physical Standby с Real-Time Query Real-time Queries Одновременные Постоянная передача и применение Redo Первичная БД • • Physical Standby БД Запросы на чтение выполняются на physical standby одновременно с применением redo • • • • запросы в реальном времени Поддержка RAC на primary / standby Запросы видят транзакционно консистентные результаты Немедленно доступно многим пользователям physical standby Совмещение защиты от катастроф и запросов в реальном времени уникально – нет простаивающих ресурсов Пригодно для всех типов данных, но не так гибко, как logical standby Rolling Database Upgrades c помощью временного Logical Standby Physical Logical Upgrade Physical • Logical standby позволяет выполнить rolling upgrades но имеет ограничения по типам данных • Временное преобразование physical standby в logical для выполненияrolling upgrade • Ограничения на типы данных на короткое время • Не нужно создавать отдельный logical standby для апгрейда Возможно и в 10.2, но с большим объемом ручной работы Новые возможности Flashback • Flashback Transaction • Одним нажатием кнопки откатить транзакцию и все конфликтующие транзакции • Оптимизирован Flashback Database • Снижена нагрузка от операций insert и direct loads Flashback Data Archive Select * from orders AS OF ‘Midnight 31-Dec-2004’ • Долговременное хранение - годы • Автоматически сохраняет все изменения для выбранных таблиц в Flashback Data Archive • Архив не может быть изменен • Старые данные удаляются в соответствии с политикой сохранения ORDERS Archive Tables User Tablespaces Flashback Data Archive Oracle Database Полный возврат • Можно посмотреть содержимое таблицы на любой момент времени с помощью Flashback SQL • Используется для • • • • • Отслеживания изменений ILM Долговременной истории изменений Аудита Соответствия законадательству (Compliance) Файлы и реляционные данные • Многие приложения работают как с файлами, так и с реляционными данными • Например, документооборот, медицина, CAD, работа с изображениями • Простота и производительность работы с файловой системой делает ее привлекательной для хранения данных в файлах, в то же время реляционные данные хранятся в СУБД • Это вызывает проблемы с безопасностью, надежностью и управляемостью • • • • • • Различные модели аудита и обесп безопасности Изменения не делаются автоматически Backup и восстановление фрагментированы Поиск по реляционным данным и файлам сложен Сложно управлять пространством хранения Различные интерфейсы и протоколы • Два менеджера данных для одного приложения – слишком жирно • При патчировании приложения возникает щель Oracle SecureFiles Консолидированные средства безопасного управления данными • SecureFiles – новая функция СУБД, созданная для того, чтобы убрать проблему производительности, заставляющую хранить файлы вне БД • Похоже на LOB но намного быстрее и с новыми возможностями • Прозрачное кодирование, сжатие, де-дублирование, и т д. • Реализует безопасность, надежность и масштабируемость СУБД для файлов • Расширение интерфейсов LOB позволяет легко мигрировать с LOB • Позволяет консолидировать файлы и связанные с ними реляционные данные • Единая модель безопасности • Единый взгляд на данные • Единство управления данными Высокая производительность Чтение файлов Скорость (MB/sec) 120 100 80 60 40 20 0 Запись файлов SecureFiles Linux Files LOBs 0,1 1 10 100 120 100 80 60 40 20 0 SecureFiles Linux Files LOBs 0,1 Размер файла (MB) 1 10 100 Размер файла (MB) • Предварительные результаты: производительность сравнима с файловой системой Linux • Нет сетевого доступа, журналирования, единый поток чтения/записи файла • Помните, что и LOBs и SecureFiles предлагают намного больше функциональности, чем обычные файлы • Производительность – как у файловой системы Интерфейсы СУБД и файловой системы • С SecureFiles можно работать как из клиентов СУБД, так и из клиентов файловой системы • Клиенты СУБД используют расширение интерфейсов LOB • JDBC, ODBC, OCI, .NET, PL/SQL • 11g имеет хорошо оптимизированный протокол для работы с SecureFiles • Клиенты файловой системы используют протоколы файловой системы (implemented in the XML DB repository) • FTP • WebDav • Mountable NFS V4 file system (preview only) Server Results Cache • Автоматически кэширует результаты запросов, подзапросов (query blocks) или вызова функций pl/sql • • Кэш совместно используется различными SQL операторами и сеансами сервера Значительное ускорение для операций чтения (read-only / read-mostly data) • Буферный кэш следующего уровня join join join join T1 T1 T1 T2 T2 Q1: Q2:build Использует query cache это прозрачно GBY GBY GBY GBY cache join join join T4 T3 T3 join T5 T6 Server Results Cache • Несколько уровней контроля • Оператор – hints • Таблица – table caching DDL • Сессия – параметр <значения force or auto or manual> • Автоматически заставляет оптимизатор запросов определять стратегию кэширования • Размер памяти для кэша задается ДБА • Полная согласованность результата • Кэш обновляется при изменении таблиц, из которых получен кэшируемый результат OCI Client Result Cache Application Server Связанное кэширование Database • Кэширует результаты запроса на клиенте • Улучшает производительность работы с таблицами, используемыми в основном для чтения (read-mostly) • • Более быстрое время отклика – исключается передача по сети Уменьшает нагрузку на процессоры сервера • Согласован с сервером • • Кэш проактивно обновляется, когда изменяется result set Как Cache Fusion между сервером и клиентом OCI Client Result Cache • Унифицированный интерфейс с Server result cache alter table DEPT cache results • Кэш процесса разделяется несколькими сессиями/средами • Работает со всеми 11g OCI-based клиентами • Включая ODP.Net, JDBC Type 2, PHP, ODBC • Для активизации СRC ДБА необходимо только устанавить размер клиентского кэша • Параметр на клиенте может перекрыть размер клиентского кэша “Native” PL/SQL и JAVA компиляция • 100+% быстрее для чисто PL/SQL или Java кода • 10% – 30% быстрее для типичных транзакций SQL • PL/SQL • Только один параметр - On / Off • Не нужен C компилятор • Нет DLL файлов • Java • Только один параметр – On / Off • JIT (Java in Time) “на лету” компилятор • Прозрачно для пользователей (асинхронно, в фоновом режиме) • Код сохраняется, чтобы избежать перекомпиляций • JDBC 4.0, Java SE 5.0 Сжатие для OLTP • Oracle Database 9i table compression работает для DW • Сжатие для операций массовой загрузки (bulk load) • Direct Path Load • Create Table Select As … • Теперь сжатие можно использовать для OLTP • Обычные (non-bulk) INSERT, UPDATE, DELETE • Add, Drop Column • Выгоды сжатия • • • • Уменьшает использование диска – обычно в 2 – 3 раза Уменьшает ввод/вывод Увеличивает эффективность кэша Лучше производительность операций чтения Цикл жизни данных Цикл жизни данных Активные Менее активные Исторические Offline архив DIGITAL DATA STORAGE Быстрые диски Дешевые диски Online архив Offline архив СУБД Oracle + Partitioning – идеальное средство для ILM Database + Partitioning Активные Менее Исторические активные • • • • • Понимание бизнес данных Независимо от Hardware Прозрачно для приложений Настраиваемое Центральная точка управления • Дешево – Можно использовать ASM для управления множеством областей хранения (storage tiers) Устройства хранения ILM Assistant Механизмы СУБД, используемые для ILM Oracle Database 10g • Partition, Table Level Compression • Range, List and Hash Partitioning • Composite Partitioning • Range List, Range Hash Oracle Database 11g добавляет • Лучшее сжатие для таблиц, партиций, LOB • Новые Interval, Ref и Virtual Column Partitioning • Новые виды смешанного (Composite) Partitioning Range List Hash Range Yes Yes Yes List Yes Yes Yes Interval Yes Yes Yes Виртуальные колонки - пример • Базовая таблица со всеми атрибутами ... • ... расширена виртуальной (вычисляемой) колонкой • ... которая используется как ключ секционирования CREATE TABLE accounts (acc_no number(10) not null, acc_name varchar2(50) not null, ... acc_branch number(2) generated always as (to_number(substr(to_char(acc_no),1,2))) partition by list (acc_branch) ... 12500 12507 12666 12875 Adams Blake King Smith 12 12 12 12 ... 32320 32407 32758 32980 Jones Clark Hurd Phillips 32 32 32 32 Interval Partitioning • Interval Partitioning • Расширение Range Partitioning • Полная автоматизация для равномерных range partitions • Вначале сегменты создаются только на уровне метаданных • Создается только стартовая Partition • Сегменты создаются только тогда, когда для них появляются данные • Не надо создавать новые сегменты • Также создаются и поддерживаются локальные индексы Не нужно управлять секциями Interval Partitioning • Очень легко.. CREATE TABLE sales (order_date DATE, ...) PARTITON BY RANGE (order_date) INTERVAL(NUMTOYMINTERVAL(1,'month') (PARTITION p_first VALUES LESS THAN ('01-JAN-2006'); Table SALES ... Jan 2006 Feb 2006 Mar 2006 ... Jan 2007 ... Oct 2009 Nov 2009 Новый сегмент создается автоматически INSERT INTO sales (order_date DATE, ...) VALUES ('04-MAR-2006',...); Interval Partitioning • Таблица с Interval partition может совмещать классические range и автоматические interval секции • Range partitioned таблица может быть расширена в interval partitioned таблицу • Простая команда • Защита инвестиций • Можно слить и переместить старые секции для ILM Table SALES ... ... 2005 Q2 2006 Q1 2006 Old range partition table ... Oct 2006 Новые помесячные Interval partitions ALTER TABLE sales (order_date DATE, ...) SET INTERVAL(NUMTOYMINTERVAL(1,'month'); REF Partitioning Таблица ORDERS ... Jan 2006 • RANGE(order_date) ... • Primary key order_id Feb 2006 PARTITION BY REFERENCE • Ключ секционирования наследуется через связь PK-FK Таблица LINEITEMS ... Jan 2006 Feb 2006 • RANGE(order_date) ... • Foreign key order_id Прочее • Оптимизирован Cach Fusion Protocol • Оптимизирован DataGuard • Cжатие Redo, ускорена передача, применение • Fast-Start Failover при Async режиме (с потерями) • Поддержка XMLType, TDE для Logical Standby • Binary (Native) XML • Семантические сети • Transparent encription для tablespace и LOB Как нас найти... • Телефон в Москве +(7 495) 641-14-00 • www.oracle.com/ru • www.oracle.ru • Email Mark.Rivkin@oracle.com