Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Ядро Oracle. Внутреннее устройство для администраторов и разработчиков баз данных

Покупка
Артикул: 732541.02.99
Доступ онлайн
519 ₽
В корзину
В данной книге автор приводит только самую необходимую информацию о внутреннем устройстве СУБД Oracle, которую должен знать каждый администратор баз данных, чтобы успешно бороться с неполадками. Снаружи Oracle выглядит сложной. В действительности же обширные функциональные возможности основываются на очень небольшой базовой инфраструктуре, являющейся результатом архитектурных решений, принятых в самом начале и выдержавших испытание временем. Эта инфраструктура управляет транзакциями, реализует механизмы подтверждения и отката изменений, защищает целостность базы данных, позволяет выполнять резервное копирование и восстановление из резервных копий, а также обеспечивает масштабируемость до поддержки тысяч пользователей, одновременно обращающихся к одним и тем же данным. Большинство проблем, с которыми администраторы баз данных сталкиваются ежедневно, можно легко идентифицировать, если знать и понимать, как действует ядро Oracle, о чем и рассказывается в книге. Издание предназначено администраторам баз данных, готовых совершенствовать свое мастерство, когда управление СУБД осуществляется на основе глубоких знаний и понимания особенностей ее работы.
Льюис, Д. Ядро Oracle. Внутреннее устройство для администраторов и разработчиков баз данных : практическое руководство / Д. Льюис ; пер. с англ. А. Н. Киселева. - 2-е изд - Москва : ДМК Пресс, 2023. - 373 с. - ISBN 978-5-89818-327-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/2102614 (дата обращения: 12.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Джонатан Льюис

Ядро 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. Также известен как Ларри Эллисон. – Прим. перев.
Доступ онлайн
519 ₽
В корзину