® Системы высокой доступности на базе СУБД Oracle (Oracle9i) Грищенко Сергей Российское представительство Oracle Oracle : высокая доступность Три характеристики высокодоступного решения Надежность Способность к восстановлению – быстрое восстановление без участия человека Работоспособность – способность предоставлять сервисы при выполнении операций сопровождения Oracle9i - Высокая доступность Незапланированный сбой Плановые операции Системный сбой Real Application Clusters Fast Restart Потери данных и катастрофы Recovery Manager Data Guard Человеческий фактор Flashback Query Log Miner, Data Guard Сопровождение системы Dynamic Reconfiguration Data Guard, RAC Сопровождение БД Online Redefinition Partitioning, Parallel SQL Oracle : высокая доступность Защита от краха систем и системных сбоев Защита от человеческих ошибок и катастроф Обеспечение высокой доступности при операциях по сопровождению СУБД Oracle : высокая доступность Защита от краха систем и системных сбоев – – – – – – – Standart Fault Recovery Fast-start Checkpointing Fast-start parallel rollback Cold Failover Warm Failover Real Application Cluster Hot Failover Маскировка сбоев Transparent Application Failover Принципы восстановления БД Для восстановления после сбоя БД должна : Убедиться, что все изменения, сделанные до сбоя, сохранены (roll forward) Объем работы пропорционален скорости изменения данных и промежутком между контрольными точками (checkpoints) Откатить все незавершенные транзакции (roll back) Объем работы пропорционален величине самой большой транзакции, поэтому полное время не может быть проконтролировано администратором БД до Recovery Step 1: Roll Forward Step 2: Roll Back Uncommitted Transaction Committed Transaction Recovery Time = Roll Forward + Roll Back Обычный Checkpointing Процесс Recovery повторяет все изменения, сделанные со времени последнего Checkpoint Обычный алгоритм периодически идентифицирует все модифицированные блоки в буфере и пишет их на диск – – Как только все записи завершены, время checkpoint сдвигается ко времени начала процесса записи Должен поддерживать максимальную скорость модификации и поэтому осуществляет иногда слишком много операций записи в обычном случае Oracle9i : новый стандарт восстановления Recovery Time = Roll Forward + Roll Back Архитектура быстрого восстановления после сбоя: – – Ограничивает время наката и делает его предсказуемым Полностью устраняет влияние времени отката Roll Back RIP Fast-Start Recovery Time = + 0 Fast-Start Checkpoints FAST_START_IO_TARGET Controls The Length Of Recovery Buffer Cache Redo Log Time Recovery Position Maintained In The Control File By Fast-Start Checkpoint (determined by oldest dirty block) Clean Buffer Dirty Buffer Present ДБА может прямо контролировать время наката, ограничивая число блоков, которые нужно восстанавливать в случае сбоя Oracle автоматически управляет интервалами между checkpoints Самый старый модифицированный блок записыватся всегда первым, что почти вдвое уменьшает время roll forward Основные компоненты Высокоскоростной Разделяемая сервер Высокосокростная дисковая связь подсистема Server 1 Server 2 Server 3 CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU Server N ••• CPU CPU CPU CPU Кластерные базы данных Shared Cache/Disk – – – Shared Nothing Oracle и IBM Mainframes Чем больше узлов, тем надежней Не требует секционирования данных Data A-Z – – – Data A-E Microsoft и IBM Unix/NT Чем больше узлов, тем ненадежней Static Data Partitioning Data F-K Data L-S Data T-Z Microsoft “Clustered” Database распределенная БД CLUSTER NETWORK database “partition” database “partition” database database “partition” database “partition” Масштабируемость - это возможность добавлять данные и узлы Распределенная БД ... database “partition” Добавить узел... – – – Выгрузить данные Переопределить таблицы, индексы, представления, триггеры Перегрузить данные database “partition” database “partition” database “partition” database “partition” Масштабируемость - это возможность добавлять данные и узлы Кластерная БД ... Добавить узел... Система должна обеспечивать высокую доступность В распределенной БД при падении узла ... database “partition” Локальные данные этого узла становятся недоступными Незавершенные транзакции могут блокировать данные других database узлов (2-phase commit) database “partition” “partition” Сложно восстанавливать database “partition” database “partition” Система должна обеспечивать высокую доступность В кластерной БД при падении узла ... Все данные остаются доступными Данные других узлов не блокируются (незавершенные транзакции откатываются другими узлами) Восстановление автоматическое Восстановление с Cold Failover Heartbeat Oracle Instance Oracle Instance Shared Disk Separate Databases Рестарт Oracle на запасном узле кластера Только одна система видит базу данных в любой момент времени Решение обеспечивает поставщик системы Время рестарта первичного узла отделено от времени восстановления Восстановление с Warm Failover Переприсоединение на соседний узел кластера с Oracle Parallel Server Все восстановление выполняется работающими узлами Oracle Instance Oracle Instance Oracle Instance OS OS OS Shared Disk and Database Восстановление с Hot Failover primary Oracle Instance backup Oracle Instance Shared Database Предварительное соединение с соседним узлом кластера В случае сбоя используется это соединений В случае сотен пользователей это значительно экономит время Failover - Oracle Fail Safe for MS NT Основной узел Oracle RDBMS e-mail Oracle e-mail RDBMS Oracle Fail Safe Oracle Oracle Fail Fail Safe Safe Fail Safe MS Clust. Mgr. MS Clust. Mgr. Windows NT Windows NT Oracle Резервный узел Parallel Cache Management Обмен блоками 3. Update Block A DLM Shared Memory/Global Area shared SQL 4. Update Block A DLM Shared Memory/Global Area log buffer shared SQL log buffer . .. . .. ... Ping 1. Read Block A 5. Block A 2. Read Block A Block A Shared Disk Database • По требованию • Через диск • Способы избежать – Application Partitioning – Tx Monitors Cache Fusion Oracle9i Cache Fusion повышает производительность и масштабируемость – – Данные пересылаются напрямую через интерконнект Уменьшается число операций Ввода/Вывода Node A Node B Request Data Transfer Database buffers Database buffers Database Oracle9i Real Application Cluster -Масштабируемость и Высокая доступность Архитектура Shared Cache использует Cache Fusion • Все узлы online • Добавка дисков без re-partitioning • Failover прозрачно для пользователей High-speed interconnect • Масштабирование всех приложений без изменений • Простота администрирования, поддержка всех платформ Transparent Application Failover (TAF) Лучший сбой - это сбой, который прошел незаметно ! Transparent Application Failover работает на всех уровнях – – – Приложение и пользователи автоматически и прозрачно переприсоединяются к другому узлу Приложения и запросы не прерываются Поддерживается контекст Login’а Computer A Computer B При сбое узла А пользователи мигрируют на В Computer A Computer B TAF Select Failover Прерванная выборка записей продолжает выполняться Механизм много-версионного чтения гарантирует целостность результатов Client SELECT * FROM emp; empno 7369 7499 7521 7566 7654 7698 SELECT * FROM emp; name Smith Allen Ward Jones Martin Blake Rows Partially Returned When Failover Occurred empno Instance 1 Instance 2 DB 7369 7499 7521 7566 7654 7698 name Smith Allen Ward Jones Martin Blake Continues Returning Remaining Rows Характеристики TAF TAF защищает или переносит: – – – Все клиентские приложения, которые используют Oracle Call Client/server соединения Interface version 8 (OCI8) Состояние сессии Активные курсоры (SELECT или выше, явно или нет, statements) которые начали работают с TAF возвращать результаты Не переносит: – – Активные транзакции UPDATE Переменные PL/SQLпакетов со стороны сервера – SQL*Plus, ODBC, JDBC/OCI, Oracle precompilers DynaСonnect - Поддержка большого числа пользователей Соединения переключаются на наименее занятый узел Real Application Cluster Использование DynaConnect CPU Load Listener Node Dispatchers Listener CPU Load Node Dispatchers Client БД при старте регестрируется со всеми listener’ми Узел сообщает об использовании ЦПУ listener’ам Listener выбирает наименее используемый узел Oracle Parallel Query Query Server 1 Server 2 Server 3 Oracle RDBMS Subquery Oracle RDBMS Oracle RDBMS Oracle RAC Oracle RAC Oracle RAC ClusterWare ClusterWare ClusterWare ClusterWare OS OS OS OS Subquery Server N Subquery ••• Application Решения Oracle для кластеров Масштабируемость Oracle9i + RAC + OPQ Oracle9i + RAC Oracle9i Oracle9i + Oracle Fail Safe Доступность Решения Oracle для кластеров Real Application Cluster Плюсы – – – – – – – – Высокие доступность и масштабируемость Нет точек сбоя Число клиентов, затрагиваемых сбоем, невелико Пользователи могут работать в процессе восстановления После сбоя данные находятся в кэше работающего узла Балансировка нагрузки Рост масштабируемости с числом узлов Одинаковая реализация для различных платформ Hardware Failover Плюсы – – – – – Высокая доступность Простое администрирование и управление Недорого Небольшая дополнительная нагрузка на систему Интеконнект проводит только heartbeat Решения Oracle для кластеров Real Application Cluster Минусы – – – Более сложные настройка и администрирование Цена Интерконнект требует напряженной работы DLM Hardware Failover Минусы – – – – Перезагрузка кэша после восстановления Запасной узел может быть недозагружен в обычном режиме Или перегружен после перехода Различная реализация для разных платформ Oracle : высокая доступность Защита от краха систем и системных сбоев Защита от человеческих ошибок и катастроф Обеспечение высокой доступности при операциях по сопровождению СУБД Oracle : высокая доступность Защита от катастроф – – – Oracle Data Guard Advanced Replication Geo-mirroring Oracle Data Guard Primary Server Standby Server Log Write Production Database Log Files Log Apply Standby Database Поддержка синхронной копии базы данных “Failover” и “Switchover” Primary Server Production Database Log Apply Standby Server Log Files Log Write Standby Database Logical Standby Ship Log Files Production Database Recover Logs ZERO DATA LOSS Transform Log Files to SQL statements Physical Standby Database Apply SQL Statements Logical Standby Database Зеркалирование удаленных дисковых подсистем Production System Backup System Oracle Server Oracle Server Удаленное зеркалирование диск-в-диск управляется системой хранения Используется: – – – High Speed Link Database Storage Database Mirror Восстановление после катастроф Ускорения архивирования Создание “read-only” копии БД EMC Symmetrix + SRDF (Symmetric Remote Data Facility) + TimeFinder сертифицированы Oracle Advanced Replication Репликация - процесс копирования и поддержания синхронности объектов БД в нескольких базах данных Paris San Francisco Singapore Сравнение решений Репликация Возможность потери данных Standby Да, не завершенная во Да, транзакция в время сбоя журнале, не переданном транзакция на Standby Зеркалирование Нет Использование второго сайта Да Read-only Нет Технология восстановления Instance Recovery+ Conflict Resolution Клонирования БД Синхронизация систем хранения Расстояние (км) Тысячи Тысячи не более 100 Стоимость Средняя Низкая Высокая Oracle : высокая доступность Защита от краха систем и системных сбоев Защита от человеческих ошибок и катастроф Обеспечение высокой доступности при операциях по сопровождению СУБД Database Resource Manager Ресурсы, предоставляемые пользователям, базируются на плане, определяемом администратором Позволяет выставлять приоритеты Database Resource Manager OLTP User OLTP updates and queries: high priority DSS User DSS queries: medium priority Batch Processing Batch: low priority Database Resource Manager Выделение ресурсов Resource Plan Управляемые ресурсы – Resource Consumer Groups Plan Directives OLTP CPU = 60% p a ra lle l d e g re e lim it = 0 DSS CPU = 30% p a ra lle l d e g re e lim it = 20 Batch CPU = 10% p a ra lle l d e g re e lim it = 20 – Использование ЦПУ МАХ степень параллелизма Уровень параллелизма выбирается автоматически, основываясь на выделенных ресурсах и степени загрузки системы Возможны разные планы для разных дней недели или времени суток LogMiner™ Файлы redo log содержат информацию об активности над базой данных Oracle9i LogMiner предоставляет стандартный интерфейс, позволяющий анализировать содержимое этих файлов LogMiner можно использовать: – – – – Отслеживать специфические изменения, основанные на транзакциях, пользователе, таблице, времени, etc. Определять, как выполнить откат Восстановление проводится на уровне приложения, а не на уровне БД Выполнять тюнинг Пример LogMiner Joe Smith поднял себе зарплату…. SQL> select sql_redo, sql_undo from v$logmnr_contents where 2 username = ‘joe smith’ and seg_name = ‘EMPLOYEE’; SQL_REDO SQL_UNDO delete * from EMPLOYEE where EMPNO = 12345 and ROWID = ‘AAABOOAABAAEPCABA’; insert into EMPLOYEE(NAME,EMPNO, SAL) values (‘joe smith’, 12345,500) insert into EMPLOYEE(NAME, EMPNO, SAL) values(‘joe smith’,12345,2500) delete * from EMPLOYEE where EMPNO = 12345 and ROWID = ‘AAABOOAABAAEPCABA’; 14 rows selected SQL> exit Секционирование таблиц и индексов Улучшает доступность, управляемость Секционирование упрощает управление VLDB Секционирование значительно повышает производительность Разделы прозрачны для пользователей и приложений Данные разбиваются в зависимости от приложения ORDER table Диапазон значений Q1 Q2 01-JAN to 31-MAR 01-APR to 30-JUN Q3 01-JUL to 30-SEP Q4 01-OCT to 31-DEC Секционирование таблиц и индексов Секционирование по hash-значению Вставляет записи в раздел, основываясь на вычисляемом значении Отлично для равномерного распределения данных и параллельного DML ORDER table Данные разделяются используя hash-алгоритм Секционирование таблиц и индексов Сложное секционирование Лучшее из обоих видов секционирования – Параллельный доступ – Управляемость и доступность ORDER table Вначале по ключу, потом по hash-значанию Q1 Q2 Q3 Q4 List Partitioning Пример преимущества - скользящее окно : данные разбиваются согласно бизнес-требованиям Запросы online Europe Americas Asia Region Region Region 1200 GMT Сопровождение Секционирование индексов Global NonPartitioned Index Global Partitioned Index Индекс GLOBAL указывает на запись в любой секции – – – Table Table Table Table Partition Partition Partition Partition LOCAL - секционирован как и таблица – – Local Partitioned Index Prefixed or Not Индекс может быть секционирован или нет Поддержка секций влияет на весь индекс Лучший подход для OLTP – – Ключ разбиения может отличаться от ключа для таблицы Ключ разбиения можно поддерживать отдельно Оптимально для DSS Оптимально для OPS Параллельное выполнение запросов select sum(revenue), store from line_items where profit (price,units) > 0.2 group by store order by store cost user-defined function query servers SQL data Coordinator ship SQL functions, assemble results sort A-K scan sort L-S scan sort T-Z scan sorting & grouping sort by store, sum revenues scanning scan line_items, executing “profit” function in parallel dynamic data distribution Параллельные INSERT, UPDATE и DELETE Полное использование параллельности аппаратуры Query--Index--Load Insert--Update--Delete C C C P P P U U U C C C C C P P P P P U U U U U С ростом БД, выполнение операций должно быть паралельным для получения желаемого времени отклика Операции с хранилищем данных, выполнеемые параллельно, значительно повышают производительность при глобальных изменениях – – – Глобальный UPDATE Глобальный DELETE Глобальный INSERT Реорганизация структур данных «на лету» Структуры данных можно изменять «на лету» при одновременных операциях пользователей Операция не требует блокировок Изменения и запросы Изменения и запросы Фиксация xxx xxx xxx xxx xxx xxx xxx xxx xx xx xx xx xx xx xx xx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx Перенос таблицы завершен Перенос таблицы xxx xxx xxx xxx xxx xxx xxx xxx xx xx xx xx xx xx xx xx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx Восстановление данных Запрос на определенный момент времени (flashback) Запросить состояние данных на любое выбранное время в прошлом Любой SQL запрос допустим Oracle Enterprise Manager Направляемая, экспертная диагностика и настройка Разрешение проблем Web интерфейс HTML отчеты Документация для задач Oracle9i - Высокая доступность Как нас найти... • Телефон в Москве 258-41-80 • www.oracle.com/ru