Table Of ContentС. Н. Смирнов, И. С. Задворьев
Учебное пособие
2-е издание
исправленное и дополненное
Москва
"Гелиос АРВ'
2002
УДК 681.3.06
ББК 32.973.2
С 57
Смирнов С. И., Задворьев И. С.
С 57 Работаем с Oracle: Учебное пособие/ 2-е изд., испр.
и доп. — М: Гелиос АРВ, 2002. — 496 с.
ISBN 5-85438-048-Х
Книга "Работаем с Oracle" представляет собой быстрое вве-
дение в методы и средства распределенной СУБД Oracle. Рассмот-
рены методологические основы распределенной обработки ин-
формации, основные объекты базы данных Oracle, язык SQL —
базовое средство взаимодействия с сервером баз данных и его
процедурное расширение PL/SQL. Представляется возможность
получить углубленные знания по использованию SQL для работы
с большими базами данных. Особое внимание уделено технологи-
ям Oracle, обеспечивающим безопасность и целостность данных в
условиях многопользовательского доступа. В книге также содер-
жится описание средств, предназначенных для создания приложе-
ний на языке Java.
Книга ориентирована на студентов, молодых специалистов и
всех желающих самостоятельно познакомиться с Oracle — распре-
деленной СУБД для эффективной обработки данных.
УДК 681.3.06
ББК 32.973.2
ISBN 5-85438-048-Х © Смирнов С. Н., Задворьев И. С., 2002
© Оформление. Королев Н. А., Шачек Е. С., 2002
Азбука Oracle
К настоящему времени Oracle превратилась в настолько
мощную и развитую систему, что некоторые пользователи
подчас обнаруживают непонимание факторов, влияющих на
базовую производительность ее приложений. Эта книга, пре-
жде всего, направлена на то, чтобы показать, почему некото-
рые показатели оказывают определяющее влияние на общую
производительность, а другие — практически мало что меня-
ют. При этом авторы исходили из важного концептуального
принципа — среду прикладной системы нужно рассматривать
в едином комплексе, а не в виде набора отдельных модулей.
Ни для кого не секрет, что типичная среда разработки —
быстрая локальная сеть, малое число пользователей на высо-
копроизводительных рабочих станциях, до 100 строк в тесто-
вой таблице; обычная среда эксплуатации — медленная гло-
бальная сеть, большое количество пользователей на слабых
компьютерах, миллионы записей в таблицах. Поэтому в про-
цессе разработки какого-либо приложения общая производи-
тельность системы не исследуется, и проблема встает в пол-
ный рост только на этапе тестирования или, что еще хуже,
после ввода системы в эксплуатацию.
Вот тогда возникает необходимость либо кардинального
перепроектирования, либо существенного наращивания мощи
аппаратных ресурсов. Очевидно, то и другое связано с допол-
нительными затратами и, как правило, немалыми. Таким об-
разом, производительность системы не менее важна, чем про-
ектируемые функциональные возможности приложения.
Попытка так называемой "настройки" для решения про-
блемы не что иное, как желание превратить обычный "куку-
рузник" в сверхзвуковой "Конкорд". Ведь даже при использо-
вании самых лучших инструментов настройки достигаемый
эффект очень мал по сравнению с выгодой, получаемой от
работ по повышению производительности в период разработ-
ки.
Книга дает возможность практически оценить влияние
модификаций различных параметров системы, а также пре-
'
Предисловие
имущества и недостатки различных программных и аппарат-
ных настроек. Она может быть хорошим помощником не
только в процессе достижения желаемой системной произво-
дительности, но и в доступной форме объяснить, как система
функционирует в действительности, как определяются потен-
циально 'узкие места при расширении системы, когда уэели-
чивается количество пользователей, объемы обрабатываемых
данных или происходят изменения в организации бизнес-
процессов.
Учитывая, что среда разработки в Oracle обогатилась
многими новыми средствами, авторы дают возможность ре-
шения одной и той же задачи различными способами, помо-
гая читателю найти более эффективные инструменты, соот-
ветствующие назначению приложений.
Известно, что работа приложений Oracle во многом зави-
сит от функционирования компьютерной сети, и в то же вре-
мя, как-тправило, между специалистами по сети и разработчи-
ками приложений трудно наладить конструктивный диалог. В
этом смысле книга сближает названных участников процесса,
тем самым облегчая достижение целей, поставленных заказ-
чиком перед разработчиком.
Из теории очередей известно, что в многопользователь-
ских системах время реакции на запрос зависит от степени
использования ресурса (процессора, диска и т. д.) процессом,
обслуживающим запрос, и создаваемой при этом очередью.
Авторы дают конструктивные рекомендации по повышению
производительности системы на основе совершенствования
операций, выполняемых в разделяемом пуле.
В книге обращено особое внимание на операции оптими-
зации во время тестирования на реальном объеме данных,
когда даже небольшая настройка SQL-предложений может
значительно улучшить производительность системы.
Говоря о содержании книги, прежде всего, следует отме-
тить ее логичную структуру.
Начальные разделы книги формируют общее представле-
ние об архитектуре сервера Oracle, используемых инструмен-
4
Предисловие
тальных средствах и описанию языка SQL, который является
стандартом de facto в системах управления базами данных.
Далее раскрывается структура и базовые языковые конструк-
ции процедурного расширения языка SQL — PL/SQL. Этот
специфический для Oracle язык представляет собой мощный
инструмент для написания пользовательских программ и
триггеров.
В последующих разделах обсуждаются средства Oracle
обеспечивающие безопасность и целостность баз данных.
Рассмотрены как вопросы, связанные с языковыми средства-
ми разграничения доступа, так и средства повышения защи-
щенности системы, построенные на использовании представ-
лений и триггеров. Описание средств обеспечения целостно-
сти данных включает описание средств поддержки достовер-
ности данных средствами языка SQL, а также технологий за-
грузки данных из внешних источников, логической разгрузки
и восстановления данных.
Повсеместное распространение технологий обработки
данных, характерных для Интернет, делает весьма уместным
обсуждение средств построения приложений на языке Java.
Рассмотрена технология JDBC доступа к данным и интерфейс
процедур и функций, специфичных для сервера Oracle.
Финальная часть книги ориентирована на более подго-
товленного пользователя. В ней рассмотрены методы повы-
шения производительности Oracle. Сформулированы и про-
иллюстрированы правила оптимального написания SQL-
запросов, способы работы с оптимизатором Oracle, использо-
вание различных индексов. Доступно и внятно изложен под-
ход к построению объектно-ориентированных расширений
Oracle, появившихся в восьмой версии системы. Описаны
объектные типы и методы, наборы данных и объектные пред-
ставления.
Большим достоинством книги является наличие большо-
го числа примеров. Представленные 260 листингов иллюст-
рируют практически весь материал книги.
Предисловие
Предваряя непосредственное знакомство уважаемого чи-
тателя с содержанием достаточно серьезной работы авторов,
посвященной Oracle, хотелось бы сказать следующее.
Oracle продолжает доминировать на мировом рынке
СУБД, еще раз доказав свою лидирующую роль после пред-
ставления на рынке новой версии — Oracle 9i, включающей
два ключевых серверных продукта компании: Oracle 9i
Application Server и Oracle 9i Database. В новой версии, по
сравнению с предыдущей, сделано около четырехсот измене-
ний.
Сведение в новой версии семи с лишним десятков в но-
менклатуре серверных продуктов Oracle к двум базовым пре-
следует цель дать пользователям целостную среду разработки
Интернет-приложений. Главнейшее новшество в Oracle 9i —
это применение патентованной технологии кэширования,
дающей возможность существенного увеличения пропускной
способности при работе с Web-сайтами.
Другое новшество связано с техникой более эффективной
поддержки процедур date mining и data warehousing, интел-
лектуализирующих автоматизированные системы, расши-
ряющих возможности для аналитики и уводя СУБД все даль-
ше от простых процедур "учета-отчета".
Oracle 9i разрабатывалась с учетом активного использо-
вания средств, допускающих "аренду приложений" (ASP),
позволяющих платить за реально используемые возможности
СУБД по мере роста задач, стоящих перед организацией, а не
"про запас".
В версии Oracle 9i сделан шаг по сознательному отходу
от стандарта ANSI в угоду производительности СУБД; в
OLAP-машину Oracle встроен прямой интерфейс с Java, что
повышает реактивность SQL-запросов, генерируемых внеш-
ними Интернет-приложениями. Расширены возможности
объектных типов и реализовано долгожданное наследование
объектов. Упрощена процедура конфигурирования системы.
Получила дальнейшее развитие система виртуальных част-
ных БД (VPD), появившаяся в версии 8. Основная ее цель —
6
Предисловие
контролировать доступ к базам данных Oracle со стороны
Web-серверов. Говоря о возможностях Oracle, открывающих-
ся с появлением новой версии системы, хотелось бы подчерк-
нуть следующее.
СУБД Oracle относится к числу информационных техно-
логий с большим временем жизни. И здесь важно отметить,
что многие из новинок в Oracle 9i представляют собой даль-
нейшее развитие того, что уже имелось в версиях OracleS и 8i.
Думается, авторы в свойственной им доступной, наглядной и
вместе с тем достаточно строгой форме еще расскажут о раз-
витии Oracle в своей новой книге.
Но, учитывая, что новшества в системе Oracle зреют го-
дами, и не всегда они удаются, пользователям стоит осмотри-
тельнее относиться к увлечению ими. Тем более, что у Oracle
версии 8 к настоящему времени имеется солидный запас
прочности, и было бы разумным использовать этот запас по
максимуму. Такую возможность дает настоящая книга, по-
священная миру изящных решений и неисчерпаемых
возможностей Oracle.
В.А. Минаев,
доктор технических наук, профессор, академик РАЕН
Предисловие
ко второму изданию
Повсеместное распространение персональных компьюте-
ров и ориентированных на персональные компьютеры
средств обработки данных привело к тому, что для широкого
круга пользователей проблематика систем обработки данных
промышленного масштаба оказалась недоступной. Следстви-
ем ситуации явилось широкое распространение неверного
мнения, что система обработки данных, хорошо зарекомендо-
вавшая себя для персонального применения или применения
в небольшой группе, будет хорошо работать и в масштабе
отдела или предприятия в целом. Другое распространенное
заблуждение состоит в том, что при существенном увеличе-
нии объемов обрабатываемых данных можно обеспечить
приемлемые характеристики большой системы прямым на-
ращиванием мощности компьютеров.
Всякая абстрактная идея лучше всего воспринимается то-
гда, когда она иллюстрируется конкретным примером. Выбор
конкретной СУБД для иллюстрации изложения во многом
определяется вкусом авторов. Действительно, сервер OracleS
является наиболее интересным и функционально богатым
продуктом на современном рынке. Это мнение, видимо, раз-
деляют и коллективы, обеспечившие разработку и поддержку
большого числа крупномасштабных банковских систем и ин-
формационных систем больших предприятий. В то же время в
любой СУБД, поддерживающей распределенную обработку
данных, читатель легко найдет практически совпадающий
спектр проектных решений.
Цель данной-книги состоит в достаточно общем описании
концепции построения и возможностей СУБД Oracle. При
этом сервер Oracle рассматривается как ядро распределенной
многопользовательской системы обработки данных.
Второе издание книги существенно переработано. Замет-
но увеличился объем представленного материала. Тем не ме-
8
Предисловие
нее хотелось сохранить характерную для первого издания
ориентацию, в том числе и ценовую, на широкий круг читате-
лей, прежде всего, студентов. Поэтому при отборе материала
авторы решали непростую задачу выбора из богатейшего ар-
сенала средств Oracle наиболее важные для формирования
общего представления множества разумной мощности. На-
сколько решение этой задачи удалось — судить читателю.
Первый раздел книги должен дать общее представление о
компонентах распределенной вычислительной системы, ис-
пользуемых инструментальных средствах и архитектуре сер-
вера Oracle.
Второй раздел посвящен систематическому изложению
языка SQL. Учитывая место, занимаемое SQL в современных
информационных технологиях, его знание необходимо любо-
му специалисту, работающему в этой области.
В третьем разделе излагаются основы процедурного рас-
ширения языка SQL — PL/SQL. Это средство Oracle предна-
значено для реализации серверной бизнес-логики в виде со-
вокупности хранимых программ. Наличие встроенного языка
с богатыми возможностями для программирования процедур
и триггеров является важным преимуществом Oracle. Для
многих систем обработки данных оказывается достаточно
важным, чтобы и данные, и управляющие их обработкой
процедуры хранились и управлялись в логическом
пространстве СУБД. В отличие от интегрированных с СУБД
процедур, написанных на каком-либо из языков
программирования, которые выполняются в среде
операционной системы и хранятся в файлах, язык PL/SQL
позволяет создать прикладную систему, полностью
размещенную в базе данных и управляемую сервером Oracle.
В четвертом разделе книги обсуждаются средства разгра-
ничения доступа Oracle. Лучше предотвратить нарушение,
чем ликвидировать последствия нарушения информационной
безопасности системы. Oracle предоставляет возможности и
для предотвращения, и для выявления несанкционированного
использования ресурсов. Описание средств обеспечения
9
Предисловие
безопасности данных включает сведения о статических и ди-
намических средствах разграничения доступа и использова-
ние средств аудита системы для фиксации действий пользо-
вателей.
В пятом разделе книге обсуждаются средства построения
приложений на языке Java, взаимодействующих с базами
данных. Технологию Java в сколько-нибудь полном виде
нельзя описать в одном разделе. Ее подробное изложение со-
ставит целую серию книг. Тем не менее в связи с развитием
Интернет обсуждение распределенной обработки данных без
изложения вопросов доступа к базам данных из приложений
на Java будет ущербным. В качестве необходимого минимума
изложены вопросы организации описания доступа к базам
данных из приложений на языке Java.
В шестом разделе идет речь о средствах обеспечения це-
лостности данных в Oracle. Модель предметной области, хра-
нимая в базе данных Oracle, должна быть достоверной. Для
обеспечения целостности данных существуют различные
языковые и программные средства. Языковые средства кон-
троля целостности в основном решают задачу автоматической
индикации (или запрещения) ввода данных подозрительных
на ошибочные, либо противоречащие ранее введенным дан-
ным или правилам, описывающим предметную область. Про-
граммные средства обеспечивают решение важнейшей задачи
восстановления данных. К сожалению, ситуация, когда база
данных разрушается, не является редкой. Для организации
обычно критически важно создать и поддерживать в работо-
способном состоянии технологию восстановления баз дан-
ных. Описанию соответствующих средств Oracle посвящен
этот раздел.
В седьмом разделе изучается крайне актуальная в на-
стоящее время тема — методы повышения производительно-
сти. Современные базы данных должны быть способны рабо-
тать с огромными объемами информации. И эти объемы бу-
дут расти из года в год, при этом базы данных не должны
деградировать в плане производительности. Для обеспечения
10