Ядро Oracle. Внутреннее устройство для администраторов и разработчиков баз данных
Покупка
Тематика:
Системы управления базами данных (СУБД)
Издательство:
ДМК Пресс
Автор:
Льюис Джонатан
Перевод:
Киселев Артём Николаевич
Год издания: 2023
Кол-во страниц: 373
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-327-1
Артикул: 732541.02.99
Доступ онлайн
В корзину
В данной книге автор приводит только самую необходимую информацию о внутреннем устройстве СУБД Oracle, которую должен знать каждый администратор баз данных, чтобы успешно бороться с неполадками.
Снаружи Oracle выглядит сложной. В действительности же обширные функциональные возможности основываются на очень небольшой базовой инфраструктуре, являющейся результатом архитектурных решений, принятых в самом начале и выдержавших испытание временем. Эта инфраструктура управляет транзакциями, реализует механизмы подтверждения и отката изменений, защищает целостность базы данных, позволяет выполнять резервное копирование и восстановление из резервных копий, а также обеспечивает масштабируемость до поддержки тысяч пользователей, одновременно обращающихся к одним и тем же данным. Большинство проблем, с которыми администраторы баз данных сталкиваются ежедневно, можно легко идентифицировать, если знать и понимать, как действует ядро Oracle, о чем и рассказывается в книге. Издание предназначено администраторам баз данных, готовых совершенствовать свое мастерство, когда управление СУБД осуществляется на основе глубоких знаний и понимания особенностей ее работы.
- Полная коллекция по информатике и вычислительной технике
- Базы данных. Разработка и защита
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Системы управления базами данных (СУБД)
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Джонатан Льюис Ядро Oracle Внутреннее устройство для администраторов и разработчиков баз данных
Oracle Core Essential Internals for DBAs and Developers Jonathan Lewis
Москва, 2023 Ядро Oracle Внутреннее устройство для администраторов и разработчиков баз данных Джонатан Льюис 2-е издание, электронное
УДК 004.65:004.451Oracle Database ББК 32.973.34 Л91 Л91 Льюис, Джонатан. Ядро Oracle. Внутреннее устройство для администраторов и разработчиков баз данных / Дж. Льюис ; пер. с англ. А. Н. Киселева. — 2-е изд., эл. — 1 файл pdf : 373 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-327-1 В данной книге автор приводит только самую необходимую информацию о внутреннем устройстве СУБД Oracle, которую должен знать каждый администратор баз данных, чтобы успешно бороться с неполадками. Снаружи Oracle выглядит сложной. В действительности же обширные функциональные возможности основываются на очень небольшой базовой инфраструктуре, являющейся результатом архитектурных решений, принятых в самом начале и выдержавших испытание временем. Эта инфраструктура управляет транзакциями, реализует механизмы подтверждения и отката изменений, защищает целостность базы данных, позволяет выполнять резервное копирование и восстановление из резервных копий, а также обеспечивает масштабируемость до поддержки тысяч пользователей, одновременно обращающихся к одним и тем же данным. Большинство проблем, с которыми администраторы баз данных сталкиваются ежедневно, можно легко идентифицировать, если знать и понимать, как действует ядро Oracle, о чем и рассказывается в книге. Издание предназначено администраторам баз данных, готовых совершенствовать свое мастерство, когда управление СУБД осуществляется на основе глубоких знаний и понимания особенностей ее работы. УДК 004.65:004.451Oracle Database ББК 32.973.34 Электронное издание на основе печатного издания: Ядро Oracle. Внутреннее устройство для администраторов и разработчиков баз данных / Дж. Льюис ; пер. с англ. А. Н. Киселева. — Москва : ДМК Пресс, 2015. — 372 с. — ISBN 978-5-97060-169-3. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-327-1 © by Jonathan Lewis © Оформление, перевод на русский язык ДМК Пресс, 2015
оглавление Об авторе ..........................................................9 О технических рецензентах ................................ 11 Благодарности ................................................. 12 Введение ........................................................ 14 Глава 1. Начало... ............................................. 17 Oracle в процессах ................................................................... 18 Oracle в действии .................................................................... 21 В заключение .......................................................................... 22 Глава 2. Повтор и отмена ................................... 24 Изменение простых данных ..................................................... 24 Подход ...........................................................................................25 Пример ...........................................................................................26 Коротко о главном ..........................................................................30 Подведение итогов .........................................................................32 ACID ........................................................................................ 32 Простота механизма повторения ............................................. 35 Сложность механизма отмены ................................................. 44 Согласованное чтение ....................................................................45 Откат ..............................................................................................46 В заключение .......................................................................... 48 Глава 3. Транзакции и согласованность ................ 50 Разрешение конфликтов ......................................................... 51 Транзакции и механизм отмены ............................................... 52 Начало и конец транзакции .............................................................54 Таблица транзакций ........................................................................55 Обзор блока отмены .......................................................................58 Блоки данных и механизм отмены ........................................... 62 Подготовка полигона ......................................................................62 Список заинтересованных транзакций ...........................................64 Параллельные операции ................................................................67 Поддержка согласованности ................................................... 69
Оглавление Номер SCN подтверждения ..................................................... 75 Фиксирующая очистка ....................................................................76 Отложенная очистка блока ..............................................................79 Откат таблицы транзакций ..............................................................84 Большие объекты .................................................................... 92 В заключение .......................................................................... 93 Глава 4. Блокировки и защелки ........................... 95 В первую очередь... ................................................................. 96 Массивы .........................................................................................96 Указатели .......................................................................................97 Связанные списки ..........................................................................97 Хэш-таблицы ................................................................................100 Защелки ................................................................................ 105 Логика работы защелок ................................................................106 Статистики по операциям с защелками ........................................110 Защелки и масштабируемость .....................................................117 Блокировки ........................................................................... 120 Инфраструктура ...........................................................................120 Представление v$lock ...................................................................122 Взаимоблокировка .......................................................................127 Режимы блокировок .....................................................................133 Защелки для блокировок ..............................................................134 Блокировки KGL (и закрепления) ..................................................137 Блокировки и закрепления ...........................................................138 В заключение ........................................................................ 141 Глава 5. Кэши и копии ...................................... 143 Управление памятью ............................................................. 144 Гранулы ........................................................................................144 Гранулы и буферы ........................................................................146 Несколько кэшей данных ....................................................... 148 Гранулы и пулы буферов ...............................................................151 Пулы буферов ...............................................................................152 Рабочие наборы данных ........................................................ 155 Алгоритм LRU/TCH ................................................................ 156 Алгоритм LRU/TCH в действии ......................................................158 Переустановка ссылок в буфере ...................................................159 REPL_AUX .............................................................................. 161 Поиск данных ........................................................................ 164 Закрепленные буферы .................................................................168 Логический ввод/вывод ................................................................171 Изменение ...................................................................................172 Загрузка хэш-цепочки ..................................................................173 Согласованные копии ...................................................................174 Физический ввод/вывод ...............................................................175
Оглавление Сканирование таблиц ...................................................................176 В заключение ........................................................................ 178 Глава 6. Запись и восстановление ..................... 181 Цели ...................................................................................... 181 Запись в журнал .................................................................... 183 Цикл записи в журнал ...................................................................186 Оптимизация PL/SQL ....................................................................189 Аномалия ACID .............................................................................193 Расширенные механизмы подтверждения ....................................194 Механика ......................................................................................196 Непроизводительные потери памяти в буфере .............................200 Приватные буферы журнала .........................................................203 Запись данных ....................................................................... 204 Заголовки буферов.......................................................................206 Очереди контрольных точек ..........................................................206 Инкрементальные контрольные точки ...........................................209 Взаимодействия процесса записи данных............................. 211 Взаимодействие dbwr и lgwr .........................................................211 Процесс записи данных и списки LRU ...........................................213 Контрольные точки и очереди .......................................................217 Очереди заголовков буферов .......................................................223 Контрольные точки и файлы журнала ............................................224 Восстановление .................................................................... 227 Восстановление носителя ............................................................229 Резервные базы данных ...............................................................230 Ретроспективные базы данных .....................................................231 Побочные эффекты ......................................................................233 В заключение ........................................................................ 234 Глава 7. Парсинг и оптимизация ........................ 237 Понимание SQL ..................................................................... 237 Парсинг ........................................................................................238 Оптимизация ................................................................................238 Интерпретация результатов tkprof ................................................240 Кэш словаря .......................................................................... 243 Структура .....................................................................................248 Функционирование кэша словаря .................................................251 Вызов парсера – что это? ...................................................... 255 Кэш курсора .................................................................................257 Удержание курсоров .....................................................................260 Библиотечный кэш ................................................................ 262 Организация разделяемого пула ..................................................265 Детали организации разделяемого пула ......................................270 … и его работы! ............................................................................277 Парсинг и оптимизация ......................................................... 280
Оглавление Выполнение, блокировка и закрепление .......................................284 Мьютексы .....................................................................................286 В заключение ........................................................................ 287 Глава 8. rac и крах ......................................... 290 Общая картина ...................................................................... 291 Бесперебойная работа .................................................................294 Для чего это надо? ................................................................ 296 Отказоустойчивость .....................................................................297 Масштабируемость ......................................................................298 Oracle Grid ....................................................................................299 Как это работает? .................................................................. 301 GRD ..............................................................................................302 Ведущие и теневые ресурсы .........................................................305 GCS и GES ....................................................................................309 Cache Fusion .................................................................................312 Следствия ....................................................................................315 Восстановление .................................................................... 319 Последовательности ............................................................. 321 Кэширование последовательностей .............................................322 Внутреннее устройство последовательности ...............................323 Упорядоченные последовательности............................................325 Последовательности и индексы ....................................................328 В заключение ........................................................................ 331 Приложение. Вывод и отладка .......................... 334 oradebug ................................................................................ 334 Приостановка процессов ..............................................................334 Вывод дампов ..............................................................................335 Вывод содержимого памяти .........................................................340 Вывод дампа из инструкций SQL ........................................... 343 Альтернативы oradebug ................................................................344 Блоки файлов данных ...................................................................345 Файлы журнала ............................................................................346 Рекомендации ....................................................................... 350 Словарь терминов .......................................... 351 Предметный указатель .................................... 366
об авторе Джонатан Льюис (Jonathan Lewis) – опытный преподаватель с математической подготовкой из Оксфордского университета. Хотя первый интерес к компьютерам появился у него еще в нежном возрасте, что- то около 12 лет, – во времена, когда под высокими технологиями понималось использование клавиатуры, а не устройства для перфорирования карт – он, все же, не получил развития, пока Джонатан не закончил университет и не начал заниматься вычислениями профессионально. Кроме первого года после обучения, когда он, как неопытный продавец отвечал на любой вопрос «Да», вместо «Да, но это займет несколько недель на программирование и настройку», Джонатан работал только на себя. Первое знакомство Джонатана с Oracle состоялось с версией 5.1, которую он использовал на ПК, проектируя и создавая систему управления рисками для сырьевой торговой площадки в одной из крупных нефтяных компаний. (Тогда он написал на ПК первую версию системы с названием dBase III, в которой использовались таблицы, индексы и некоторые другие механизмы, характерные для систем управления реляционными базами данных.) Благодаря Oracle он узнал, что должна делать настоящая система управления реляционными базами данных, и эти знания немедленно были взяты им на вооружение. С того времени Джонатан сосредоточился исключительно на использовании Oracle RDBMS. Спустя три или четыре года работы по контракту, в течении которых он обрел опыт строительства больших систем, Джонатан решил закончить работы по контракту и заняться оказанием консалтинговых услуг, и теперь полностью посвящает свое
Об авторе время краткосрочным консалтинговым работам, проведению семинаров и «исследовательским» работам. Джонатан хорошо известен в мире Oracle – в течение последних 10 лет он работал в 50 странах и в десятках штатов США. Он оказывает посильную поддержку группам пользователей; в частности, принимает активное участие в работе группы пользователей Oracle Великобритании « UK Oracle User Group» (www.ukoug.org). При каждой удобной возможности старается выкроить время для встреч с группами пользователей в других странах, за пределами Великобритании, которые иногда имеют формат коротких собраний после окончания рабочего дня. Он также ведет свой блог, посвященный Oracle (http:// jonathanlewis.wordpress.com) и регулярно (когда не занят работой над очередной книгой) пишет статьи для разных журналов, форумов и семинаров. Джонатан совсем недавно отпраздновал серебряную свадьбу со своей супругой Дианой (Diana) (в настоящее время работает учителем в начальной школе и заведующей отделением математики после многих лет работы бухгалтером). У них есть двое детей: Анна (Anna, в настоящее время учится на последнем курсе Оксфордского университета) и Симон (Simon, учится на первом курсе Йоркского университета). Несмотря на привязанность родителей к математике, ни один не пошел по их стопам.
о технических рецензентах Танел Подер (Tanel Põder) – специалист международного уровня по вопросам производительности Oracle, помогающий решать сложные проблемы своим клиентам в более чем двадцати странах на пяти континентах. Специализируется на тонкой настройке производительности, полной диагностике и решении других сложных (и от того особенно интересных) задач, таких как миграция огромных баз данных за ограниченный интервал времени. Танел занимался оптимизацией производительности аппаратно-программных комплексов Exadata, начиная с версии Exadata V1, и планирует провести еще более обширные исследования производительности Exadata. Является соавтором книги «Expert Oracle Exadata» (Apress, 2011). Танел одним из первых в мире получил сертификат «Oracle Certi- fied Masters», имеет звание «Oracle ACE Director» и является полноправным членом OakTable Network. Регулярно выступает на конференциях по всему миру, публикует статьи, а также распространяет сценарии и инструменты в своем блоге http://blog.tanelpoder.com.
благодарности В первую очередь я хочу поблагодарить мою супругу Диану, за ее поддержку, пока я писал эту книгу. Без ее любви и терпения не было бы этой книги. Она приготовила мне несчетное число чашек чая (которые часто оставались на столе нетронутыми), терпела, когда я работал поздно вечером (или рано утром), и не жаловалась, когда я работал над книгой в ущерб другим делам. Эта книга требовала большой концентрации, и если вместо меня никто не делал бы повседневные дела, я не смог бы ее написать. Любая техническая книга нуждается в рецензировании, поэтому я, конечно же, благодарен Танелу Подеру (http://tech.e2sn.com/ и http://blog.tanelpoder.com/), что стал моим техническим рецензентом. Его замечания, вопросы и исправления были весьма ценны и поучительны. У меня были также два «неофициальных» рецензента: Мартин Видлейк (Martin Widlake, http://mwidlake.wordpress.com) и Тимур Ахмадеев (Timur Akhmadeev, http://timurakhmadeev.wordpress.com/), оказавшие мне немалую помощь в создании книги. Я просил их помочь мне выяснить, что еще добавить в книгу, что убрать, и какие ее части несут неоднозначную информацию; однако они здорово помогли мне также в вылавливании технических ошибок. Если вам понравятся диаграммы в этой книге, благодарите за это Мартина, потому что это он постоянно говорил мне о том, какие описания следует сопроводить иллюстрациями. Андрей Николаев (Andrey Nikolaev, http://andreynikolaev. wordpress.com/) был специально приглашен для рецензирования главы 4. В Интернете имеется огромный объем информации с описанием работы внутренних механизмов Oracle – большая часть этого объема является простым повторением сведений, устаревающих с годами. Лучшей демонстрацией этого феномена являются сведения о «защелках» ( latches); отчасти потому что это, безусловно, очень сложная тема. Андрей сделал намного больше, чем любой другой автор в Интернете, представив современное описание защелок (и мьютексов) –
Благодарности поэтому я просил его составить свое мнение о главе 4. Я очень благодарен Андрею за его комментарии и исправления. Даже при том, что над книгой работали такие превосходные рецензенты, вы все еще можете встретить в ней ошибки и недостатки – вина за все эти ошибки и недостатки лежит исключительно на мне. Например, иногда я преднамеренно допускал, возможно, излишнее упрощение, иногда я сам мог что-то неправильно понять. Значительная часть этой книги рассказывает о работе внутренних механизмов, но ни я, ни приглашенные мною рецензенты не имеют доступа к внутренней, закрытой документации с описанием таких механизмов; мы – обычные люди, применяющие научный подход ко всему, что можно исследовать и измерить. В течение долгого времени мы наблюдаем и обсуждаем работу того или иного механизма, вырабатывая единое мнение, которого придерживаемся, пока не появятся новые данные. Я мог бы назвать еще много имен людей, так или иначе внесших свой вклад в эту книгу; людей, которые давали мне ответы, задавали вопросы или приглашали для решения интересных задач. Вы всегда сможете найти огромное число вопросов на форумах, таких как OTN (http://forums.oracle.com) и Oracle-L (www.freelists.org/archive/ oracle-l), где описываются реальные проблемы с Oracle, и огромное число людей, обладающих знаниями и опытом, позволяющими решать эти проблемы. Без непрекращающегося потока вопросов так легко застрять в колее и думать, что вы знаете все. Я с полной уверенностью могу сказать, что значительная часть моих знаний об Oracle была получена в ходе исследований, которыми я занимался, пытаясь найти ответы, а не подсматривал готовые решения в Интернете.
введение Когда я написал книгу «Practical Oracle 8i», прошло всего три недели с момента публикации до первого электронного письма, где меня спрашивали, когда я напишу книгу для версии 9i – благодаря Ларри Эллисону (Larry Ellison)1, выпустившему к тому моменту версию 9i. За последние 12 лет этот вопрос мне задавали много-много раз (менялся только номер версии). Эта книга показывает, насколько я был близок к решению начать работу над вторым изданием, правда в ней охватывается только первая (и немного вторая и третья) глава оригинала. Два обстоятельства побудили меня вновь сесть за письменный стол. Во-первых, я очень часто наталкивался на вопросы вида: «Как Oracle делает то-то или то-то?». Во-вторых, было подмечено, что на такие вопросы почти невозможно найти ответы, которые были бы просты, понятны и содержательны. Обычно приходится перелопачивать горы руководств, чтобы найти ответы на часто задаваемые вопросы. Если заняться поисками ответа в Интернете, можно найти массу статей с описанием некоторых тонкостей в работе Oracle, но вы не найдете достаточно связного описания, которое поможет понять, как работает тот или иной механизм и почему он работает именно так, а не как-то иначе. В этой книге я попытался дать именно такие ответы. Мне хотелось рассказать, как работает Oracle, поведать вам связную историю, а не просто дать набор отрывочных сведений. Цели Руководства с описанием версии 11g занимают десятки тысяч страниц, поэтому кажется маловероятным, что в книге, содержащей всего пару сотен страниц, удалось описать «как все работает», поэтому я хочу обозначить главные цели. Книга описывает основные механизмы ядра базы данных, приводящие в движение все остальное; по сути в их число входят механизмы повтора, отмены, кэ- 1 Лоренс Джозеф Эллисон (Lawrence Joseph Ellison) – основатель и исполнительный директор корпорации Oracle. Также известен как Ларри Эллисон. – Прим. перев.
Доступ онлайн
В корзину