Электронная библиотека системного администратора. Какие темы не рассматриваются
2 декабря 2014 в 13:19Oracle PL/SQL. Для профессионалов. 6-е изд
- Oracle ,
- SQL ,
- Блог компании Издательский дом «Питер» ,
- Профессиональная литература
Привет Хаброжители!
У нас вышло 6 переиздание книги
Прототип: Oracle PL/SQL Programming (Sixth Edition)
Paperback – March 3, 2014
Структура книги:
«Авторы и O’Reilly Media приложили максимум усилий, чтобы как можно более полно осветить процесс развития PL/SQL. В шестом издании книги описываются средства и возможности PL/SQL для Oracle12c Release 1; эта версия будет считаться «эталонной». Однако там, где это уместно, в книге будут упоминаться другие возможности, появившиеся в более ранних версиях (или доступные только в них). Список основных характеристик разных версий приведен в разделе «История PL/SQL» главы 1. Язык PL/SQL прошел долгий путь с момента выхода версии 1.0 для Oracle 6. В книгу также были внесены серьезные изменения, посвященные новшествам PL/SQL, и был добавлен новый материал.Главным изменением шестого издания является подробное описание всех новых возможностей PL/SQL в Oracle Database 12c Release 1. Сводка этих нововведений приведена в главе 1 со ссылками на главы, в которых эти нововведения рассматриваются подробно. Я(автор) очень доволен результатами своего труда и надеюсь, что ими будете довольны и вы. Книга содержит больше информации, чем любое из предыдущих изданий, но как мне кажется, нам удалось сохранить чувство юмора и разговорный стиль изложения, благодаря которому, как мне сообщали читатели за прошедшие годы, эта книга легко читалась, была понятной и полезной».
Часть I. «Программирование на PL/SQL». Глава 1 начинается с самого начала: как появился SQL? Для чего он нужен? Далее приводится краткий обзор основных возможностей PL/SQL. Глава 2 построена таким образом, чтобы вы могли сходу взяться за программирование: она содержит четкие и простые инструкции по выполнению кода PL/SQL в среде разработки SQL*Plus и некоторых других распространенных средах.В главе 3 рассказывается об основах языка PL/SQL: что собой представляют операторы, какова структура блока, как создавать комментарии и т. п.
Часть II. «Структура программы PL/SQL». В главах 4–6 рассматриваются условные (IF и CASE) и последовательные (GOTO и NULL) операторы управления порядком выполнения команд; циклы и оператор CONTINUE, появившийся в Oracle11; средства обработки исключений в PL/SQL. Эта часть книги учит составлять блоки программного кода, соответствующие сложным требованиям ваших приложений.
Часть III. «Работа с данными в PL/SQL». Почти любая написанная вами программа будет заниматься обработкой данных, которые часто являются локальными для процедуры или функции PL/SQL. Главы 7–13 посвящены различным типам программных данных, определяемым непосредственно в PL/SQL: числам, строкам, датам, временным меткам, записям и коллекциям. Вы узнаете о новых типах данных Oracle 11g (SIMPLE_INTEGER, SIMPLE_FLOAT и SIMPLE_DOUBLE), а также о многих типах для работы с двоичными данными, датой и временем, введенных в других версиях. Кроме того, мы расскажем о встроенных функциях, предоставляемых Oracle для выполнения различных операций с данными.
Часть IV. «SQL и PL/SQL». В главах 14–16 рассказано об одном из центральных аспектов программирования на PL/SQL: подключении к базе данных, осуществляемом из кода SQL. Из них вы узнаете, как определяются транзакции обновления, вставки, слияния и удаления таблиц базы данных; как запросить из базы данных информацию для обработки в программах PL/SQL и как динамически выполнять SQL-инструкции средствами NDS (Native Dynamic SQL).
Часть V. «Создание приложений PL/SQL». В этой части книги сводится воедино все, о чем говорилось ранее. Приступая к ее изучению, вы уже будете знать, как объявлять переменные и как с ними работать, освоите важнейшие принципы обработки ошибок и построения циклов. В главах 17–22 рассказывается о самых крупных структурных элементах приложений: процедурах, функциях, триггерах и пакетах, а также об организации ввода и вывода информации в приложениях PL/SQL. В главе 20 также обсуждаются вопросы управления кодом PL/SQL, его тестирования, отладки и управления зависимостями; также здесь представлен обзор механизма оперативной замены, введенного в Oracle11g Release 2. Глава 21 посвящена использованию различных инструментов и приемов для достижения оптимального быстродействия в программах PL/SQL. В главе 22 описаны средства ввода/вывода PL/SQL, от пакетов DBMS_OUTPUT (вывода на экран) и UTL_FILE (чтение и запись файлов) до UTL_MAIL (отправка электронной почты) и UTL_HTTP (получение данных с веб-страниц).
Часть VI. «Особые возможности PL/SQL». Язык PL/SQL, столь мощный и богатый, содержит немало функциональных возможностей и структурных элементов, которые не используются в повседневной работе, но позволяют максимально просто и эффективно решать задачи, справиться с которыми другими способами было бы очень трудно. В главе 23 описаны проблемы безопасности, с которыми мы сталкиваемся при создании программ PL/SQL. В главе 24 рассматривается архитектура PL/SQL, в том числе использование памяти. Глава 25 содержит полезный материал для разработчиков, которым необходимо решать проблемы глобализации и локализации в своих приложениях. Глава 26 содержит вводный курс по объектно-ориентированным возможностям Oracle (объектным типам и представлениям).
В приложениях А–В содержится информация о синтаксисе регулярных выражений, форматах чисел и дат.Главы, посвященные выполнению кода Java и C из приложений PL/SQL, входившие в печатное четвертое издание, были перемещены на веб-сайт книги.
Какие темы не рассматриваются:
Даже в самой толстой книге нельзя рассказать обо всем. Oraclе - огромная и сложная система, а мы рассматриваем только основные возможности языка PL/SQL. Ниже перечислены темы, которые не вошли в рамки нашего издания и поэтому лишь поверхностноупоминаются время от времени.
Язык SQL. Предполагается, что читатель уже знает язык SQL и умеет составлять инструкции SELECT, INSERT, UPDATE, MERGE и DELETE.
Администрирование баз данных Oracle. Администраторы баз данных почерпнут из этой книги немало полезного и интересного - в частности, научатся писать PL/SQL-программы для создания и обслуживания баз данных. Тем не менее у нас не было возможности рассказать о нюансах языка определения данных (DDL), входящего в Oracle SQL.
Оптимизация приложений и баз данных. Тема оптимизации также рассматривается лишь поверхностно, хотя в главе 21 обсуждаются многие приемы и инструменты, которые пригодятся вам при оптимизации быстродействия ваших программ PL/SQL.
Технологии разработки приложений Oracle, независимые от PL/SQL. Книга даже не пытается демонстрировать построение приложений с использованием таких инструментов, как Oracle Forms Developer, несмотря на то, что в них также используется язык PL/SQL. Я решил сконцентрироваться на фундаментальных возможностях языка и на тех операциях, которые с его помощью можно выполнять в базах данных. Однако большая часть материала книги относится и к использованию PL/SQL в Forms Developer и Reports Developer.
Более подробно можно ознакомиться
Oracle PL/SQL для профессионалов. 6-е издание.
Авторы и O’Reilly Media - Стивен Фейерштейн и Билл Прибыл приложили максимум усилий, чтобы как можно более полно осветить процесс развития PL/SQL. В шестом издании книги описываются средства и возможности PL/SQL для Oracle12c Release 1; эта версия будет считаться «эталонной». Однако там, где это уместно, в книге будут упоминаться другие возможности, появившиеся в более ранних версиях (или доступные только в них). Язык PL/SQL прошел долгий путь с момента выхода версии 1.0 для Oracle 6. В книгу также были внесены серьезные изменения, посвященные новшествам PL/SQL, и был добавлен новый материал.
Шестое издание книги " Oracle PL/SQL для профессионалов" состоит из шести частей. Часть I. «Программирование на PL/SQL». Глава 1 начинается с самого начала: как появился SQL? Для чего он нужен? Далее приводится краткий обзор основных возможностей PL/SQL. Глава 2 построена таким образом, чтобы вы могли сходу взяться за программирование: она содержит четкие и простые инструкции по выполнению кода PL/SQL в среде разработки SQL*Plus и некоторых других распространенных средах. В главе 3 рассказывается об основах языка PL/SQL: что собой представляют операторы, какова структура блока, как создавать комментарии и т. п. Часть II. «Структура программы PL/SQL». В главах 4-6 рассматриваются условные (IF и CASE) и последовательные (GOTO и NULL) операторы управления порядком выполнения команд; циклы и оператор CONTINUE, появившийся в Oracle11; средства обработки исключений в PL/SQL. Часть III. «Работа с данными в PL/SQL». Почти любая написанная вами программа будет заниматься обработкой данных, которые часто являются локальными для процедуры или функции PL/SQL. Главы 7-13 посвящены различным типам программных данных, определяемым непосредственно в PL/SQL: числам, строкам, датам, временным меткам, записям и коллекциям. Вы узнаете о новых типах данных Oracle11g (SIMPLE_INTEGER, SIMPLE_FLOAT и SIMPLE_DOUBLE), а также о многих типах для работы с двоичными данными, датой и временем, введенных в других версиях. Часть IV. «SQL и PL/SQL». В главах 14-16 рассказано об одном из центральных аспектов программирования на PL/SQL: подключении к базе данных, осуществляемом из кода SQL. Из них вы узнаете, как определяются транзакции обновления, вставки, слияния и удаления таблиц базы данных; как запросить из базы данных информацию для обработки в программах PL/SQL и как динамически выполнять SQL-инструкции средствами NDS (Native Dynamic SQL). Часть V. «Создание приложений PL/SQL». В этой части книги сводится воедино все, о чем говорилось ранее. Приступая к ее изучению, вы уже будете знать, как объявлять переменные и как с ними работать, освоите важнейшие принципы обработки ошибок и построения циклов. Часть VI. «Особые возможности PL/SQL». Язык PL/SQL, столь мощный и богатый, содержит немало функциональных возможностей и структурных элементов, которые не используются в повседневной работе, но позволяют максимально просто и эффективно решать задачи, справиться с которыми другими способами было бы очень трудно. В главе 23 описаны проблемы безопасности, с которыми мы сталкиваемся при создании программ PL/SQL. В главе 24 рассматривается архитектура PL/SQL, в том числе использование памяти. Глава 25 содержит полезный материал для разработчиков, которым необходимо решать проблемы глобализации и локализации в своих приложениях. Глава 26 содержит вводный курс по объектно-ориентированным возможностям Oracle (объектным типам и представлениям).
Начинающему программисту PL/SQL стоит прочитать книгу от начала до конца — она повысит вашу квалификацию и углубит знания PL/SQL. Опытным разработчикам PL/SQL, возможно, будет достаточно ознакомиться лишь с отдельными ее разделами, чтобы освоить конкретные приемы практического программирования.
Издательство - Питер
Год издания - 2015
Формат книги - PDF
Размер - 10,9 Мб
для профессионалов
торгово-издательскийдом
Москва Санкт-Петербург Киев 2003
УДК 681.3. 06(075) ББК32.973.2
К 91 КАЙТ ТОМ
К 91 Oracle для профессионалов. Пер. с англ./ТомКайтСПб.: ООО «ДиаСофтЮП», 2003. - 672 с.
ISBN 5-93772-072-5
Выход в свет в конце прошлого года этой книги издательства Wrox стал эпохальным событием: впервые доходчиво и исчерпывающе раскрыты основные особенности архитектуры СУБД Oracle, принципиально отличающие ее от других популярных систем управления базами данных. Причем подробно описаны и проиллюстрированы множеством примеров именно те возможности, средства и особенности Oracle, которые обеспечивают разработку эффективных приложений для этой СУБД и ее успешную эксплуатацию.
Автор книги, Том Кайт, давно работает с СУБД Oracle, создает приложения и администрирует базы данных. Многие годы он профессионально занимается решением проблем, возникающих при использовании СУБД Oracle у администраторов и разработчиков по всему миру. На специализированном сайте корпорации Oracle (http://asktom.oracle.com) Том Кайт отвечает на десятки вопросов в день. Он не только делится знаниями, но и умело подталкивает читателя к самостоятельным экспериментам. Следуя по указанному им пути, становишься Профессионалом.
Authorized translation from the English language edition, entitled Expert One-on-One Oracle, 1st Edition by Kyte, Thomas, published by Pearson Education, Inc, publishing as Wrox Press Ltd,
Copyright © 2002
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.
Russian language edition published by DiaSoft Publishing. Copyright © 2003
Лицензия предоставлена издательством Wrox Press Ltd.
Все права зарезервированы, включая право на полное или частичное воспроизведение в какой бы то ни было форме.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.
Все торговые знаки, упомянутые в настоящем издании, зарегистрированы. Случайное неправильное использование или пропуск торгового знака или названия его законного владельца не должно рассматриваться как нарушение прав собственности.
Гигиеническое заключение № 77.99.6.953.П.438.2.99от 04.02.1999
Уважаемые читатели!
О СУБД Oracle написано и издано как на английском, так и на русском языке, наверное, больше книг, чем обо всех остальных реляционных СУБД вместе взятых. Многие из этих книг полезны и интересны. Кроме того, в сети Internet доступны десятки тысяч страниц документации, которой могут воспользоваться разработчики, администраторы баз данных Oracle и пользователи. В журналах, на корпоративном сайте Oracle (http://www.oracle.com) и на десятках независимых сайтов печатаются статьи но всем аспектам администрирования и использования этой СУБД.
Тем не менее появление в конце прошлого года именно этой книги издательства Wrox стало эпохальным событием: впервые доходчиво и исчерпывающе раскрыты основные особенности архитектуры СУБД Oracle, принципиально отличающие ее от других популярных систем управления базами данных. Причем подробно описаны и проиллюстрированы множеством примеров именно те возможности, средства и особенности Oracle, которые обеспечивают разработку эффективных приложений для этой СУБД и ее успешную эксплуатацию.
годы он, сотрудник корпорации Oracle, профессионально занимается решением проблем, возникающих при использовании СУБД Oracle у администраторов и разработчиков по всему миру. В дискуссионных группах соmp.databases.oracle.* и в журнале Oracle Magazine, а в последние годы - еще и на специализированном сайте корпорации Oracle(http://asktom.oracle.com) Том Кайт отвечает на десятки вопросов в день.
Я набрел на этот сайт случайно, по ссылке в одном из документов, найденном славной поисковой системой Google. Потом стал его еженедельным, а со временем - ежедневным посетителем. Меня привлекло многообразие рассматриваемых проблем и изящество их решения. В изложении Тома Кайта все становится простым. При этом он не только делится знаниями, но и умело подталкивает читателя к самостоятельным экспериментам. Следуя по указанному им пути, становишься Профессионалом.
Поэтому меня очень обрадовало сообщение о выходе книги Тома Кайта «Expert one- on-one: Oracle», и я сделал все от меня зависящее, чтобы издательство «ДиаСофт» опубликовало ее перевод. Этот перевод я не смог никому доверить и сделал его сам. Если текст на русском языке понятен и приятен для чтения, то только благодаря потрясающему литературному редактору Ж. Е. Прусаковой, помогавшей мне в работе над книгой. Я благодарен ей, а также сотрудникам издательства «ДиаСофт» за поддержку и усилия, которые они приложили для выхода этой книги в свет. .
В оригинале книга - очень большая, более 1200 страниц. В русском переводе, с разрешения издательства Wrox, она разделена на две части. Мы хотели часть книги, наиболее принципиальную для успешного использования СУБД Oracle, выпустить как можно быстрее. Сейчас, когда вы читаете первую часть, посвященную архитектуре и основным возможностям СУБД Oracle, продолжается работа над второй частью; она выйдет несколькими месяцами позже.
Предисловие научного редактора
Мы старались сделать книгу максимально полезной и удобной для чтения: исправили выявленные читателями английской версии ошибки, которые приведены на сайте издательства Wrox, согласовали терминологию.
Если вы приступаете к изучению СУБД Oracle, - начните с этой книги. Если вы опытный разработчик приложений или администратор баз данных Oracle, - прочтите ее и проверьте, достаточно ли глубоко вы знаете эту СУБД и умеете ли использовать ее возможности. Вы найдете в книге десятки советов, описаний приемов и методов решения задач, о которых никогда не подозревали.
И, конечно же, рекомендую читать блестящие ответы и рекомендации Тома Кайта на его ежедневно обновляющемся сайте AskTom: http://asktom.oracle.com. Если корпорация Oracle станет общепризнанным и неоспоримым лидером на рынке производителей программного обеспечения, то в немалой степени благодаря тому,что икак делает для пользователей ее программных продуктов один человек - Том Кайт!
В. Кравчук, OpenXS Initiative (http://openxs.net)
Введение
О чем эта книга
Для кого предназначена эта книга?
Структура книги
Основные понятия
Структуры и утилиты базы данных
Производительность
Расширенные возможности SQL
Расширяемость
Приложения
Типографские особенности книги
Контакты с читателями
Исходный код и обновления
Глава 1. Разработка успешных приложений для Oracle
Мой подход
Подход с использованием принципа черного ящика
Как надо (и как не надо) разрабатывать приложения баз данных
Понимание архитектуры СУБД Oracle
Избегайте длительных транзакций в среде MTS
Используйте связываемые переменные
Особенности управления одновременным доступом
Реализация блокирования
Многовариантность
Независимость от СУБД?
Влияние стандартов
Возможности и функции
Решайте проблемы просто
Открытость
Как ускорить работу?
Взаимоотношения АБД и разработчиков
Глава 2. Архитектура
Файлы параметров
Файлы данных
Временные файлы
Управляющие файлы
Файлы журнала повторного выполнения | ||
Активный журнал повторного выполнения | ||
Архивный журнал повторного выполнения | ||
Структуры памяти | ||
Области PGA и UGA | ||
Область SGA | ||
Фиксированная область SGA | ||
Буфер журнала повторного выполнения | ||
Буферный кэш | ||
Разделяемый пул | ||
Большой пул | ||
Процессы | ||
Серверные процессы | ||
Выделенный и разделяемый сервер | ||
Фоновые процессы | ||
Фоновые процессы, предназначенные для решения конкретных задач | ||
Служебные фоновые процессы | ||
Подчиненные процессы | ||
Подчиненные процессы ввода/вывода | ||
Подчиненные процессы параллельных запросов | ||
Глава 3. Блокирование и одновременный доступ | ||
Что такое блокировки? | ||
Проблемы блокирования | ||
Потерянные изменения | ||
Пессимистическое блокирование | ||
Оптимистическое блокирование | ||
Блокирование | ||
Заблокированные вставки | ||
Заблокированные изменения и удаления | ||
Взаимные блокировки | ||
Эскалация блокирования | ||
Типы блокировок | ||
Блокировки ЯМД | ||
ТХ - блокировки транзакций | ||
ТМ - блокировки очередности ЯМД | ||
Блокировки ЯОД | ||
Защелки и внутренние блокировки | ||
Блокирование вручную. Блокировки, определяемые пользователем | ||
Блокирование вручную | ||
Создание собственных блокировок | ||
Что такое управление одновременным доступом? | ||
Уровни изолированности транзакции | ||
Уровень изолированности READ UNCOMMITTED | ||
Уровень изолированности READ COMMITTED | ||
Уровень изолированности REPEATABLE READ | ||
Получение согласованного ответа |
Предотвращение потери изменений | |
Уровень изолированности SERIALIZABLE | |
Транзакции только для чтения | |
Глава 4. Транзакции | |
Операторы управления транзакцией | |
Требования целостности и транзакции | |
Плохие привычки при работе с транзакциями | |
Распределенные транзакции | |
Журналы повторного выполнения и сегменты отката | |
Глава 5. Повторное выполнение и откат | |
Повторное выполнение | |
Что происходит при фиксации? | |
Что происходит при откате? | |
Какой объем данных повторного выполнения генерируется? | |
Можно ли отключить генерацию записей в журнал повторного выполнения? | |
Не удается выделить новый журнал? | |
Очистка блоков | |
Конфликты при доступе к журналу | |
Временные таблицы и данные повторного выполнения/отката | |
Анализ данных повторного выполнения | |
Что генерирует основной/наименьший объем данных отмены? | |
Оператор SET TRANSACTION | |
"ORA-01555: snapshot too old" | |
Сегменты отката очень маленькие | |
Данные извлекаются в нескольких транзакциях | |
Отложенная очистка блоков | |
Глава 6. Таблицы | |
Типы таблиц | |
Терминология | |
Отметка максимального уровня | |
Списки свободных мест | |
Параметры PCTFREE и PCTUSED | |
Перенос строки | |
Установка значений PCTFREE и PCTUSED | |
Параметры INITIAL, NEXT и PCTINCREASE | |
Параметры MINEXTENTS и MAXEXTENTS | |
Параметры LOGGING и NOLOGGING | |
Параметры INITRANS and MAXTRANS | |
Таблицы, организованные в виде кучи | |
Таблицы, организованные по индексу | |
Таблицы в индексном кластере |
Таблицы в хеш-кластере | |||
Вложенные таблицы | |||
Синтаксис вложенных таблиц | |||
Хранение вложенных таблиц | |||
Временные таблицы | |||
Объектные таблицы | |||
Обзор индексов в Oracle | |||
Индексы на основе В*-дерева | |||
Индексы совращенным ключом | |||
Индексы по убыванию | |||
Когда имеет смысл использовать индекс на основе В*-дерева? | |||
Индексы на основе битовых карт | |||
Когда имеет смысл использовать индекс на основе битовых карт? | |||
Индексы по функциям | |||
Важные детали реализации | |||
Пример использования индекса по функции | |||
Подводный камень | |||
Прикладные индексы | |||
Часто задаваемые вопросы об индексах | |||
Работают ли индексы с представлениями? | |||
Индексы и пустые значения | |||
Индексы по внешним ключам | |||
Почему мой индекс не используется? | |||
Использовались ли индексы? | |||
Миф: пространство в индексе никогда повторно не используется | |||
Миф: столбцы с максимальным количеством разных значений должны | |||
указываться первыми | |||
Глава 8. Импорт и экспорт | |||
Простой пример | |||
Когда могут пригодиться утилиты IMP и ЕХР? | |||
Выявление повреждений | |||
Извлечение операторов ЯОД | |||
Клонирование схем | |||
Перенос табличных пространств | |||
Пересоздание экземпляров | |||
Копирование данных с одной платформы на другую | |||
Особенности использования утилит |
Параметры утилиты ЕХР | ||
Параметры утилиты | ||
Экспортирование больших объемов данных | ||
Использование параметра FILESIZE | ||
Экспортирование по частям | ||
Экспортирование в именованный канал | ||
Экспортирование на устройство, не поддерживающее абсолютную | ||
адресацию | ||
Выделение подмножеств данных | ||
Перенос данных | ||
Получение операторов ЯОД | ||
Преодоление ограничений с помощью сценариев | ||
Резервное копирование и восстановление | ||
Утилиты IMP/EXP (уже) не являются средствами реорганизации | ||
Импортирование в другие структуры | ||
Непосредственный экспорт | ||
Проблемы и ошибки | ||
Клонирование | ||
Использование различных версий утилит IMP/EXP | ||
Куда делись индексы? | ||
Явно и автоматически именуемые требования | ||
Поддержка национальных языков (NLS) | ||
Таблицы, расположенные в нескольких табличных пространствах | ||
Введение в SQL*Loader | ||
Как сделать | ||
Изменение существующих строк и вставка новых | ||
Использование другого символа вместо символа новой строки | ||
Использование атрибута FIX | ||
Использование атрибута VAR | ||
Использование атрибута STR | ||
Как упростить обработку символов новой строки | ||
Выгрузка данных | ||
Вызов утилиты SQLLDR из хранимой процедуры |
Проблемы | ||
Нельзя выбрать сегмент отката | ||
TRUNCATE работает по-другому | ||
Стандартным типом поля в SQLLDR является CHAR(255) | ||
Опции командной строки переопределяют установки в командном файле | ||
Глава 10. Стратегии и средства настройки | ||
Определение проблемы | ||
Мой подход | ||
Настройка - непрерывный процесс | ||
Проектирование с учетом производительности | ||
Пробуйте разные подходы | ||
Применяйте защитное программирование | ||
Проверяйте производительность | ||
Связываемые переменные и разбор (еще раз) | ||
Используются ли связываемые переменные? | ||
SQL_TRACE, TIMED_STATISTICS и TKPROF | ||
Организация трассировки | ||
Использование и интерпретация результатов работы утилиты TKPROF | ||
Использование и интерпретация исходных трассировочных файлов | ||
Пакет DBMS_PROFILER | ||
Средства контроля и отладки | ||
Набор утилит StatsPack | ||
Установка утилит StatsPack | ||
Представления V$ | ||
ПредставлениеV$EVENT_NAME | ||
Представления V$FILESTAT и V$TEMPSTAT | ||
ПредставлениеV$LOCK | ||
Представление V$MYSTAT | ||
Представление V$OPEN_CURSOR | ||
Представление V$PARAMETER | ||
ПредставлениеV$SESSION | ||
ПредставлениеV$SESSION_EVENT | ||
ПредставлениеV$SESSION_LONGOPS | ||
ПредставлениеV$SESSION_WAIT | ||
ПредставлениеV$SESSTAT | ||
ПредставлениеV$SESS_IO | ||
Представления V$SQL и V$SQLAREA | ||
Представление V$STATNAME | ||
Представление V$SYSSTAT | ||
Представление V$SYSTEM_EVENT | ||
Глава 11. Стабилизация планаоптимизатора |
Метод настройки | ||
Средство разработки | ||
Проверка использования индексов | ||
Получение списка SQL-операторов, выполненных приложением | ||
Как выполняется стабилизация плана оптимизатора | ||
Представления OUTLINES и OUTLINE_HINTS | ||
Представления_OUTLINES | ||
Представления _OUTLINE_HINTS | ||
Создание хранимых шаблонов | ||
Привилегии, необходимые для создания хранимых шаблонов | ||
Использование операторов ЯОД | ||
Использование оператора ALTER SESSION | ||
Пользователь OUTLN | ||
Перенос шаблонов из одной базы данных в другую | ||
Получение нужного шаблона | ||
Управление шаблонами | ||
Операторы ЯОД | ||
Оператор ALTER OUTLINE | ||
Оператор DROP OUTLINE | ||
Пакет OUTLN_PKG | ||
Процедура OUTLN_PKG.DROP_UNUSED | ||
ПроцедураOUTLN_PKG.DROP_BY_CAT | ||
ПроцедураOUTLN_PKG.UPDATE_BY_CAT | ||
Проблемы | ||
Имена шаблонов и регистр символов | ||
Проблема с оператором ALTER SESSION | ||
Оператор DROP USER не удаляет шаблоны | ||
Шаблоны и параметр "CURSOR_SHARING = | ||
В шаблонах используется простое сравнение текста | ||
Шаблоны по умолчанию хранятся в табличном пространстве SYSTEM | ||
Раскрытие условий OR | ||
Производительность | ||
Пространство имен шаблонов - глобально | ||
Ошибки, которые можно допустить | ||
Предметный указатель |
Глава 12. Аналитические функции | |
Как работают аналитические функции | |
Синтаксис | |
Конструкция фрагментации | |
Конструкция упорядочения | |
Конструкция окна | |
Окна диапазона | |
Окна строк | |
Задание окон | |
Запрос первых N | |
Запрос с транспонированием | |
Доступ к строкам вокруг текущей строки | |
Проблемы | |
Аналитические функции в PL/SQL | |
Аналитические функции в конструкции WHERE | |
Значения NULL и сортировка | |
Производительность | |
Глава 13. Материализованные представления | |
Предыстория | |
Что необходимо для выполнения примеров | |
Назначение материализованных представлений | |
Как работать с материализованными представлениями | |
Подготовка | |
Внутренняя реализация | |
Переписывание запроса | |
Как гарантировать использование представлений | |
Требования целостности | |
Измерения | |
Пакет DBMS_OLAP | |
Оценка размера | |
Проверка достоверности измерений | |
Проблемы | |
Материализованные представления не предназначены для систем ООТ | |
Целостность запросов при переписывании | |
Глава 14. Фрагментация | |
Использование фрагментации | |
Повышение доступности данных | |
Упрощение администрирования | |
Повышение производительности операторов ЯМД и запросов | |
Как выполняется фрагментация | |
Схемы фрагментации таблиц | |
Фрагментация индексов | |
Локально фрагментированные индексы | |
Глобально фрагментированные индексы | |
Глава 15. Автономные транзакции | |
Когда использовать автономные транзакции? | |
Проверка, записи которой не могут быть отменены | |
Метод, позволяющий избежать ошибки изменяющейся таблицы | |
Выполнение операторов ЯОД в триггерах | |
Запись в базу данных | |
Строгая проверка | |
Когда среда позволяет выполнять только операторы SELECT | |
Разработка модульного кода | |
Как работают автономные транзакции | |
Выполнение транзакции | |
Область действия | |
Переменные пакетов | |
Установки/параметры сеанса | |
Изменения в базе данных | |
Блокировки | |
Завершение автономной транзакции | |
Точки сохранения | |
Проблемы | |
Невозможность использования в распределенных транзакциях | |
Только в среде PL/SQL | |
Откатывается вся транзакция | |
Временные таблицы уровня транзакции | |
Изменяющиеся таблицы | |
Глава 16. Динамический SQL | |
Сравнение динамического и статического SQL | |
Когда использовать динамический SQL? | |
Использование динамического SQL | |
Пакет DBMS_SQL | |
Встроенный динамический SQL | |
Сравнение пакета DBMS_SQL и встроенного динамического SQL | |
Связываемые переменные |
Количество столбцов выходных данных на этапе компиляции не известно | |||
Многократное выполнение одного и того же оператора | |||
Проблемы | |||
Нарушение цепочки зависимостей | |||
"Хрупкость" кода | |||
Сложность настройки | |||
Краткий исторический экскурс | |||
Использование компонента interMedia Text | |||
Поиск текста | |||
Управление разнородными документами | |||
Индексирование текста из различных источников данных | |||
Компонент interMedia Text - часть базы данных Oracle | |||
Смысловой анализ | |||
Поиск в приложениях XML | |||
Как работает компонент interMedia Text | |||
Индексирование с помощью interMedia Text | |||
Оператор ABOUT | |||
Поиске разделах | |||
Проблемы | |||
Компонент interMedia Text -это НЕ система документооборота | |||
Синхронизация индекса | |||
Индексирование информации вне базы данных | |||
Службы обработки документов | |||
Индекс-каталог | |||
Возможные ошибки | |||
Устаревший индекс | |||
Ошибки внешней процедуры | |||
Дальнейшее развитие | |||
Глава 18. Внешние процедуры на языке С | |||
Когда используются внешние процедуры? | |||
Как реализована поддержка внешних процедур? | |||
Конфигурирование сервера | |||
Проверка программы extproc | |||
Проверка среды сервера | |||
Проверка процесса прослушивания | |||
Первая проверка | |||
Компиляция кода extproc.с | |||
Настройка учетной записи SCOTT/TIGER | |||
Создание библиотеки demolib | |||
Установка и запуск | |||
Наша первая внешняя процедура | |||
Оболочка | |||
Код на языке С |
Создание внешней процедуры | |
Установка и запуск | |
Внешняя процедура для сброса большого объекта в файл (LOB_IO) | |
Спецификация пакета LOB_IO | |
Код Pro*С для пакета LOB_IO | |
Создание внешней процедуры | |
Установка и использование пакета LOB_IO | |
Возможные ошибки | |
Глава 19. Хранимые процедуры на языке Java | |
Когда используются хранимые процедуры на языке Java? | |
Как работают внешние процедуры на языке Java | |
Передача данных | |
Полезные примеры | |
Генерация списка файлов каталога | |
Выполнение команды ОС | |
Получение времени с точностью до миллисекунд | |
Возможные ошибки | |
ORA-29549 Java Session State Cleared | |
Ошибки прав доступа | |
ORA-29531 no method X in class Y | |
Глава 20. Использование объектно-реляционных средств | |
В каких случаях используются объектно-реляционные средства | |
Как работают объектно-реляционные средства | |
Добавление новых типов данных в систему | |
Использование типов для расширения возможностей языка PL/SQL | |
Создание нового типа данных PL/SQL | |
Уникальные приемы использования наборов | |
SELECT * из PL/SQL-функции | |
Множественная выборка данных в записи | |
Вставка записей | |
Объектно-реляционные представления | |
Необходимые типы | |
Объектно-реляционное представление | |
Глава 21 . Тщательный контроль доступа | |
Когда использовать это средство? | |
Простота сопровождения | |
Контроль доступа выполняется на сервере | |
Упрощение разработки приложений | |
Эволюционная разработка приложений | |
Отказ от совместно используемых учетных записей | |
Поддержка совместно используемых учетных записей | |
Предоставление доступа к приложению как к службе |
Как реализованы средства тщательного контроля доступа | ||
Пример 1: Реализация правил защиты | ||
Пример 2: Использование контекстов приложений | ||
Проблемы | ||
Целостность ссылок | ||
Тайный канал | ||
Удаление строк | ||
Кэширование курсоров | ||
Экспортирование/Импортирование | ||
Проблемы экспорта | ||
Проблемы импорта | ||
Ошибки, которые могут произойти | ||
Глава 22. Многоуровневая аутентификация | ||
Когда использовать многоуровневую аутентификацию? | ||
Механизм многоуровневой аутентификации | ||
Предоставление привилегии | ||
Проверка промежуточных учетных записей | ||
Проблемы | ||
Глава 23. Права вызывающего и создателя | ||
Когда использовать права вызывающего | ||
Разработка универсальных утилит | ||
Приложения, работающие со словарем данных | ||
Универсальные объектные типы | ||
Реализация собственных средств контроля доступа | ||
Когда использовать права создателя | ||
Производительность и масштабируемость | ||
Как работают процедуры с правами вызывающего | ||
Права создателя | ||
Компиляция процедуры с правами создателя | ||
Права вызывающего | ||
Разрешение ссылок и передача привилегий | ||
Компиляция процедуры с правами вызывающего | ||
Использование объектов-шаблонов | ||
Проблемы | ||
Права вызывающего и использование разделяемого пула | ||
Производительность | ||
Более надежный код для обработки ошибок | ||
Побочные эффекты использования SELECT * | ||
Помните о "скрытых" столбцах | ||
Java и права вызывающего | ||
Возможные ошибки | ||
Приложение А. Основные стандартные пакеты | ||
Когда используются стандартные пакеты | ||
О стандартных пакетах | ||
ПакетыDBMS_ALERTи DBMS_PIPE | ||
Когда использовать сигналы и каналы | ||
Настройка | ||
Пакет DBMS_ALERT | ||
Одновременные сигналы нескольких сеансов | ||
Неоднократная передача сигнала в сеансе | ||
Передача многочисленных сигналов несколькими сеансами до вызова | ||
процедуры ожидания | ||
Пакет DBMS_PIPE | ||
Серверы каналов или внешние процедуры? | ||
Пример в сети Internet | ||
Пакет DBMS_APPLICATION_INFO | ||
Использование информации о клиенте | ||
Использование представления V$SESSION_LONGOPS | ||
Пакет DBMS_JAVA | 1 584 |
|
Функции LONGNAME и SHORTNAME | ||
Установка опций компилятора | ||
ПроцедураSET_OUTPUT | ||
Процедуры loadjava и dropjava | ||
Процедуры управления правами | ||
Пакет DBMS_JOB | ||
Однократное выполнение задания | ||
Текущие задания | ||
Нетривиальное планирование | ||
Контроль заданий и обнаружение ошибок | ||
Как загружать большие объекты? | ||
Функция substr | ||
Оператор SELECT FOR UPDATE в языке Java | ||
Преобразования | ||
Преобразование типа BLOB в VARCHAR2 и обратно | ||
Преобразование данных типа LONG/LONG RAW в большой объект | ||
Пример множественного однократного преобразования типа | ||
Оперативное преобразование типа данных | ||
Запись значений объекта типа BLOB/CLOB на диск | ||
Выдача большого объекта на Web-странице с помощью PL/SQL | ||
ПакетDBMS_LОСК | ||
Этап 1: создание словаря данных | ||
Этап 2: использование средств LogMiner | ||
Опции и использование | ||
Определение с помощью LogMiner, когда | ||
Использование области PGA | ||
Ограничения пакетов LogMiner | ||
Объектные типы Oracle | ||
Перемещенные или фрагментированные строки | ||
Другие ограничения | ||
ПредставлениеV$LOGMNR_CONTENTS | ||
ПакетDBMS_OBFUSCATION_TOOLKIT | ||
Пакет-оболочка | ||
Проблемы | ||
Управление ключами | ||
Генерация и хранение ключей в клиентском приложении | ||
Хранение ключей в той же базе данных | ||
Хранение ключей в файловой системе сервера базы данных | ||
ПакетDBMS_OUTPUT | ||
Как работает пакет DBMS_OUTPUT | ||
Пакет DBMS_OUTPUT в других средах | ||
Обход ограничений | ||
Использование небольшой функции-оболочки или другого пакета | ||
Создание аналога пакета DBMS_OUTPUT | ||
Проблемы | ||
ПакетDBMS_UTILITY | ||
Процедура COMPILE_SCHEMA | ||
ПроцедураANALYZE_SCHEMA | ||
Применение процедуры ANALYZE_SCHEMA к изменяющейся схеме | ||
Процедура ANALYZE_SCHEMA анализирует не все | ||
ПроцедураANALYZE_DATABASE | ||
Функция FORMAT_ERROR_STACK | ||
Функция FORMAT_CALL_STACK | ||
Обработка исключительных ситуаций | ||
Как сбросить Web-страницу на диск? | ||
Ограничение длины строки -1023 байт | ||
Чтение содержимого каталога | ||
Пакет UTL_HTTP | ||
Возможности пакета UTL_HTTP | ||
Добавление поддержки протокола SSL в пакете UTL_HTTP | ||
Реальное использование пакета UTL_HTTP | ||
Улучшенная версия пакета UTL_HTTP | ||
Пакет UTL_RAW | ||
Пакет UTL_SMTP и отправка электронной почты | ||
UTL_SMTP - расширенный пример использования | ||
ПакетUTL_TCP | ||
Тип SocketType | ||
Приложение В. Поддержка, ошибки и сайт p2p.wrox.com | ||
Форумы на сайте p2p.wrox.com | ||
Как обратиться за поддержкой | ||
Почему эта система обеспечивает наилучшую поддержку | ||
Поиск информации об ошибках на сайте www.wrox.com | ||
Поиск информации об ошибках на Web-сайте | ||
Добавление информации об ошибке |
Меня зовут Том Кайт. Я работаю в корпорации Oracle со времени версии 7.0.9 (для тех, кто не измеряет время версиями Oracle, уточню - с 1993 года). Однако я работал с СУБД Oracle, начиная с версии 5.1.5с (однопользовательская версия для DOS стоимостью 99 долларов на дискетах емкостью 360 Кбайт). До корпорации Oracle я более шести лет работал системным интегратором, занимаясь построением крупномасштабных гетерогенных баз данных и приложений (в основном для правительственных и оборонных учреждений). В этот период я много работал с СУБД Oracle, а точнее, помогал пользователям баз данных Oracle. Я работал непосредственно с клиентами на этапе создания спецификаций и построения систем, но чаще помогал перестраивать или настраивать системы ("настройка" обычно сводилась к переделке). Кроме того, я - именно тот Том, который ведет рубрику "AskTom" в журнале Oracle Magazine, отвечая на вопросы читателей о сервере и инструментальных средствах Oracle. Обычно на сайте http://asktom.oracle.com я получаю за день от 30 до 40 вопросов и отвечаю на них. Раз в два месяца я публикую подборку лучших вопросов с ответами в журнале (ответы на все вопросы доступны в Web и, естественно, хранятся в базе данных Oracle). В общем, я занимаюсь тем, что помогаю людям успешно эксплуатировать СУБД Oracle. Да, а в свободное время я разрабатываю приложения и программное обеспечение в самой корпорации Oracle.
В этой книге описано то, чем я занимаюсь ежедневно. Предлагаемый в ней материал посвящен темам и вопросам, с которыми пользователи сталкиваются постоянно. Все проблемы рассматриваются с позиции "если я использую это, то делаютак...". Моя книга - итог многолетнего опыта использования СУБД Oracle в тысячах различных ситуаций.
Благодарности 15
Благодарности
Хочу также поблагодарить пользователей программного обеспечения Oracle, задающих так много хороших вопросов. Если бы не они, мне и в голову не пришло бы написать эту книгу. Большая часть представленной здесь информации является прямым результатом чьего-нибудь вопроса "как" или "почему".
Наконец, и это самое главное, я благодарен за неизменную поддержку моей семье. Когда в тысячный раз слышишь: "Папа, ну почему ты все еще пишешь эту книгу?", то понимаешь, что кому-то нужен. Я просто не представляю, как бы я закончил эту книгу без постоянной поддержки моей жены Лори, сына Алана и дочери Мэган.