Электронная библиотека системного администратора. Какие темы не рассматриваются

2 декабря 2014 в 13:19

Oracle 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, задающих так много хороших вопросов. Если бы не они, мне и в голову не пришло бы написать эту книгу. Большая часть представленной здесь информации является прямым результатом чьего-нибудь вопроса "как" или "почему".

Наконец, и это самое главное, я благодарен за неизменную поддержку моей семье. Когда в тысячный раз слышишь: "Папа, ну почему ты все еще пишешь эту книгу?", то понимаешь, что кому-то нужен. Я просто не представляю, как бы я закончил эту книгу без постоянной поддержки моей жены Лори, сына Алана и дочери Мэган.




Top