Книги, научные публикации Pages:     | 1 | 2 | 3 | 4 | 5 | -- [ Страница 1 ] --

С. Н. Смирнов, И. С. Задворьев Учебное пособие 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. ББК 32.973. ISBN 5-85438-048-Х й Смирнов С. Н., Задворьев И. й Оформление. Королев Н. Шачек Е. Азбука Oracle К настоящему времени Oracle превратилась в настолько мощную и развитую систему, что некоторые пользователи подчас обнаруживают непонимание факторов, влияющих на базовую производительность ее приложений. Эта книга, пре жде всего, направлена на то, чтобы показать, почему некото рые показатели оказывают определяющее влияние на общую производительность, а другие Ч практически мало что меня ют. При этом авторы исходили из важного концептуального принципа Ч среду прикладной системы нужно рассматривать в едином комплексе, а не в виде набора отдельных модулей.

Ни для кого не секрет, что типичная среда разработки Ч быстрая локальная сеть, малое число пользователей на высо копроизводительных рабочих станциях, до 100 строк в тесто вой таблице;

обычная среда эксплуатации Ч медленная гло бальная сеть, большое количество пользователей на слабых компьютерах, миллионы записей в таблицах. Поэтому в про цессе разработки какого-либо приложения общая производи тельность системы не исследуется, и проблема встает в пол ный рост только на этапе тестирования или, что еще хуже, после ввода системы в Вот возникает либо кардинального перепроектирования, либо существенного наращивания мощи аппаратных ресурсов. Очевидно, то и другое связано с допол нительными затратами и, как правило, немалыми. Таким об разом, производительность системы не менее важна, чем про ектируемые функциональные возможности приложения.

Попытка так называемой "настройки" для решения про блемы не что иное, как желание превратить обычный "куку рузник" в сверхзвуковой "Конкорд". Ведь даже при использо вании самых лучших инструментов настройки достигаемый эффект очень мал по сравнению с выгодой, получаемой от работ по повышению производительности в разработ ки.

Книга дает возможность практически оценить влияние модификаций различных параметров системы, а также пре Предисловие имущества и недостатки различных программных и аппарат ных настроек. Она может быть хорошим не только в процессе достижения желаемой системной произво дительности, но и в доступной форме объяснить, как система функционирует в действительности, как определяются потен циально места при расширении системы, когда уэели количество пользователей, объемы обрабатываемых данных или происходят изменения в организации бизнес процессов.

Учитывая, среда разработки в Oracle обогатилась многими новыми средствами, авторы дают возможность ре шения одной и той же задачи различными способами, помо гая читателю найти более эффективные инструменты, соот ветствующие назначению приложений.

Известно, что работа приложений Oracle во многом зави сит от функционирования компьютерной сети, и в то же вре мя, между специалистами по сети и разработчи ками приложений трудно наладить конструктивный диалог. В этом смысле книга сближает названных участников процесса, тем самым облегчая целей, поставленных заказ чиком перед разработчиком.

Из теории очередей известно, что в многопользователь ских системах время реакции на запрос зависит от степени использования ресурса (процессора, диска и т. д.) процессом, обслуживающим запрос, и создаваемой при этом очередью.

Авторы дают конструктивные рекомендации по повышению производительности системы на основе совершенствования операций, выполняемых в разделяемом пуле.

В книге обращено особое внимание на операции оптими зации во время тестирования на реальном объеме данных, когда даже небольшая настройка SQL-предложений может значительно улучшить производительность системы.

Говоря о содержании книги, прежде всего, следует отме тить ее логичную структуру.

Начальные разделы книги формируют общее представле ние об архитектуре сервера Oracle, используемых средствах и описанию языка SQL, который является стандартом de facto в системах управления базами данных.

Далее раскрывается структура и базовые языковые конструк ции процедурного расширения языка SQL PL/SQL. Этот специфический для Oracle язык представляет собой мощный инструмент для написания пользовательских программ и триггеров.

В последующих разделах обсуждаются средства Oracle обеспечивающие безопасность и целостность баз данных.

Рассмотрены как вопросы, связанные с языковыми средства ми разграничения доступа, так и средства повышения защи щенности системы, построенные на использовании представ лений и триггеров. Описание средств обеспечения целостно сти данных включает описание средств поддержки достовер ности данных средствами языка SQL, а также технологий грузки данных из внешних источников, логической разгрузки и восстановления данных.

Повсеместное распространение технологий обработки данных, характерных для Интернет, делает весьма уместным обсуждение средств построения приложений на языке Java.

Рассмотрена технология JDBC доступа к данным и интерфейс процедур и функций, специфичных для сервера Oracle.

Финальная часть книги ориентирована на более подго товленного пользователя. В ней рассмотрены методы повы шения производительности Oracle. Сформулированы про иллюстрированы правила написания SQL запросов, способы работы с оптимизатором Oracle, использо вание различных индексов. Доступно и внятно изложен под ход к построению объектно-ориентированных расширений Oracle, появившихся в восьмой версии системы. Описаны объектные типы и методы, наборы данных и объектные пред ставления.

Большим достоинством книги является наличие большо го числа примеров. Представленные 260 листингов иллюст рируют практически весь материал книги.

Предисловие Предваряя непосредственное знакомство уважаемого чи тателя с содержанием достаточно серьезной работы авторов, посвященной Oracle, хотелось бы сказать следующее.

Oracle продолжает доминировать на мировом рынке СУБД, еще раз доказав свою лидирующую роль после пред ставления на рынке новой версии Ч Oracle включающей два серверных продукта компании: Oracle 9i Application Server и Oracle 9i Database. В новой версии, по сравнению с предыдущей, сделано около четырехсот измене ний.

Сведение в новой версии семи с лишним десятков в но менклатуре серверных продуктов Oracle к двум базовым пре следует цель дать пользователям целостную среду разработки Интернет-приложений. Главнейшее новшество в Oracle 9i Ч это применение патентованной технологии кэширования, дающей возможность существенного увеличения пропускной способности при работе с Web-сайтами.

Другое новшество связано с техникой более эффективной поддержки процедур mining и data warehousing, автоматизированные системы, расши ряющих возможности для аналитики и уводя СУБД все даль ше от простых процедур Oracle 9i разрабатывалась с учетом активного вания средств, допускающих "аренду приложений" (ASP), позволяющих платить за реально используемые возможности СУБД по мере роста задач, стоящих перед организацией, а не "про В версии Oracle 9i сделан шаг по сознательному отходу от стандарта ANSI в угоду производительности СУБД;

в Oracle встроен прямой интерфейс с Java, что повышает реактивность SQL-запросов, генерируемых внеш ними Интернет-приложениями. возможности объектных типов и реализовано долгожданное наследование объектов. Упрощена процедура конфигурирования системы.

Получила дальнейшее развитие система виртуальных част ных БД появившаяся в версии 8. Основная ее Ч Предисловие контролировать доступ к базам данных Oracle со стороны Web-серверов. Говоря о возможностях Oracle, открывающих ся с появлением новой версии системы, хотелось бы подчерк нуть следующее.

СУБД Oracle относится к числу информационных техно логий с большим временем жизни. И здесь важно отметить, что многие из в Oracle 9i представляют собой даль нейшее развитие того, что уже имелось в версиях и 8i.

Думается, авторы в свойственной им доступной, наглядной и вместе с тем достаточно строгой форме еще расскажут о раз витии в своей новой книге.

Но, учитывая, что новшества в системе Oracle зреют го дами, и не всегда они удаются, пользователям стоит осмотри тельнее относиться к увлечению ими. Тем более, что у Oracle версии 8 к настоящему времени имеется солидный запас прочности, и было бы разумным использовать этот запас по максимуму. Такую возможность дает настоящая книга, по священная миру изящных решений и возможностей Oracle.

В.А. Минаев, доктор технических наук, профессор, академик РАЕН Предисловие ко второму изданию Повсеместное распространение персональных компьюте ров и ориентированных на персональные компьютеры средств обработки данных привело к тому, что для широкого круга пользователей проблематика систем обработки данных промышленного масштаба оказалась недоступной. Следстви ем ситуации явилось широкое распространение неверного мнения, что система обработки данных, хорошо зарекомендо вавшая себя для персонального применения или применения в небольшой группе, будет хорошо работать и в масштабе отдела или предприятия в целом. Другое распространенное заблуждение состоит в том, что при существенном увеличе нии объемов обрабатываемых данных можно обеспечить приемлемые характеристики большой системы прямым на ращиванием мощности компьютеров.

Всякая абстрактная идея лучше всего воспринимается то гда, когда она иллюстрируется конкретным примером. Выбор конкретной СУБД для иллюстрации изложения во многом определяется вкусом авторов. Действительно, сервер является наиболее интересным и функционально богатым продуктом на современном рынке. Это мнение, видимо, раз деляют и коллективы, обеспечившие разработку и поддержку большого числа крупномасштабных банковских систем и ин формационных систем больших предприятий. В то же время в любой СУБД, поддерживающей распределенную обработку данных, читатель легко найдет практически совпадающий спектр проектных решений.

Цель состоит в достаточно общем описании концепции построения и возможностей СУБД Oracle. При этом сервер Oracle рассматривается как ядро распределенной многопользовательской системы обработки данных.

Второе издание книги существенно переработано. Замет но увеличился объем представленного материала. Тем не ме Предисловие нее хотелось сохранить характерную для первого издания ориентацию, в том числе и ценовую, на широкий круг читате лей, прежде всего, студентов. Поэтому при отборе материала авторы решали непростую задачу выбора из богатейшего ар сенала средств Oracle наиболее важные для формирования общего представления множества разумной мощности. На сколько решение этой задачи удалось Ч судить читателю.

Первый раздел книги должен дать общее о компонентах распределенной вычислительной системы, ис пользуемых инструментальных средствах и архитектуре сер вера Oracle.

Второй раздел посвящен систематическому изложению языка SQL. Учитывая место, занимаемое SQL в современных информационных технологиях, его знание необходимо любо му специалисту, работающему в этой области.

В третьем разделе излагаются процедурного рас ширения языка SQL Ч PL/SQL. Это средство предна значено для реализации бизнес-логики в виде со вокупности хранимых программ. Наличие встроенного языка с богатыми возможностями для программирования процедур и триггеров является важным преимуществом Oracle. Для многих систем обработки данных оказывается достаточно важным, чтобы и данные, и управляющие их обработкой процедуры хранились и управлялись в логическом пространстве СУБД. В отличие от интегрированных с СУБД процедур, на каком-либо из языков которые выполняются в среде операционной системы и хранятся в файлах, язык PL/SQL позволяет создать прикладную систему, полностью размещенную в базе данных и управляемую сервером Oracle.

В четвертом разделе книги обсуждаются средства разгра ничения доступа Oracle. Лучше предотвратить нарушение, чем ликвидировать последствия нарушения информационной безопасности системы. Oracle предоставляет возможности и для предотвращения, и для выявления несанкционированного использования ресурсов. Описание средств обеспечения Предисловие безопасности данных включает сведения о статических и ди намических средствах разграничения и использова ние средств аудита системы для фиксации действий пользо вателей.

В пятом разделе книге обсуждаются средства построения приложений на языке Java, взаимодействующих с базами данных. Технологию Java в сколько-нибудь полном виде нельзя описать в одном разделе. Ее подробное изложение со ставит целую серию книг. Тем не менее в связи с развитием Интернет обсуждение распределенной обработки данных без изложения вопросов доступа к базам данных из приложений на Java будет ущербным. В качестве необходимого минимума изложены вопросы организации описания доступа к базам данных из приложений на языке Java.

В шестом разделе идет речь о средствах обеспечения це лостности данных в Oracle. Модель предметной области, хра нимая в базе данных Oracle, должна быть достоверной. Для обеспечения целостности данных существуют различные языковые и программные средства. Языковые средства кон троля целостности в основном решают задачу автоматической индикации (или запрещения) ввода данных подозрительных на ошибочные, либо противоречащие ранее введенным дан ным или правилам, описывающим предметную область. Про граммные средства обеспечивают решение важнейшей задачи восстановления данных. К сожалению, ситуация, когда база данных разрушается, не является редкой. Для организации обычно критически важно создать и поддерживать в работо способном состоянии технологию восстановления баз дан ных. Описанию соответствующих средств Oracle посвящен этот В седьмом разделе крайне актуальная в на время тема Ч методы повышения производительно сти. Современные базы данных должны быть способны рабо тать огромными объемами информации. И эти объемы бу дут расти из года в при этом базы данных не должны деградировать в плане производительности. Для обеспечения Предисловие эффективной работы с большими и сверхбольшими базами данных Oracle предназначены специальные методы и специ альные программные средства, описанные в седьмом разделе.

Восьмой заключительный раздел посвящен расширениям в Использование методов объектно ориентированного программирования для создания надежных систем широко используется при создании различных систем обработки данных. Корпорация Oracle несколько расширила границы традиционной реляционной модели данных, предос тавив проектировщикам баз данных новые инструменты: объ ектные типы, объектные представления и наборы данных.

Изложение проведено на позволяющем читателю со ставить представление об этой развивающейся ветви техноло гий Oracle.

Экономические потрясения индустрии информационных технологий последних лет стали тяжелым испытанием для всех фирм, делающих свой бизнес в этой области. Для многих испытание оказалось последним. Несмотря на то, что Oracle занимает достаточно узкую нишу в индустрии, что обычно делает фирму достаточно уязвимой для экономических кри зисов, корпорация Oracle преодолевает период проверки на выживаемость с минимальными потерями. Не в последнюю очередь связано с высоким качеством флагманского про дукта корпорации Ч сервера баз данных Oracle. Видимо, цы-основатели и в первую очередь Ларри Элли прочный фундамент и изящные и перспектив ные проектные решения в архитектуру системы управления базами данных. В течение более чем тридцати лет система развивалась и совершенствовалась. Сейчас ее описание зани мает несколько десятков томов документации.

Авторы выражают надежду, что эта книга станет нитью Ариадны, которая поможет найти правильный путь к пони манию возможностей СУБД Oracle для построения систем обработки данных.

В добрый путь, дорогой читатель!

Авторы выражают признательность за помощь в написа нии книги Сергею Саенко, Александру Знобищеву, Сергею "Джихаду" и Ольге Соколовой, а также благодарят за оказанную техническую поддержку Валерия Чашкина и Анатолия Моргунова.

Раздел АРХИТЕКТУРА СИСТЕМ ОБРАБОТКИ обработки данных:

эволюция идей и систем Эффективное управление сложными организационными системами требует использования современных средств ав томатизации. Успешное решение задач возможно только то гда, когда для каждого контингента пользователей автомати зированных систем обработки информации создана отвечаю щая их потребностям среда обработки данных. Основная цель всякой системы обработки информации Ч полное и своевре менное удовлетворение информационных потребностей поль зователей. Пользователь формулирует свои потребности на каком-либо доступном ему языке. Существующие техниче ские средства в состоянии воспринять только язык детальных инструкций, поэтому необходима некоторая компонента сис темы обработки информации, которая обеспечит взаимодей ствие с пользователем на приемлемом языковом уровне. По мимо этого необходимы средства, обеспечивающие для раз работчика системы приемлемый языковый уровень описания технологических процессов обработки данных.

' Для более глубокого понимания состава и функций про граммного обеспечения систем обработки информации целе сообразно выделить несколько этапов их эволюции.

Первый этап Ч период становления автоматизированных систем обработки информации Ч характеризуется примене нием ЭВМ для проведения расчетов по индивидуальным про граммам, создаваемым, как правило, кодах ЭВМ или на языке ассемблера. На этом этапе применение ЭВМ для авто матизации информационного обслуживания обычно не оп равдывало себя: трудозатраты на подготовку программ и пер вичный ввод информации превышали экономию от автомати зации. Важность этого этапа состояла в том, что пришло чет кое осознание необходимости разработки методов снижения трудозатрат на программирование процессов ввода, обработ ки и выдачи информации.

На втором этапе существенное снижение трудозатрат на создание программного обеспечения достигалось за счет соз дания операционных систем и языков программирования вы сокого уровня с соответствующими трансляторами. Идеей, лежащей в основе операционной системы, является ние совокупности наиболее часто выполняемых видов работ и оправдавших себя описания в форме типовых процедур. Последующая программная реализация соответст вующих процедур осуществляется коллективом высококва лифицированных специалистов.

Всякая операционная система компоненту, обеспечивающую ввод команд и параметров в приемлемой для человека форме, компоненту, координирующую распре деление ресурсов вычислительной системы, и программы, обеспечивающие выполнение стандартных для большинства приложений функций, таких, как диагностика аппаратуры, копирование данных с различных носителей, преобразование и восстановление данных и т. д. Операционная система также содержит средства описания определенной последовательно сти действий, связанных единым Архитектура данных В основе любого языка программирования высокого уровня лежит идея определения типовых единиц обработки, то есть операндов, и базовых конструкций обработки, то есть операторов. В роли типовых единиц обработки выступают типы данных, например целый, вещественный, символьный и т. п. В роли базовых конструкций обработки выступают опе раторы присваивания, ветвления и цикла," описания процедур или подпрограмм, присутствующие практически во всех язы ках уровня, операторные скобки, конструкция вы специальные операции над строками и т. п., характер ные для некоторых языков и определяемые спецификой при менения.

На этом этапе развития систем обработки данных процесс разработки постепенно утрачивал элементы ремесленничест ва и приобретал черты промышленного производства. Удель ная стоимость аппаратуры неуклонно снижалась, а относи тельная стоимость программного обеспечения росла.

Такая картина объясняется тем, что под каждую новую задачу создавалась новая программа. Практически не лось внимания вопросу совместимости программ по данным.

Совершенно ясно, что ввод исходных данных в задачах обра ботки информации является дорогостоящим делом. Наличие собственных данных для каждой задачи приводило к дубли рованию хранимой информации и, как следствие, к значи тельным затратам, связанным с изменением данных и их син хронизацией.

Каков же должен был быть выход из сложившейся ситуа ции? Он следовал из логики развития программного обеспе чения. По аналогии с операционными системами и языками программирования высокого уровня необходимо было соз дать языковые средства и соответствующее программное обеспечение для выполнения функций, характерных для сис тем обработки данных.

Эта задача и решалась на третьем этапе развития автома тизированных систем. Особенность этого этапа Ч появление средств, обеспечивающих техническую возможность опера тивного доступа большого количества пользователей к ком пактно хранимым данным: запоминающих устройств прямого доступа большой емкости, средств отображения и машинно ориентированных средств связи. Централизованное ние, оперативный поиск и корректировка информации пред вещали качественный скачок в информационном обеспечении управления. прогресс сдерживался низкими темпами создания соответствующего программного обеспечения.

этому создаваемые программные комплексы должны были обеспечить возможность удовлетворения информационных потребностей пользователей с возможно меньшим объемом работ, выполняемых программистами-профессионалами.

Для решения этой задачи было необходимо разработать и реализовать средства общения пользователя с автоматизиро ванной системой более высокого уровня, чем язык програм мирования, то есть приблизить язык системы к языку, на ко тором свои запросы пользователь.

Централизованное накопление и обработка информации возможны только при обеспечении согласованного представ ления пользователей о хранимых в системе данных. Но пред ставление различных групп пользователей о хранимых в сис теме данных отражает цели этих групп, которые могут сильно отличаться друг от друга. Следовательно, согласованность представления должна обеспечиваться некоторыми специ альными механизмами и соответствующими программными средствами. Причем представление данных, а значит, и при кладные программы, не должны изменяться ни при измене нии физической организации хранимых данных, ни при включении в новых пользователей.

Таким образом, в процессе эволюции программного обеспечения автоматизированных систем обработки инфор мации возникло четкое понимание возможности и целесооб разности разработки и реализации комплексов программ, ко торые позволяют описывать характерные для обработки дан ных операции на языке более высокого уровня. Такие ком обработки данных получили названия системы управления базами дан (СУБД).

Можно выделить две черты, характерные для ных автоматизированных систем: разнообразие задач, решае различными пользователями на общей базе данных, и постоянное улучшение аппаратных средств, предназначенных для хранения и обработки данных. Следовательно, необходи мым условием существования является реализация (в большей или меньшей степени) принципа логической и физи ческой независимости представления данных.

Логической независимостью данных называют возмож ность изменения логической структуры данных без измене ния существующих прикладных программ и технологии об работки данных. Наиболее типичной является ситуация уве личения или уменьшения числа обрабатываемых характери стик какого-либо информационного объекта.

Физической независимостью данных называют возмож ность изменения физической организации данных без пере стройки прикладных программ и логической структуры дан ных. Типичной ситуацией, когда необходимость этого требо вания очевидна, является организация доступа к данным с использованием вновь созданного индекса.

Стремительное совершенствование технологии произ водства персональных ЭВМ привело к тому, что использова ние для обработки данных больших ЭВМ часто становится нецелесообразным, если сравнивать их с настольными систе мами по критерию типа цена-производительность. Во многих случаях роль центральной ЭВМ может выполнять достаточно мощный сервер. Широкое распространение получили систе мы обработки данных на базе локальных вычислительных сетей (ЛВС), представляющих собой группы компьютеров, соединенных высокоскоростными линиями связи. Для таких систем характерной чертой является то, что процессы обра ботки информации частично выполняются в месте ее получе ния, но наиболее ресурсоемкие процессы обработки инфор мации происходят на сервере.

Эволюция реляционных СУБД фоне истории Oracle Около двадцати лет назад сотрудники неболь шой американской консалтинговой фирмы Ларри Эллисон, Роберт Майнер и Эдвард решили открыть собственное дело для создания коммерческой реляционной СУБД. За пять лет, прошедших с момента первых публикаций классиков Э.

Ф. и К. идеи реляционных систем прочно завоевали место в теоретических и экспериментальных ис следованиях в области автоматизированных систем обработ ки данных. Серия публикаций в научно-исследовательском журнале фирмы IBM, в которых описывались реляци онной системы управления базами данных "System и язык запросов привела к переводу проблемы практи ческую плоскость.

Основной целью созданной тремя программистами фир мы Relational Software Incorporated была реализация перено симой реляционной системы управления базами данных с поддержкой базового языка данных SQL (Structure Query Language Ч структурированный язык запросов). За два года поставленная задача была решена.

В г. заказчикам была представлена версия СУБД для мини-компьютеров фирмы Digital Equipment Corporation сразу для нескольких ОС: IAS, RSTS UNIX. Чуть позже система была перенесена на компьютеры VAX под управлением VAX VMS. Значительная часть кода была написана на ассемблере, и поэтому процесс переноса системы на новую платформу требовал значительных усилий.

Основным отличием СУБД очередной, третьей версии, было то, что она была полностью написана на языке Си. Та кое решение обеспечивало переносимость системы на многие новые платформы, в частности на различные клоны Архитектура систем обработки Второй важной особенностью новой (1983) версии была поддержка концепции транзакций. Системные средства га рантировали либо выполнение выделенной опера ции (транзакции) с базой данных, либо откат к состоянию на начало транзакции, если операция по каким-либо причинам завершилась неуспешно. Примерно в это время фирма полу чила новое имя Ч Oracle Corporation Ч и заняла лидирующее место на рынке производителей СУБД.

Четвертая версия Oracle характеризовалась расширением перечня поддерживаемых платформ и систем.

Oracle был перенесен как на большие ЭВМ фирмы IBM так и на персональные компьютеры. Именно в четвертой версии был сделан важный шаг в технологии под держки целостности баз данных. Для многопользовательских систем было предложено оригинальное решение Oracle под держки "непротиворечивости чтения".

В пятой версии была впервые реализована СУБД с архи тектурой "клиент-сервер". Поражает умение идеологов фир мы видеть перспективу: ведь индустрия персональных ком пьютеров и локальных вычислительных сетей находилась в тот период (1985) в младенческом состоянии. Именно тогда было впервые реализовано средство SQL*Net, обеспечиваю щее поддержку сначала однородных, а некоторое время спус тя и неоднородных операционных сред обработки данных.

Впервые были разрешены распределенные запросы, то есть запрос мог обращаться к данным, физически размещенным в разных сети. Причем несколько взаимодействующих серверов создавали впечатление единой логической базы дан ных.

Шестая версия Oracle была ориентирована на построение крупномасштабных систем обработки данных с надежной и эффективной обработкой транзакций. Серьезные изменения претерпели методы реализации ввода-вывода, подсистема управления буферизацией, подсистемы управления доступом, резервированием и восстановлением. Бы ла реализована поддержка симметричных мультипроцессор архитектур, на которых сервер Oracle показывал хоро шую масштабируемость: при увеличении числа процессоров пропорционально улучшались временные характеристики обработки данных.

Седьмая версия Oracle была выпущена в 1992 г.

Эта версия обладала рядом новых решений, в основном свя занных с дальнейшим улучшением масштабируемости, отка зоустойчивости и производительности..

В ней реализован логический сервер, состоящий из не скольких параллельных серверов с независимым одновре менным доступом процессов, расположенных на различных узлах сети, к одним и тем же элементам базы данных и управляющим файлам. Усовершенствованы и мето ды обеспечения безопасности и целостности данных. Введен новый объект базы данных Ч роль, предназначенный для структуризации и типизации решений в области разграниче ния доступа. Реализована поддержка профилей пользователя, ограничивающих использование системных ресурсов. Для настройки производительности системы включена команда ANALYZE, позволяющая собирать статистику о данных для ее использования оптимизатором запросов. Введен новый объект базы данных Ч триггер. Триггер представляет собой программу на процедурном расширении SQL Ч языке PL/SQL, автоматически запускаемую сервером при наступле нии некоторых событий. Наличие триггеров открывает прак неограниченные возможности по формированию проверок полномочий допустимости действий, связанных с данными.

Основные возможности Летом 1997 года корпорация Oracle выпустила на рынок систему управления базами данных нового поколения Ч Она позиционируется как система, совершившая прорыв в технологии обработки данных. Если Архитектура распределенных систем обработки данных ваться от заявлений, то сервер действительно явился значительным вперед и заметно укрепил позиции Oracle Corporation как ведущего производителя в области СУБД корпоративного уровня. Зна чительное продвижение технологии вперед, с одной стороны, можно объяснить появлением объектных реля ционной модели данных, то есть совершенно нового направ ления для Oracle. С другой стороны, в первую очередь Ч это устойчивая, масштабируемая система управле ния реляционными базами данных, способная эффективно хранить и обрабатывать огромное количество данных в усло виях многопользовательского доступа. Ядро сервера было серьезно переработано на основе опыта и эксплуатации приложений для предыдущих версий, при этом был получен значительный выигрыш в производительности и надежности.

Рассмотрим основные направления, по которым фирма Oracle совершенствовала свой основной продукт. Как и в бой новой версии программного обеспечения, в были доработаны существующие механизмы и реализованы новые возможности, отсутствующие в Oracle 7. Можно выделить три основных новых направления: поддержка больших и сверхбольших баз данных режимах оперативных транзак ций и хранилищ данных, объектные расширения и встроенная в ядро сервера Java-машина. Остановимся на них С помощью технологий Oracle возможно построить формационную систему, решающую сколь угодно сложные задачи по обработке данных. Для этого в распоряжении про ектировщиков и разработчиков имеются все необходимые инструментальные средства. Как было сказано выше, Oracle оказалась очень удачной системой управления базами дан ных. На ее основе были построены системы, автоматизирую щие самые различные области человеческой деятельности. В базах данных под управлением серверов Oracle было накоп лено огромное количество информации. Например, в таблицы баз данных телефонных компаний каждый день загружаются десятки миллионов записей о разговорах абонентов. Со вре менем эти таблицы могут занимать дисковое пространство объемом десятки терабайт. Разработчики и администраторы баз данных некоторое время поддерживали производитель ность систем на приемлемом уровне с помощью обширных возможностей Oracle 7 по настройке и оптимизации работы сервера. Однако требовалась его специальная доработка для поддержки больших и сверхбольших баз данных.

может управлять базой данных размером пе а не терабайта, как Oracle 7. Поэтому, наряду с оп тимизацией кода ядра сервера (например, вызов функций, на писанных на языке PL/SQL, из операторов SQL стал быстрее на 40%), в появились новые возможности для управ ления большими и сверхбольшими базами данных.

перечислим их.

Секционирование таблиц и индексов Ч и ин дексы могут быть разбиты на секции, с каждой из которых можно работать как одним объектом, например хранить различные секции на различных устройствах и управлять ими автономно. В этом случае для таблицы или индекса выбира ется один или несколько столбцов Ч так называемый ключ секционирования. Их значения определяют секцию, куда бу дет помещена запись. Например, для упоминавшихся выше таблиц с записями телефонных разговоров ключом секциони рования может быть столбец, в котором хранится дата начала разговора, а таблица может быть разбита на секции так, что бы в одну секцию попадали сведения о разговорах за один месяц. В этом случае запрос, с помощью которого извлекают ся сведения о разговорах за последний месяц, не будет обра щаться к данным из других секций, в которых хранятся раз говоры за другие месяцы и будет получен значительный вы игрыш производительности. Для работы с ми таблицами и индексами требуется установленная опция сервера Ч Partitioning option.

распределенных обработки данных Индексные таблицы Ч новый вид таблиц, позволяющий организовать хранение данных в индексах, не используя сегменты данных.

Для оптимального доступа к данным была улучшена ра бота оптимизатора запросов: введен новый тип запросов Ч типа "звезда", появились новые подсказки оптимизатору. Те перь поддерживаются новые виды индексов Ч масочные дво ичные индексы и индексы с ключом. Также внесен ряд изменений в существовавшие механизмы, предназначенных специально для поддержки больших баз данных. Подробно об этом рассказывается в разделах "SQL Ч язык обработки данных Oracle" и "Методы повышения Другим важным нововведением для стала под держка объектных расширений. Тенденция к объектной ори ентированности в настоящее время наблюдается у всех круп производителей систем базами данных. Не осталась в стороне и корпорация Oracle. поддержива ет абстрактные типы данных, то есть разработчик может кон новые типы данных из базовых. Поддерживается три абстрактных типа данных: OBJECT Ч для создания вых типов объектов со своей внутренней структурой;

Ч массив объектов определенного типа;

TABLE Ч таблица объектов определенного типа.

Для манипулирования хранимыми в СУБД объектами в реализованы специальные расширения языка SQL.

Существует возможность создания так называемых объект ных представлений над реляционными таблицами. Это позво ляет вести разработку новых объектно-ориентированных приложений в рамках существующих систем. Работе с объек тами посвящен раздел "Объектные расширения в Начиная с версии 8.1.5.0, ядро сервера Oracle включает в себя Java-машину. Таким образом, стало возможным разраба тывать серверную компоненту системы как на основном язы ке создания хранимых программ PL/SQL, так и на Java. Про граммы, написанные на этих языках, могут взаимодейство вать между собой. Использование языка Java предоставляет возможность подключения сотен предопределенных классов.

Библиотеки Java-классов содержат методы, которые разра ботчики могут расширять и включать в свои программы.

Примеры написания хранимых Java-программ и их использо вания манипулирования объектами базы данных приве дены в разделе "Создание приложений на языке Java". В на стоящее время наблюдается бум Java-приложений и можно ожидать более интенсивного использования Java-машины Oracle. Тем не менее написано огромное количество кода на PL/SQL и в ближайшее время будет продолжаться его широ кое применение для разработки серверной логики, хотя уже имеются средства для автоматического преобразования кода PL/SQL в программы Java.

Как было отмечено выше, наряду с реализацией новых возможностей, были значительно усовершенствованы суще ствующие механизмы сервера. Основные усовершенствова ния были предназначены для обеспечения удобства разработ ки новых приложений и повышения эффективности уже при меняемых. По мере изложения материала книги, усовершен ствованные механизмы описываются с той или иной степе нью детализации, а пока изложим их конспективно.

Динамический SQL в выполняется так же быстро, как и обычный статический. Сокращено время при вызове операторов SQL из PL/SQL и наоборот. Улучшены алгоритмы работы с таблицами PL/SQL. Уменьшены потребности сессий пользователей оперативной памяти на 30-60%. Добавлена отложенная проверка ограничений целостности, Ч она может выполняться не сразу после выполнения операторов ния данных, а откладываться до фиксации транзакции.

Введены новые типы данных для хранения неструктури рованной информации. Для этого в Oracle 7 используются типы данных LONG и LONG RAW, которые обладают рядом недостатков. В появились новые типы данных:

(Character Large Object), BLOB (Binary Large Object) и свободные от этих недостатков. Эти типы данных не могут 24.

распределенных систем обработки данных быть использованы в запросах, но их можно хранить как в файловом пространстве, так и непосредственно в базе дан ных. При действиях с данными этого типа поддерживаются все возможности модели Oracle (за исключе нием тех объектов, которые хранятся ссылки на объекты файловой системы). Таким образом, сделан шаг вперед в на правлении технологии (Internet File System), основная идея которой Ч все объекты, с которыми работает пользова тель, хранятся в базе данных. При этом их хранение органи зовано прозрачно и операции копирования, удаления, измене ния и т. п. объектов выполняются так же, как будто бы они хранились в файловой системе. Работа с большими объектами рассмотрена в разделе "PL/SQL Ч процедурное расширение языка SQL".

Существенно улучшены возможности данных. Ранее программный механизм реплицирования был реализован как совокупность триггеров базы данных. Теперь он перенесен в ядро сервера, а его работа стала быстрее и на дежнее.

Существенно расширился круг средств администрирова ния пользователей: Появилась возможность ведения политики безопасности: принудительное блокирование учетной записи пользователя, установка срока действия пароля, блокирова ние учетной записи пользователя после определенного числа неудачных попыток входа в систему, программная реализа ция собственных алгоритмов проверки сложности пароля и т.

Д.

Как видим, внесено очень много усовершенствований в те механизмы, которые унаследовал от предыдущих версий. Их можно использовать как при разработке новых приложений, так и при модификации существующих. Тем не менее не стоит ожидать, что с переходом на новую версию сервера базы данных эффективность существующих прило жений значительно увеличится сама по себе. Такой переход требует еще раз пересмотреть технологию функционирования всей системы. Некоторые операции действительно станут полняться быстрее, однако может быть и обратный эффект, например некоторые SQL-запросы могут для новой версии сервера выполняться дольше. Поэтому при переходе, напри мер, даже с версии 8.1.6.0 на требуется осторожность и несколько этапов переноса серверной компоненты и доработ ки клиентской части и промежуточного уровня.

Сервер поставляется в нескольких конфигураци ях. Они отличаются от друга как наличием или отсутст вием дополнительных возможностей, так и серьезными архи тектурными решениями. Например, версия, предназначенная для работы с мобильными устройствами, не поддерживает язык PL/SQL, а только Java. Workgroup Edition в от личие от основного варианта Enterprise Edition не поддерживает параллельную обработку данных, объектно реляционные расширения и секционирование таблиц. Более подробные сведения о возможностях сервера Oracle можно узнать из прилагаемой к нему документации Server Release Notes).

История Oracle показывает, что основные этапы развития СУБД с улучшением ее управляемости в условиях многопользовательского доступа к данным, масштабируемо сти, системы распараллеливания ций на различных уровнях и повышением уровня защищен ности и целостности системы. Языковые средства системы эволюционируют достаточно медленно. Принципиальным моментом является распределенность СУБД, то есть наличие в СУБД нескольких компонент, выполняющихся на различ ных компьютерах, объединенных в сеть.

Учитывая возможности масштабируемости, заложенные в Oracle, рано или поздно система, построенная для решения серьезной задачи, станет распределенной, построенной на архитектуре клиент-сервер или архитектуре.

Перейдем к краткому описанию этих архитектур обработки данных.

распределенных систем обработки данных Архитектуры обработки данных При описании архитектур обработки данных использу ются разнообразные термины, поэтому дадим основных понятий, используемых в книге. Следующие опре деления относятся к архитектуре "клиент-сервер".

Сервер определим как логический процесс, который обес печивает обслуживание запросов других процессов. Сервер не посылает результатов запрашивающему процессу до тех пор, пока не придет запрос на обслуживание. После иници ирования запроса управление синхронизацией обслуживания и связей становится функцией самого сервера.

Подчеркнем, что в данном изложении термин "сервер" используется в смысле логического процесса, а узла вы числительной сети, выполняющего определенные функции. В дальнейшем рассматриваются серверы баз данных. Сервер баз данных логический процесс, отвечающий за обра ботку запросов к базам данных.

Клиента определим как процесс, посылающий серверу запрос на обслуживание. В данном контексте мы абстраги руемся от технических средств, на которых реализован про цесс клиента. Главной особенностью, отличающей клиента от сервера, является то, что клиент может начать вие с сервером, а сервер, как правило, никогда не начинает подобных действий.

Функцией клиента являются установле ния связи, запрос конкретного вида обслуживания, получение от сервера результатов и подтверждение окончания об служивания. Хотя клиент может запросить синхронное или асинхронное уведомление об окончании обслуживания, сам не управляет синхронизацией обслуживания и связи.

Основным назначением архитектуры "клиент-сервер" яв ляется обеспечение прикладным программам клиента доступа к данным, которыми управляет сервер. Архитектура сервер" позволяет клиентам совместно эффек тивно использовать один сервер.

При использовании этой архитектуры высокая произво дительность распределенной автоматизированной системы обеспечивается за счет эффективного управления передачей запросов к серверу баз данных и возвратом полученных в ре зультате этих запросов данных клиенту. Клиент взаимодейст вует сервером баз данных с помощью языка, ориентирован ного на работу с базами данных (обычно, это язык SQL). По сле обработки запроса клиента сервер баз данных посылает клиенту обратно только данные, которые удовлетворяют за просу.

В этом состоит ключевое отличие рассматриваемого ме тода от метода обработки запросов, характерного для персо нальных СУБД, установленных в сети. При получении за проса файл, в котором находятся данные, полностью пересы лается по сети в компьютер где и происходит данных по критерию пользователя. В большинстве запросов отбирается менее данных, а трафик в сети оказывается неоправданно высоким. Сеть перегружается пересылкой не нужных данных. Если пользователей несколько, то сеть бы стро приходит в состояние фатальной перегрузки.

Рассмотрим преимущества и недостатки архитектуры "клиент-сервер". Путем распределения вычислений достига ется гибкость и масштабируемость системы: во-первых, каж дый компьютер в системе можно выбирать так, чтобы он лучше всего подходил к требованиям каждого компонента.

Например, для сервера можно выбрать мощный многопро цессорный компьютер с большим объемом памяти под управ лением защищенной многопользовательской операционной системы UNIX-класса. Такой сервер будет выдерживать тре буемый уровень нагрузки. Для рабочих станций, на которых будет развернуто клиентское программное обеспечение, тре бования совсем другие. Как правило, это так называемый офисный компьютер. Во-вторых, такая система обладает хо рошей адаптируемостью и гибкостью Ч в силу модульности распределенных систем обработки данных легко можно заменить переставший удовлетворять требова ниям компонент или даже целиком какую-либо составляю щую. Например, весь парк устаревших рабочих станций. В-третьих, легко масштабировать систему, добавив в нее новые рабочие станции или нарастив мощности на сервере.

Но наряду с такими ощутимыми преимуществами имеют ся и недостатки. Частые обращения клиента к серверу сни жают производительность работы сети, приходится решать вопросы безопасной многопользовательской работы с дан ными, так как приложения и данные распределены между различными клиентами. Распределенный характер построе ния системы обусловливает сложность ее настройки и сопро вождения. Чем сложнее структура системы, построенной по технологии "клиент-сервер", тем выше вероятность отказа из ее компонентов. В очень сложную проблему может превратиться процесс смены клиентского программного обеспечения, особенно если в системе работает большое чис ло рабочих станций.

Изложенные выше недостатки архитектуры "клиент сервер" стимулировали поиск новых архитектур обработки данных, одним из результатов которого стала многозвенная архитектура, свободная от некоторых недостатков своей предшественницы. Ч магистральное на правление развития информационных технологий и много звенная архитектура специально предназначена для работы в этой среде.

Была предложена идея распределения нагрузки между тремя и более различными компьютерами. Клиент по прежнему выполняет функции предоставления интерфейса пользователя и, возможно, некоторые не очень сложные и ресурсоемкие операции обработки данных, другие этапы функционирования системы теперь распределены между не сколькими компьютерами Ч серверами баз данных и серве рами Серверы баз данных управляют данными, а серверы приложений выполняют все вычисления, связанные с реализацией приложениями.

Аналогично технологии "клиент-сервер" дадим ряд опре делений, существенных для описания многозвенной архитек туры. В ее состав универсальный клиент Ч определим его как процесс, посылающий запрос на обслуживание и спо собный осуществить отображение его результатов на основе некоторого универсального протокола выдачи информации.

Основное отличие универсальных клиентов от обычных Ч способность предоставления пользователю интерфейса для решения любых задач, низкая стоимость внедрения, админи стрирования и поддержки. Как правило, это браузер, про просмотра сценариев на каком-либо языке разметки.

Браузер может поддерживать с помощью run-time расшире ний и другие форматы файлов. Приложения, используемые в качестве таких расширений, хранят все свои файлы на клиен те. Когда браузер встречает вызов такого расширения, он за гружает соответствующие исполнимые файлы и запускает приложение.

Сервер баз данных это логический процесс, отвечаю щий за обработку запросов к базе данных. Сервер приложе ний Ч совокупность логических процессов, реализующих бизнес-логику на основании данных, предоставляемых серве ром баз данных и передающих результаты вычислений уни версальному клиенту через некоторую среду передачи дан ных. Администрирование и обслуживание приложений осу ществляются полностью на сервере приложений, а не на сто роне клиента, поэтому обновлять программные модули уни версального клиента (браузера) приходится довольно редко.

Основными экономическими преимуществами данной архи тектуры являются:

Ч относительно низкие затраты на внедрение и эксплуа тацию;

Ч высокая способность к интеграции существующих информационных ресурсов;

Архитектура распределенных систем данных Ч прикладные программные средства доступны с любо го клиентского рабочего места;

Ч минимальный состав программно-технических средств на клиентском рабочем месте.

Опираясь на концепцию многозвенной архитектуры, Oracle предлагает три базовых элемента информационной Ч сервер баз данных Ч универсальный сервер приложений Oracle Application Server 4.0;

Ч набор драйверов в стандарте JDBC, специально опти мизированных для доступа из Java-программ к Oracle, а также SQLJ Ч поддержка операторов SQL, встроенных в програм мы Java.

Этот набор не является жестко заданным. При проекти ровании конкретной системы следует учитывать все особен ности ее функционирования и, например, использование web сервера Apache и языка Perl может оказаться эффективнее применения web-расширений языка PL/SQL для Oracle Application Server. Кроме того, в интерпретации Oracle много звенная архитектура имеет еще одну особенность. Она изна чально задумана как расширяемая. Основной единицей рас ширения является картридж Ч клиентский, прикладной или картридж данных, предусмотрены интерфейсы для их взаи модействия с другими компонентами информационной сис темы. Картриджи могут разрабатываться как производителя ми программного обеспечения, так и пользователями с уче том их возможного повторного использования. Существует три типа Картриджи базы данных Ч функционируют внутри сер вера базы данных. Oracle предоставляет свои картриджи для решения конкретных задач, например Text для об работки неструктурированных текстов. Также разработчики могут реализовать на каком-либо языке программирования свои картриджи. Например, для устранения недостатков ра Во-вторых, появляется возможность совместной обработ ки данных в сети. Это может быть как простейшая ная почта, так и сложная асинхронная обработка разделяемых баз данных. Совместная обработка данных позволяет под держивать общие базы данных в актуальном состоянии (ис пользуется только одна копия) и иметь индивидуальные или локальные базы данных, которые каждый пользователь обра батывает по своему усмотрению.

В-третьих, появляется возможность повышения живуче сти системы обработки данных за счет какого-либо вида дуб лирования функций узлов.

Рассмотрим основные понятия, характеризующие аппа ратное обеспечение локальной вычислительной сети.

Сетевой адаптер Ч это специальное устройство, подклю чаемое к приемнику среды передачи данных. Основное на значение сетевого адаптера Ч взаимодействие со средой пе редачи данных, включая поддержку технологии передачи данных в среде.

Среда передачи данных для локальной вычислительной сети Ч как правило, это кабель, по которому распространя ются сигналы, переносящие данные в сети. Наибольшее рас пространение получили три вида кабеля: витая пара, коакси альный кабель и оптоволоконный кабель. В настоящее время также все шире используются среды беспроводной передачи данных.

Для обеспечения работы аппаратных компонент ЛВС на приемлемом для пользователя языковом уровне необходима операционная система. В настоящее время наибольшее рас пространение получили такие операционные системы, как UNIX (включая многочисленные клоны: Solaris, HP-UX, SCO и т. д.), Windows и NetWare. В большинстве этих систем пользователю предоставляются многочисленные встроенные средства выполнения операций в сети. Например, пользова тель может запустить на своем компьютере программу, ис полняемый код которой расположен файловом сервере, поставить документ в очередь для распечатки на пе Архитектура распределенных систем обработки данных чати или модифицировать данные, расположенные на сервере баз данных.

Даже беглый анализ необходимых для создания сетевой инфраструктуры программно-аппаратных средств приводит к мысли, что интеграция всех этих средств невозможна без стандартизации. Идейной основой стандартизации в области распределенных систем обработки данных является эталон ная модель взаимодействия открытых систем.

Эталонная модель открытых систем Необходимость осмысления и управления сложными и многообразными функциями, различными элементами вычислительной сети, привела к созданию кон цепции многоуровневого взаимодействия. Разделенные на иерархически упорядоченные группы, несколько функцио нальных слоев, называемых выполняют опреде ленную логическую функцию. При этом для элементов более высокого уровня предоставляется определенный перечень услуг.

С целью установления единых правил взаимодействия вычислительных систем различных фирм-производителей, Международной организацией стандартов (ISO Ч Inter national Standards Organization) в 1978 г. выпущен набор цификаций, описывающих структуру неоднородной сети. В 1984 г. на базе неоднородной сети была при нята и рекомендована к использованию эталонная модель взаимодействия открытых систем (QSI Ч Open System Interconnection Reference Model). Данная модель является ме ждународным описывающим взаимодействие и аппаратных компонент при организации ра боты компьютеров в сети.

Эталонная модель взаимодействия открытых систем (ЭМВОС) определяет стандарты соединения и взаимодейст 2* элементов вычислительной сети в процессе ее функцио нирования. Термин "открытая система" означает, что про граммное и аппаратное обеспечение элементов сети удовле творяет набору стандартов, точное соблюдение которых га рантирует возможность взаимодействия открытых систем между собой.

Базовыми понятиями модели являются системы, при кладные процессы и сеансы. Под сеансом понимается про цесс обмена данными между прикладными процессами.

Иерархически упорядоченные прикладные процессы называ ются уровнями. Совокупность процедур взаимодействия объ ектов одного уровня называется протоколом. Совокупность правил взаимодействия объектов смежных уровней называет ся интерфейсом.

Таким образом, концепция ЭМВОС основывается на пе редаче информации между смежными уровнями, то есть функция обмена данными является определяющей. Междуна родная организация стандартов рекомендует к использованию семиуровневую модель взаимодействия прикладных процес сов. Уровни, упорядоченные снизу вверх, имеют названия физический, канальный (в некоторой литературе использует ся термин "уровень управления линией передачи данных"), сетевой, транспортный, сеансовый, представления и приклад ной.

Помимо деления на уровни в модели вводится единая терминология для объектов. Для каждого уровня модель за дает цель его работы, виды услуг, обеспечиваемых для про цесса более высокого уровня, и определение функций каждо го уровня. Задача каждого уровня Ч предоставление услуг более высокому уровню. При этом уровень одного узла рабо тает так, как если бы он был связан с соответствующим уров нем другого узла напрямую.

Прикладной Прикладной уровень обес печивает доступ прикладных процессов к среде взаимодейст вия открытых систем. Он выполняет функции "окна" между взаимодействующими прикладными процессами, которые Архитектура распределенных систем обработки данных используют среду открытых систем для совместного решения задач.

Функции прикладного уровня разделяются на две груп пы: общие и специальные. Первая дает средства взаимодейст вия, используемые рядом различных приложений (например, средства организации связи между прикладными процесса ми). Вторая группа обеспечивает определенные потребности конкретных приложений (например, обмен файлами, переда ча заданий).

Уровень Назначением уровня представления является представление данных, подлежащих передаче между прикладными объектами, а также представ ление структур данных, на которые прикладные объекты ссылаются в процессе обмена.

Уровень представления имеет дело с синтаксисом, то есть с представлением данных, а не с их семантикой Ч смыслом, известным только прикладным объектам. Представление дан ных в едином виде освобождает прикладные объекты от не обходимости заботиться о проблеме "общего" представления информации, то есть обеспечивает для них независимость от синтаксиса. Эта независимость от синтаксиса достигается тем, что прикладные объекты могут любой ло кальный синтаксис, а уровень представления преобразование между этими синтаксисами и общим синтак сисом, необходимым для взаимодействия прикладных объек тов. Это преобразование выполняется внутри открытых сис тем. Оно не видно (прозрачно) для других открытых систем и поэтому не оказывает на стандартизацию протоколов представления.

К функциям уровня представления относятся: запрос на установление сеанса;

передача данных;

согласование выбора синтаксиса;

преобразование синтаксиса, включая вание форматирование и специальные преобразова ния (например, сжатие или шифрование);

запрос на щение сеанса.

Вариантов синтаксиса данных может быть три: синтак сис, используемый прикладным объектом-отправителем, используемый прикладным объектом-получателем, и синтаксис, используемый между представительными объек тами (синтаксис передачи). Любые два или все три синтакси са могут быть идентичными.

Уровень функции, необходимые для выполнения преобразования между синтаксисом переда чи и каждым из остальных двух синтаксисов.

Согласование синтаксиса осуществляется посредством диалога между представительными объектами для опре деления формы, которую будут иметь данные в процессе мена в функциональной среде. В процессе согласования оп ределяется, какие преобразования необходимо выполнить (если такая необходимость и где они вы полняться. Согласование может быть ограничено фазой ини циирования либо выполняться в любое время в ходе сеанса.

Сеансовый уровень. Назначение сеансового уров ня заключается в обеспечении сервиса, необходимого взаи модействующим представительным объектам для организа ции и синхронизации своего диалога и управления обменом данными. Для этого сеансовый уровень предоставляет услуги по установлению сеансового соединения между двумя пред ставительными объектами и поддержания упорядоченного взаимодействия при обмене данными между ними. Для осу ществления передачи данных между объектами уровня пред ставления сеанс отображается на транспортное соединение.

Сеанс существует до тех пор, пока он не будет разъединен соответствующими объектами. Во время существования сеан са его услуги поддерживают состояние даже несмот ря на потерю данных, которая может произойти на транспорт ном уровне.

Функции сеансового уровня сводятся к установлению и разъединению сеансового соединения;

обмену нормальными и срочными данными;

управлению взаимодействием;

синхро низации сеанса;

восстановлению сеанса.

Архитектура распределенных систем обработки данных Транспортный Транспортный обеспечивает прозрачную передачу данных между сеансовы ми объектами и освобождает их от функций, связанных с на дежной и экономически эффективной передачей данных.

Уровень оптимизирует использование имеющихся сетевых ресурсов, то есть предоставляет транспортный сервис минимальной стоимости. Эта оптимизация достигается в пре делах ограничений, накладываемых, с одной стороны, запро сами всех одновременно действующих сеансовых и, с другой стороны, параметрами сетевого сервиса, исполь зуемого транспортным Все протоколы, определяемые на транспортном уровне, предназначены для точечного взаимодействия, где точками являются транспортные объекты-корреспонденты.

Поскольку сетевой уровень обеспечивает сетевые нения между любыми двумя транспортными объектами, включая случай использования подсетей, соединенных по следовательно, транспортный уровень освобождается от не обходимости заниматься маршрутизацией и ретрансляцией.

Транспортные функции зависят от предоставляемого се тевого сервиса и включают: отображение транспортного ад реса на сетевой адрес;

мультиплексирование и расщепление транспортных соединений на сетевые соединения;

установле ние и разъединение транспортных соединений;

управление потоком на отдельных соединениях;

обнаружение ошибок и контроль качества обслуживания;

исправление ошибок;

сег ментирование, блокирование и сцепление;

передачу срочных транспортных блоков Сетевой уровень обеспечивает установление, поддерживание и разъединение сетевых соеди нений между открытыми системами, содержащими взаимо действующие прикладные объекты, а также предоставляет функциональные и процедурные средства для обмена блока ми данных между транспортными объектами по сетевым со единениям. Сетевой уровень позволяет транспортным объек там быть независимыми от особенностей маршрутизации и ретрансляции, связанных с установлением и использованием данного сетевого соединения. Сетевой уровень также скрыва ет от транспортных объектов способы использования ниже лежащих ресурсов.

Сетевой уровень выполняет следующие функции: мар шрутизацию и ретрансляцию;

организацию сетевых соедине ний;

мультиплексирование сетевых соединений на канальное соединение;

сегментирование и блокирование;

обнаружение и исправление ошибок;

организацию последовательности;

управление потоком;

передачу срочных данных;

возврат в исходное состояние.

Канальный Канальный уровень обеспе чивает функциональные и процедурные средства для уста новления, поддержания и расторжения канальных соедине ний между сетевыми объектами передачу блоков данных.

Канальное соединение (канал передачи данных) строится на одном или нескольких физических соединениях.

Канальный уровень обнаруживает и в некоторых случаях исправляет ошибки, которые могут возникнуть на физиче ском уровне. Кроме канальный уровень позволяет сете вому уровню управлять взаимными соединениями физиче ских каналов передачи данных на физическом уровне.

На этом уровне выполняются следующие функции: уста новление и расторжение соединения;

каналь ного соединения на несколько физических соединений;

управление последовательностью;

обнаружение и исправле ние ошибок;

управление потоком;

управление соединением физических каналов передачи данных.

Физический уровень обес печивает механические, электрические, функциональные и процедурные средства активизации, поддержания и разъеди нения физических соединений для передачи бит между ка нальными объектами. В физическое соединение также могут входить промежуточные открытые системы, каждая из кото Архитектура систем обработки данных ретранслирует передачу бит внутри физического уровня.

Объекты уровня соединены друг с другом по средством физических средств передачи.

Функции физического уровня сводятся к активизации и разъединению физического соединения, а также собственно передаче данных.

распределенной системы и Четыре нижних уровня ЭМВОС Ч физический, каналь ный, сетевой и транспортный Ч обеспечиваются аппаратурой и средствами операционной системы. Для того чтобы создать распределенную систему обработки данных, необходимо соз дать ее сетевую основу. Поясним этот этап на примере ло кальной вычислительной сети.

Самый нижний уровень Ч передающая система сети.

Система передачи предназначена для передачи сигналов ме жду компьютерами и обычно поддерживает только ограни ченный диапазон. Система также ограничивает типы физиче ских соединений с сетевыми адаптерами серверов и рабочих станций.

Компьютеры, на которых будут установлены элементы распределенной системы, должны быть оборудованы сетевы ми адаптерами, которые должны быть присоединены к среде передачи данных, например витой паре или коаксиальному кабелю. передачи данных с дополнительными устрой ствами (концевыми заглушками-терминаторами, повторите лями сигналов и т. п.) и сетевые адаптеры образуют физиче ский уровень передачи данных.

Для правильной интеграции сетевого адаптера в операци онную систему должен быть настроен драйвер сетевой карты.

Многие сетевые адаптеры распознаются и настраиваются средствами операционной системы, но в некоторых случаях потребуется установка программного обеспечения от После конфигурации программного обеспе чения сетевого адаптера необходимо определить используе мый сетевой протокол. Один адаптер может поддерживать передачу данных по нескольким протоколам.

Используемый протокол определяет способ задания сете вого адреса. Каждый узел в сети должен иметь свой уникаль ный сетевой адрес. При создании распределенных систем на базе Oracle чаще всего используется протокол ТСРЛР. Для UNIX это Ч стандартный телекоммуникационный протокол. Для Windows поддержка этого протокола встроена в операционную систему.

Таким образом, первым шагом создания распределенной системы обработки данных является правильное конфигури рование параметров сетевого адаптера, операционной систе мы и проверка работоспособности сетевого транспорта. Пра вильное конфигурирование и работоспособность сетевого транспорта являются условиями создания распределенной системы обработки данных. Проверку функ можно выполнить программами диагностики сети, например, утилитой ping. В листинге приведен пример проверки функционирования сетевого транспорта к компьютеру, имеющему сетевое имя C:\ping ora_server ora_server with 32 bytes of Reply from 192.147.0.2:

Листинг Проверка функционирования сетевого транспорта Сетевые средства Oracle обеспечивают поддержку трех верхних уровней модели: сеансового уровня, уровня пред ставления и уровня. Совокупность сетевых средств называется Net8 (ранние версии Ч Net8 организует взаимодействие приложений с сетевым про Архитектура распределенных обработки данных обеспечением. Уровень представления служит ин терфейсом между различными приложениями и программ ным обеспечение сеансового уровня. Например, сюда отно сятся драйверы Microsoft ODBC, которые позволяют органи зовать взаимодействие приложений с Net8. Некоторые при ложения могут обращаться напрямую к уровню представле ния и, следовательно, не нуждаются в программах сеансового уровня. К ним относятся большинство утилит Oracle, а для разработки собственных приложений целесообразно исполь зовать механизмы OCI.

Для поддержки используемого сетевого протокола при установке клиентской части из перечня доступных средств должен быть выбран подходящий адаптер протокола (напри мер, Oracle TCP/IP Protocol Adapter) и программное обеспе чение поддержки клиента Net8. После того как программные компоненты Net8 установлены на рабочих станциях и серве рах, они должны быть правильно сконфигурированы.

сетевых компонент Oracle Для настройки Net8 Oracle предоставляет специализиро ванные средства с графическим интерфейсом, например Net Easy Тем менее дадим некоторые общие сведения, поясняющие суть процесса конфигурирования. Начнем с сер вера баз данных. Каждый сервер обладает именем. Имя сер вера относится к физической машине, на которой находится база данных Oracle. В сети каждый сервер имеет свой кретный, уникальный адрес. Обратиться к серверу можно по имени или по сетевому адресу. Для идентификации базы дан ных на сервере служит имя сервиса. Имя сервиса Ч это стро ковая переменная, включающая название базы данных и до мен. По умолчанию Oracle использует типовой домен Чтобы взаимодействие с сервером Oracle было возмож ным, на сетевом узле, где находится сервер баз данных, дол жен быть запущен, как минимум, один прослушивающий процесс. После его запуска, независимо от того, как он был запущен, появляется возможность приема входящих запро сов, их обработки, а в случае сохраняется возможность поддержки других соединений.

При запуске прослушивающий процесс необ ходимую ему управляющую информацию из специального файла параметров. Место этого файла зависит от операционной системы, его имя, как правило, listener.ora.

Чаще всего этот файл расположен в каталоге (UNIX) или (Windows), где переменная задает конкретный путь (например, Упрощенный вариант файла listener.ora пред ставлен в листинге 2.

= (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (Host = (Port = 1521) ) = = = ADMIN SID_LIST_LISTENER_EDUC = = (SID_DESC = = Листинг Содержание файла конфигурации прослу шивающего процесса listener.ora Рассмотрим, какие параметры указываются в файле listener.ora. С помощью одного файла можно настроить более одного прослушивающего процесса, поэтому секция настрой ки конкретного начинается с указания его имени. В распределенных систем обработки данных нашем примере это Ч Затем в секции указывается нахождение сервера базы дан ных в сети и используемого для связи с ним протокола (пара метры PROTOCOL, HOST и PORT). Символическое имя сер вера должно быть правильно отображено на реаль ный Настройку отображения должен выполнить ад министратор локальной сети с помощью соответствующих сетевых служб. В файле можно задавать и адрес.

. В следующем разделе файла listener.ora указывается спи сок экземпляров, баз данных и сервисов, с которыми взаимо действует прослушивающий процесс. В нашем примере это раздел SID_LIST_LISTENER_EDUC. Параметр содержит системный идентификатор базы данных (SID). Его значение указывается при создании базы данных. Остальные параметры необязательны и предназначены для тонкой на стройки прослушивающего процесса, например, параметр устанавливает ко личество секунд, в течение прослушивающий про цесс ожидает получения запроса к базе данных.

Для запуска прослушивающего процесса предназначена утилита Следующий пример иллюстрирует ее исполь зование:

LSNRCTL for 32-bit Windows: Version 8.1.5.0.0 Production on 04-FEB-02 19:12: (c) 1998 Oracle Corporation. All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start System parameter file is on:

STATUS of the LISTENER Alias LISTENER TNSLSNR for 32-bit Windows: Version - Production Start Date 04-FEB-02 19:18: Uptime 0 days 0 0 2 sec.

Trace Level off Security ON OFF Listener Parameter File System parameter file Services has 1 service The command completed successfully Протокол запуска прослушивающего про цесса с использованием утилиты Существуют другие пути запуска прослушивающих про цессов. Например, в Windows для этого достаточно запустить соответствующую службу, используя команды операционной Для настройки Net8 на рабочих станциях предназначен конфигурационный файл tnsnames.ora. В нем хранится ин формация о локальных именах специального высокоуровне вого протокола Oracle (Transparent Network Substrate).

Копии файлов конфигурации sqlnet.ora и tnsnames.ora должен иметь каждый клиент. Эти файлы обычно располагаются в каталоге (для Windows).

Файл tnsnames.ora содержит информацию о серверах и спосо бах связи с ними, которая для клиента именуется как строка связи (connect string). Рассмотрим пример, когда для связи с сервером используется протокол порт 1521, а имя сервера Упрощенный вариант файла tnsnames.ora представлен в листинге = (DESCRIPTION = Архитектура распределенных систем данных (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (Host = (Port = (CONNECT_DATA = (SID = Листинг Содержание файла конфигурации В файле требуется описать нахождение сер вера баз данных. Для этого служат параметры, указанные в секции Список параметров зависит от ис пользуемого протокола. Для необходимо указать HOST и PORT. В разделе SID, в нашем примере EDUC, другие параметры служат для тонкой настройки клиентской части Net8.

Таким образом, в файле tnsnames.ora указывается имя сервиса или строка связи. Для соединения с базой данных клиентская часть Net8 должна разрешить строку соединения, то есть фактически установить сетевой маршрут к сервису, который включает нахождение прослушивающего процесса через протокольный адрес и глобальное имя базы данных, содержащее как имя базы данных, так и имя ее домена. Кли ентская часть раскладывает глобальное имя базы данных на составляющие, чтобы определить, с какой базой данных не обходимо связаться. После определения нахождения сервера и имени базы данных клиентская программа обращается прослушивающему процессу, запущенному на этом сервере, чтобы установить соединение с базой данных.

Когда клиент выполняет какие-либо действия, прослуши вающий процесс проверяет ему информацию, сверяет данные, зарегистрированные в сервисе базы данных со своим listener.ora, и выясняет, можно ли выпол нить запрос пользователя на соединение. Если все корректно и соединение можно установить, то для обслуживания клиен прослушивающий процесс создает новый пользователь ский процесс или использует процесс, созданный заранее.

Именно этот процесс делает возможной связь между пользо вателем и базой данных. После того как данный клиентский запрос обработан, процесс продолжает прослушивать сеть и принимать новые запросы на соединение.

Для настройки соединений также служит sqlnet.ora.

Он содержит некоторые более тонкие параметры ции Net8, которые здесь не рассматриваются. Для ства простых систем файл sqlnet.ora изменять не требуется.

При необходимости работы с числом различ ных баз данных могут возникнуть проблемы с обновлением файлов на клиентских компьютерах, особенно если число компьютеров велико. В этом случае следует ис пользовать серверы Oracle Names.

Сервер баз данных Ч основа любой распределенной сис темы. Доминирование технологий Oracle в первую очередь вызвано удачными решениями при проектировании своего основного продукта.

Архитектура сервера Oracle Высокое качество сервера Oracle как программного сред ства обеспечивается как использованием самых современных максимально эффективно запрограммированных алгоритмов обработки данных, так и хорошо спроектированной архитек турой. Внутренняя архитектура ориентирована на обеспечение наибольшей производительности, безопасности и эффективного использования вычислительных ресурсов.

Она позволяет обеспечить многопользовательский доступ к большим объемам данных с сохранением их целостности и непротиворечивости. Рассмотрим основные элементы архи тектуры для понимания того, как система управления базами данных справляется с решением возложенных на нее задач.

Для работы сервера должны быть активными системные и пользовательские процессы Oracle. К обязательным систем распределенных систем данных процессам относятся: PMON Ч монитор процессов, SMON системный монитор, DBWR Ч процесс записи в базу данных, LGWR Ч процесс записи в Дополни тельно к системным процессам для подключений к базе дан ных должны существовать пользовательские процессы. Поль зователь должен к базе данных, прежде чем он сможет обратиться к какому-либо ее объекту. Пользователь ские процессы логически состоят из двух частей: кода серве ра, который транслирует и выполняет операторы SQL, читает файлы и области памяти базы данных, и инструментальной части, которая является исполняемым кодом используемого программного средства.

Процессы в ходе своей работы используют файлы, сово купность которых является физическим представлением базы данных. Существуют три основные группы файлов, состав ляющих базу данных: файлы базы данных, управляющие файлы и журнальные файлы. В файлах базы данных распола гаются собственно данные, а управляющие и журнальные файлы поддерживают функционирование сервера. Все три набора файлов должны присутствовать, быть открытыми и доступными Oracle.

Память, сервером Oracle, имеет щую структуру. Системная память для всей базы данных на зывается SGA (system global area Ч системная глобальная область). Данные и управляющие структуры в SGA являются разделяемыми и все системные и пользовательские могут к ним обращаться. Например, в SGA в течение некото рого времени хранятся дерево синтаксического разбора и план выполнения для каждого оператора SQL и если проис ходит повторное выполнение такого же оператора, то повтор ный анализ не производится и используется находящийся в план выполнения. Таким образом, повышается быстро действие системы за счет устранения дублирования операций.

Для процессов Oracle выделяет PGA (process global area Ч глобальную область процесса) в памяти сервера и, кроме того, Ч PGA для системных процессов. Эта область памяти Раздел содержит данные и управляющую информацию одного про цесса и между процессами не разделяется.

Введем основополагающее определение экземпляра. Эк земпляр Ч это совокупность процессов, разделяющих опре деленную область памяти и управляющих одной или не сколькими базами данных. Обычно существует один экземп ляр для базы данных, хотя возможна работа нескольких с одним набором базы данных. Каждый экземпляр может управлять одной или несколькими базами данных. Каждая конкретная база данных имеет собственное имя соответствует некоторому экземпляру, под управлени ем которого она была создана. Для каждой базы данных су ществует ее файл конфигурации, который создается при вы полнении создании базы данных. Это обычный текстовый файл и может быть изменен администратором базы данных в целях настройки сервера. Параметры файла определяют зна чения ресурсов, ассоциированных конкретной базой дан ных. Каждый раз, когда администратор запускает новый эк земпляр Oracle, для настройки конфигурации считывается этот файл. Запущенный экземпляр получает уникальный идентификатор Ч SID. После запуска администратором эк земпляра базы данных и ее открытия пользователи могут при соединяться к базе но при этом пользователь должен знать соответствующий идентификатор экземпляра. Обычно информация об идентификаторе экземпляра описывается в файле конфигурации Net8 и пользователь использует ее кос венно через указание строки связи.

Логически база данных Ч это множество разделов (схем), каждая из которых своим именем, уникальным в данной БД. Информация о структуре объектов базы данных, их расположении, правах доступа и т. п., хра нится в словаре данных.

Словарь данных Ч база метаданных о собственно базе данных. Информация словаря данных хранится в виде таблиц, над которыми созданы многочисленные представления, и пользователь, обладающий необходимыми правами доступа, данных может получить необходимую информацию по текущему со стоянию базы, используя запросы на языке SQL. Большинст во представлений словаря данных доступно любому пользо вателю. Назначение представления характеризуется его фиксом.

Все представления словаря данных можно разделить на три группы: DBA-представления, содержащие информацию обо всех объектах базы данных;

содер жащие информацию только о тех объектах, которые доступ ны пользователю;

содержащие инфор мацию обо всех объектах базы данных, принадлежащих пользователю. Например, сведения о таблицах, которые находятся в схеме текущего пользователя, можно посмотреть в представлении USER_TABLES.

Для просмотра текущей активности сервера можно ис пользовать специальные представления (с префиксом V$).

Например, сведения о текущих сессиях можно получить, об ратившись к представлению V_$SESSION.

После создания базы данных и ее запуска, требуется, ис пользуя учетные записи SYS или SYSTEM (пароль по чанию регистр в Oracle значения не имеет), вой ти в СУБД для создания учетных записей других пользовате лей. Наряду с системными учетными записями, как правило, создается еще несколько. Например, учетная запись SCOTT (пароль TIGER). Они предназначены либо для демонстраци онных примеров, либо для администрирования дополнитель ных продуктов и картриджей. Пароли пользователей SYS, SYSTEM и других учетных записей, устанавливаемые по умолчанию, рекомендуется сразу же изменить.

При установке с дистрибутива сервера Oracle автомати чески создается одноименный экземпляр сервера баз данных, для которого в Windows создается автоматически запускаемая при загрузке операционной системы служба.

Для большинства запуск экземпляра может быть выполнен утилитой sqldba. Пример запуска.

oracle@sun-server$ SQL*DBA:

- Production on Tue Feb 05 Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.

Enterprise Edition - Production With the Partition option internal ORACLE instance started.

Database Database opened.

Total System Global Area 31140380 bytes Fixed Size 49760 bytes Variable Database Buffers 10240000 bytes Redo Buffers 32768 bytes SQLDBA>exit - Протокол запуска экземпляра Oracle на Solaris Х ', Завершая работу с базой данных, администратор размон тирует ее, отсоединяя от экземпляра, а останавливает экземпляр. В процессе останова сервера базы Oracle завершает запущенные процессы и закрывает файлы опера ционной системы, в которых хранится информация базы дан ных.

Для большинства UNIX-систем останов экземпляра мо жет быть выполнен slqdba. Приведем пример оста экземпляра Ч стандартная подсказ ка системы):

pracle@sun-server$ SQL*DBA: Release -- Production on Tue Feb 05 09:32:59 Архитектура систем обработки данных Copyright (с) Oracle Corporation 1979, 1996. All rights reserved.

Enterprise Edition 8.0.5.0.0 - Production With the Partition option SQLDBA>connect internal Connected.

Database closed.

Database dismounted.

ORACLE instance shut down.

SQLDBA>exit complete.

Листинг б. Протокол останова экземпляра Oracle на SUN Solaris Для Windows достаточно остановить соответствующую службу операционной системы.

В завершение проследим этапы обработки оператора SQL. Ниже приводится алгоритм выполнения оператора SELECT, осуществляющего выборку данных:

Ч пользователь запускает на рабочей станции приложе ние (например, SQL*Plus), вводит имя пользователя Oracle и пароль;

Ч Oracle подтверждает имя пользователя и пароль, све рившись со словарем данных, и посылает ответ приложению для подтверждения соединения;

Ч пользователь оператор SQL, используя тексто вый редактор приложения;

Ч Oracle должен произвести разбор этого оператора прежде, чем выполнить его, поэтому вызывается синтаксиче ский анализатор и оптимизатор Oracle. Если бы какой-либо пользователь ранее уже ввел точно такой же оператор, "разо бранная" версия могла бы находиться в области разделяемого пула в памяти. Oracle в этом случае использует результаты разбора, так что для данного оператора никакой дополни тельный анализ не выполняется;

.

Раадел Ч чтобы транслировать оператор, Oracle должен полу чить имена объектов, указанных в операторе, и другую ин формацию из словаря данных. Если пользователь выполняет оператор сразу после запуска базы, то область кэша словаря данных не содержит информации о таблицах. Поэтому анализ оператора приостанавливается для считывания информации;

Oracle выполняет рекурсивный оператор SQL (опера тор, генерируемой системой), чтобы загрузить информацию об объектах из таблиц словаря данных, находящихся в файлах базы данных, в кэш словаря данных в памяти;

разбор исходного пользовательского оператора про должается, и оптимизатор Oracle строит план выполнения запроса, чтобы определить способ выполнения оператора;

Ч оператор обращается к данным. Предположим, что блоки данных таблиц не находятся в буферном кэше. Требуе мые блоки Oracle читаются файлов базы данных и переда ются в область кэша SGA;

Ч Oracle выполняет оператор и возвращает лю результаты.

Выбор конкретного средства для работы с базой данных с помощью SQL Ч дело вкуса и привычки, поэтому в даль нейшем, если это оговорено особо, будет приводиться только содержательная (текстовая) часть команд и сообщений системы без отображения конкретного интерфейса того или иного средства. Как правило, таким средством служит Использование инструментального В составе серверной или клиентской части Oracle на ком пьютер по умолчанию устанавливается приложение Ч стандартная утилита Oracle для выполнения операторов SQL, базы данных и т. д. С помощью Архитектура данных удобно вводить, редактировать, сохранять и запус кать операторы SQL и программы PL/SQL, выполнять дейст вия по установке и настройке данных, форматировать, сохранять и печатать отчеты. Остановимся подробнее на ос новных возможностях Дополнительные средства, такие, как обмен сообщениями между пользователями, пере мещение данных, автотрассировка и т. мы здесь рассмат ривать будем.

Для запуска приложения SQL*Plus достаточно, щелкнув по соответствующей иконке Windows, заполнить поля формы именем пользователя и паролем, а в поле строка связи ввести ссылку, указанную в файле Менее естественно, но возможно запустить SQL*Plus и из меню запуска про грамм Windows, введя строку Заметим, что конкретное имя программы зависит от кон кретного варианта поставки. Каждый раз, когда запускается SQL*Plus, выполняются команды SQL*Plus и SQL операторы, которые находятся в файлах login.sql и glogin.sql.

Путь к этим файлам указывается в переменных окружения. С их помощью можно, например, настроить параметры созда ваемой сессии. После подключения и выполнения сценариев файлов login.sql и glogin.sql в окне приложения SQL*Plus появится о подключении, параметрах базы ных и строка-приглашение.

SQL*Plus: 8.0.5.0.0 - Production on Jan 4 14:44:6 (c) Copyright 1998 Oracle Corporation.

All rights reserved.

Connected by:

Enterprise. Release 8.0.5.0.0 Production With the Objects option PL/SQL Release - Production SQL> В SQL*Plus можно выполнять: операторы SQL;

програм мы PL/SQL;

команды SQL*Plus.

Вводимые операторы SQL могут расподагаться на одной или нескольких строчках. Терминальным служит или Самый простой способ выполнить опера тор SQL в в строке-приглашении ввести текст оператора, нажать клавишу enter, в следующей строчке ввести символ или и еще раз нажать enter.

SQL> SELECT USER FROM dual USER 7. Выполнение SQL-оператора в Команды и операторы запоминаются в SQL-буфере Ч очень удобная особенность Содержимое SQL буфера можно повторно выполнить, сохранить на диске, от редактировать в текстовом редакторе. SQL-буфер не очища ется до тех пор, пока не начнется ввод очередного предложе ния SQL или блока PL/SQL. Для просмотра содержимого бу фера используется команда LIST.

SQL> 1* SELECT USER FROM dual Просмотр содержимого SQL-буфера Для программ PL/SQL порядок их ввода несколько иной Ч каждый блок PL/SQL начинается с зарезервированного слова DECLARE, или, если блок не имеет декларативной час ти, со слова BEGIN. Ввод любого из этих слов заставляет распределенных систем данных очистить SQL-буфер, войти в режим ввода и игно рировать как терминальный символ. Заканчивая ввод бло ка PL/SQL, можно не вводить одиночную точку. Если вместо точки ввести очередной строке одиночную наклонную чер ту (/), то блок PL/SQL сохранится в SQL-буфере и выполнит ся. Если SQL-буфер содержит оператор SQL или программу PL/SQL, то для выполнения нужно ввести команду RUN или просто наклонную черту:

set serveroutput on SQL> BEGIN 3 END;

4 / PL/SQL procedure successfully completed.

9. Выполнение блока PL/SQL Для просмотра ошибок при компиляции программ PL/SQL можно использовать команду SHOW ERRORS.

Любое SQL-выражение или программу PL/SQL можно сохранить в текстовом файле из с помощью коман ды SAVE. Для редактирования этого файла можно использо вать редактор SQL*Plus. Для того чтобы снова сохранить его, требуется ввести команду SAVE REPLACE. Для использо вания другого текстового редактора требуется выполнить ко манду EDIT. При этом запустится указанный в настройках текстовый редактор. Если имя файла не указывать, то SQL*Plus сохранит содержимое SQL-буфера в файл и от кроет этот файл в редакторе. После редактирования и нения изменений в файле его содержимое SQL*Plus перепи шет в SQL-буфер. Чтобы загрузить файл в буфер, используйте команду GET. Примеры этих команд приведены ниже.

SAVE SAVE REPLACE EDIT GET X ' В операторах SQL и анонимных блоках PL/SQL можно использовать средства подстановки переменных Plus будет запрашивать значение каждой переменной, имеющей префикс &, перед выполнением оператора SQL или блока PL/SQL. Например, перед выполнением следующего запроса запросит значение SELECT с FROM 2 WHERE Enter value for atl: SELECT COUNT(l) с FROM WHERE Atl=&atl new SELECT с FROM Tabl WHERE 10. Использование переменных подстановки SQL*Plus Из SQL*Plus можно вызывать хранимые программы с помощью команды не используя конструкции BEGIN END, В следующем примере вызывается процедура DBMS LINE:

SQL> set serveroutput EXECUTE Hello, word Листинг 11. команды EXECUTE Архитектура распределенных обработки данных В том случае, если SQL*Plus используется для получения текстовых отчетов, можно применить встроенные команды для форматирования вывода данных. В качестве примера стандартный запрос о сессиях базы данных.

set line col sid format a SQL> col format a SQL> col program format a SQL> col format a col osuser format col machine format a SQL> col command format set heading on SQL> SELECT sid, "3 username, 4 substr (upper (s, 1, 60) 5 command 6 v$session s, a 7 WHERE 8 AND s.sid> 9 ORDER BY 10./ SID SER# USERNAME OSUSER MACHINE PROGRAM COMMAND 4 UD DFORT SELECT Листинг Форматирование отчетов в Здесь мы с помощью команд COLUMN и SET HEADING.

установили вывод заголовков столбцов и их ширину. Более полное руководство по использованию SQL*Plus можно по лучить в разделе документации Oracle Guide and Reference.

Следует отметить, что для работы с Oracle существуют более удобные интегрированные средства. В частности, это программные продукты фирмы Quest Software: SQL Navigator, Instance Monitor, TOAD и другие. Ознакомитель ные программ находятся на сайте компании Ч www.quest.com.

Информация о операции Выполнение какой-либо операции клиентского приложе ния или оператора SQL на сервере может завершиться с раз личными итогами. Успешность завершения операции опреде ляется значениями возвращаемых ею параметров, характери зующих итог выполнения операции, сообщениями об ошибках. Сообщения об ошибках специфичны для различных продуктов Oracle. Во всех сообщениях об ошибках указыва ется префикс, указывающий на то, какое приложение выдает ошибку. Например, префикс IMP указывает на то, что ошибка произошла импорте данных с использованием утилиты импорта.

Для сервера Oracle ошибки имеют префикс а соот ветствующие параметры передаются в форме двух кодов за вершения: SQLCODE, Значение со держит развернутое текстовое сообщение об ошибке с указа нием ее причин. Пятисимвольное значение параметра SQLCODE определяется международным стандартом, фор мируемым Международной организацией стандартизации (ISO). Нулевое значение параметра свидетельствует об ус пешном завершении операции, отрицательные значения соот ветствуют завершению операции с некоторой ошибкой, л ложительные Ч завершению с предупреждением о возмож ной ошибке или предназначены для передачи параметров, характеризующих особенности завершения операции (напри мер, отсутствие данных, удовлетворяющих критерию запро са).

Таким образом, это Ч две различные формы представле ния информации, характеризующей успешность завершения оператора языка SQL.

Для облегчения поиска причин ошибок и их исправления в сообщениях об ошибках указываются имена объектов, при Архитектура распределенных обработки данных операциях над которыми произошли ошибки, типы ошибок и другая диагностическая информация.

Иногда пользователь может получить стек ошибок. Стек ошибок Ч это последовательность ошибок, произошедших на различных уровнях приложения при выполнении команды или оператора SQL. В этом случае следует искать причину появления стека ошибок в первых сообщениях об ошибках. В следующем примере при передаче утилите импорта в кос манднои строке в качестве параметра неверного имени поль зователи или пароля был получен следующий стек ошибок:

ORACLE error 1017 encountered invalid denied all allowable logon attempts failed Import terminated unsuccessfully При подключении к базе данных произошла ошибка, о чем выдал соответствующее сообщение сервер Oracle (сооб щение с префиксом затем свои сообщения об ошибках выдала утилита импорта (сообщения с префиксом IMP). Для анализа причин возникновения ошибки иногда бывает важно сохранить весь стек сообщений, а не довольствоваться по следним из них.

типов ошибок сервера Oracle включает в себя не сколько тысяч типов. Они обеспечивают точную диагностику при самых различных программных ошибках. Однако в таком большом и сложном программном комплексе могут возни кать и неописанные внутренние ошибки, например, при на рушении целостности словаря данных. При возникновении внутренней ошибки выдается сообщение вида:

internal error code, За текстом сообщения может встретиться до 6 аргумен тов, которые указывают происхождение и признаки ошибки.

Первый аргумент Ч номер внутренний ошибки. Другие ар Ч различные числа и символьные значения. При появлении сообщения о внутренней авторы отдель ных публикаций рекомендуют поздравить пользователя: "С этого момента Вы Ч настоящий и обратиться в службу технической поддержки Oracle. Практическая же ре комендация Ч регулярно выполнять полный экспорт базы данных и при серьезных сбоях восстанавливать ее с ной копии.

Поддержка в Oracle Для корректной работы приложений с русским языком требуется специальная настройка. Поддержка национальных языков Oracle (National Language Support Ч NLS) позволяет взаимодействовать с сервером на различных языках, поддер живая различные схемы кодирования символов. Oracle под держивает как однобайтовые, так и схемы.

Поскольку зависящие от языка данные хранятся отдельно от обрабатывающего их кода, можно легко добавлять языки и зависящие от языка средства, не изменяя приложе ний. Символьный набор, который будет использоваться для хранения данных в базе, при ее создании. На стройке также подлежат язык вывода сервером информаци онных сообщений, чисел, дат и т. д.

Для конфигурирования NLS предназначены и Они определяют пользуемый по умолчанию формат дат, чисел и других свойств обработки данных. Просмотреть текущие значения параметров NLS можно в системном представлении а изменить оператором ALTER SYSTEM (ALTER SESSION). Изменение параметров NLS также можно осуществить на уровне сессии или даже одного оператора.

Архитектура распределенных обработки данных Рассмотрим использование параметров NLS в функциях SQL. Все символьные функции поддерживают как однобай товые, так и символы. Все функции SQL, поведение которых от параметров NLS, позволяют специфицировать параметры NLS. Это функции NLSSORT.

Обычно строки символов сравниваются через их двоич ные значения. Один символ "больше" другого, если он имеет большее двоичное значение в символов базы данных.

Поскольку упорядоченность символов по их двоичным зна чениям может не соответствовать алфавитной упорядоченно сти, такие сравнения могут нарушать правила национального языка.

Механизм лингвистической сортировки работает путем замещения каждой сортируемой строки символов двоичной формируемой по некоторым правилам. Сравнение строк во фразе WHERE с помощью NLSSORT позволяет при ложениям выполнять сравнения строк в соответствии с со глашениями национального гибко использовать параметры NLS в конкретных функциях и операторах SQL, независимо от текущих значений параметров NLS. Это хоро шо демонстрирует пример оператора, которые содержат чис и даты в виде строк. Следующий оператор выполняется корректно лишь в том случае, если используется язык RUSSIAN и задан подходящий формат даты по умолчанию:

SELECT FROM WHERE > Чтобы сделать оператор независимым от параметров NLS, следует использовать функции преобразования типов, SELECT * WHERE Atl > ИЛИ SELECT FROM WHERE, = На наш взгляд, предпочтительным является первый вари ант. В завершение темы отметим, что если необходимо орга низовать хранение в одной базе данных информации на не скольких языках, то требуется каким-либо способом ее поме чать, отведя для данных различных языках различные лицы или вводя в них дополнительный столбец, значение ко торого указывает на язык значений остальных столбцов.

Теперь, когда составлено общее представление о техно логии обработки данных в распределенной среде, архитекту ре сервера Oracle и инструментальном средстве SQL*Plus, необходимо приступить к изучению SQL Ч основного язы кового средства реляционной базы данных.

Архитектура распределенных систем данных для описания команд В книге используются приведенные ниже соглашения для представления синтаксиса команд.

Символ "верти- Любой, предшествующий знаку |, кальная черта" символ может быть произвольно заменен на любой следующий за |.

Символ является способом изо бражения высказывания "или".

Пара символов Все, что включено в фигурные "фигурные скобки, обрабатывается единым скобки" блоком для выбора из вариантов, разделенных символом |, или за полнения конкретными значения ми.

Пара Все, включенное в квадратные "квадратные скобки, является необязательными скобки" элементами синтаксической конст рукции.

Символ Конкретные значения, предшест...

вующие символу, могут повто ряться любое число раз.

Последователь-.,.. Предшествующие символу кон ность символов кретные могут повто ряться любое число раз, в каждом случае разделенные запятыми.

3. Заказ № 1628.

Раздел SQL Ч ОБРАБОТКИ ДАННЫХ ORACLE SQL является фактическим стандартом языковых средств обработки данных для современных Практически ка ждый производитель СУБД определяет собственный вариант учитывающий особенности архитектуры и позициони рование системы на рынке. В настоящее время существуют три стандарта языка SQL, принятых Американским Нацио нальным Институтом Стандартов (ANSI):

SQL3. Каждый последующий стандарт в этой цепочке уточ няет и расширяет предыдущий. стандартам не является обязательным, хотя практически все производители систем управления базами данных строго выполняют требо вания SQL89 и, в значительной части, Ч требова ния SQL92.

Операторы SQL можно на несколько отдельных групп: DML (Data Manipulation Language) Ч операторы ма нипуляции данными, DDL (Data Definition Language) Ч опе раторы определения данных, группа операторов управления транзакциями и группа операторов предоставления доступа.

Операторы DDL предназначены для создания, модификации и удаления объектов базы данных.

SQL Ч обработки данных Oracle Основные Oracle Oracle поддерживает реляционную модель данных, по этому естественно, что к числу основных объектов базы дан ных относятся: представление и пользователь.

(USER) Ч объект, обладающий воз можностью создавать и использовать другие объекты Oracle, а также запрашивать выполнение функций сервера. К числу таких функций относится организация сессии, изменение со стояния базы данных и др. Следует отметить, что в некоторых других системах управления базами данных, например, IBM DB2, объект базы данных "пользователь" отсутствует. С пользователем Oracle связана схема (SCHEMA), которая яв ляется. логическим набором объектов базы данных, таких, как таблицы, последовательности, хранимые программы, принадлежащих этому пользователю. Схема имеет только одного пользователя-владельца, ответственного за создание удаление этих объектов. При создании пользователем первого объекта неявно создается соответствующая схема. При созда нии им других объектов они по умолчанию становятся частью этой схемы. Для просмотра объектов схемы текущего пользо вателя можно использовать представление словаря данных USER_OBJECTS.

При массовом выполнении DDL-предложений можно создать несколько объектов и назначить для них привилегии за одну операцию, используя оператор CREATE _ Оператор CREATE SCHEMA применяется тогда, когда тре буется гарантировать успешное создание всех объектов и на значение привилегий за одну операцию. Если при создании объектов произошла ошибка, происходит возвращение к исходному состоянию.

Схема может содержать следующие объекты: кластеры, связи баз данных, триггеры, библиотеки внешних процедур, индексы, пакеты, хранимые функции и процедуры, синонимы, таблицы, представления, снимки, объ ектные таблицы, объектные типы, объектные представления.

Объекты схемы могут состоять из других объектов, назы ваемых подобъектами схемы. К ним относятся столбцы таб лиц и представлений, секции таблиц, ограничения целостно сти, триггеры, пакетные процедуры и функции и другие эле менты, хранимые пакетах (курсоры, типы и т. п). К объек там, не схеме, но хранимым в базе данных, относятся каталоги, профили, роли, сегменты таблич ные области и пользователи.

Таблица (TABLE) является базовой структурой реля ционной модели. Как известно, вся информация в реляцион ной базе данных хранится в таблицах. Полное имя таблицы в базе данных состоит из имени схемы и собственно имени таблицы. Таблицы состоят из множества поименованных столбцов или атрибутов. Множество допустимых значений атрибута называют доменом значений или доменом.

Множество допустимых значений столбца также может быть уточнено с помощью ограничений целостности.

Таблицы могут быть связаны между собой отношениями ссылочной целостности. Таблица может быть пустой или со стоять из одной или более строк значений атрибутов. Строки значений атрибутов таблицы называются также кортежами.

Для однозначной идентификации строки в таблице служит идентификатор (ROWID) Ч указатель, имеющий специаль ный формат. В появились вложенные таблицы (NESTED TABLES), которые позволяют объявить таблицу как тип значения столбца родительской таблицы. Подробно они рассмотрены в разделе "Объектные расширения в Для повышения скорости доступа к данным таблица может быть индексно организована (INDEX-ORGANIZED TABLE). Физическое пространство для хранения данных таб лицы выделяется частями, называемыми экстентами. Размеры начального и дополнительных экстентов определяются при создании таблицы.

SQL Ч обработки данных Oracle Представление (VIEW) Ч это поименованная, дина мически поддерживаемая сервером выборка из одной или не скольких таблиц. По сути, представление Ч это производное множество строк, которое является результатом выполнения некоторого запроса к базовым таблицам. В словаре данных хранится только определение представления и, когда в опера торе SQL встречается название представления, Oracle обра щается к словарю за определением и подставляет его в ис ходный запрос. Запрос, определяющий выборку, ограничива ет видимые пользователем данные. Представления позволяют упростить сложные запросы и сделать более понятными их логику. Используя представления, администратор безопасно сти ограничивает доступную пользователю часть базы дан ных только теми данными, которые реально необходимы для выполнения его работы. Представления также можно исполь зовать для поддержки приложений при изменении структуры таблицы. Например, при добавлении нового столбца в табли цу создать представление, его не Синоним (SYNONYM) Ч это альтернативное имя иди псевдоним объекта Oracle, который позволяет пользователям базы данных иметь доступ к данному объекту. Синоним мо жет быть частным и общим. Общий (PUBLIC) синоним по зволяет всем пользователям базы данных обращаться к соот ветствующему объекту по альтернативному имени. Харак терным применением общих синонимов является сокрытие информации о схеме, в которой расположен объект. Наличие синонима позволяет обращаться к объекту по имени, которое является абсолютным в масштабе базы данных. Реальная привязка объекта к некоторой схеме при этом скрыта от поль зователя или приложения.

Для управления эффективностью доступа к данным Oracle поддерживает следующие объекты: индекс, табличная область, кластер и Индекс (INDEX) Ч это объект базы данных, предна значенный для повышения производительности выборки дан ных. Индекс создается для столбцов таблицы и обеспечивает более быстрый доступ к данным за счет хранения указателей (ROWID) на месторасположение строк. При обращении к ин дексированному столбцу сервер по предъявляемому значе нию в индексе указатели на эти строки, а потом не посредственно обращается к Если все требуемые значе ния столбцов имеются в индексе, обращение к таблице не происходит вовсе. Имеется несколько типов индексов Ч В*Тгее (двоичное дерево, каждый узел содержит указатель на следующий и предыдущий), масочный индекс, индекс с реверсированным ключом, кластерный индекс. Под робнее о них в разделе "Методы повышения Кластер (CLUSTER) Ч объект, задающий способ нения данных нескольких таблиц, содержащих информацию, обычно обрабатываемую совместно, например, значения столбцов таблиц, часто участвующих в Строки таких таблиц, имеющие одинаковое значение в кла стеризованных столбцах, хранятся в базе данных ным образом: на уровне Ч в нормализованном виде, а на физическом Ч в ненормализованном. Кластериза ция столбцов таблиц позволяет уменьшить время выполнения выборки.

При использовании кластеров (HASH CLUSTER) организация таблиц базируется на резуль татах хэширования их первичных ключей. Для получения данных из такого кластера запрашиваемое значение ключа обрабатывается хэш-функцией, полученное значение опреде ляет, в каком блоке кластера хранятся данные.

Табличная именован ная часть базы данных, используемая для распределения па мяти для таблиц, индексов и других объектов. В табличную область входит один или несколько файлов. Это SQL Ч обработки данных Oracle возможность гибко настроить хранение данных в зависи мости от порядка и интенсивности их использования. Напри мер, можно отвести одну табличную область для таблиц, а другую Ч для индексов. В каждой базе данных есть таблич ная область SYSTEM, с которой связаны все системные объ екты, например таблицы словаря данных. Доступность таб личных областей может устанавливаться переводом в авто номный или оперативный режим.

Для эффективного управления разграничением доступа данным Oracle поддерживает объект роль.

Роль (ROLE) Ч именованная совокупность привилегий, которые могут быть предоставлены пользователям или дру гим ролям. Oracle поддерживает несколько предопределен ных ролей. Для систем, в которых количество пользователей и приложений велико, роли могут заметно облегчить разгра ничение доступа, например, возможно динамически назна чать роли для изменения набора привилегий пользователя при работе с различными приложениями. Также роли можно за щищать паролем.

Специфичными для распределенных систем являются объекты Oracle: снимок и связь базы данных.

Снимок (SNAPSHOT) Ч локальная копия таблицы уда ленной базы данных, которая, используется либо для тиражи рования (копирования) всей или части таблицы, либо для ражирования результата запроса данных из нескольких таб лиц. Снимки могут быть модифицируемыми или предназна ченными только для чтения. Снимки только для чтения воз можно периодически обновлять, отражая изменения основной таблицы. Изменения, сделанные в модифицируемом снимке, распространяются на основную таблицу и другие копии.

данных (DATABASE LINK) Ч это объект базы данных, который позволяет обратиться к там удаленной базы данных. Имя связи базы данных можно рассматривать как ссылку на параметры механизма доступа к удаленной базе данных (имя узла, протокол и т. п.).

Раздел (ROLBACK SEGMENT) Ч объект базы данных, предназначенный для обеспечения многополь зовательской работы. В сегментах отката находятся обнов ляемые и удаляемые данные в пределах одной транзакции.

При отмене изменений старая версия данных всегда доступна, так как находится в сегментах отката. В начале транзакции и в каждой контрольной точке текущие значения данных копи руются в сегмент отката. Кроме того, сегменты отката ис пользуются при других операциях сервера. Размер и доступ ность сегментов отката в сильной степени влияют на произ водительность сервера баз данных и их настройка должна быть выполнена самым тщательным образом.

Для программирования алгоритмов обработки данных, реализации механизмов динамической поддержки целостно сти базы данных Oracle использует следующие объекты: про цедуры, функции, пакеты, тела пакетов и триггеры.

Процедура (PROCEDURE) Ч это поименованный, структурированный набор конструкций языка PL/SQL, пред назначенный для решения конкретной задачи.

Функция это поименованный, структу рированный набор конструкций языка PL/SQL, предназна ченный для решения конкретной задачи и возвращающий значение.

Пакет (PACKAGE) Ч это поименованный, структури рованный набор переменных, процедур и функций и других объектов, связанных функциональным замыслом. Пакет со стоит из двух самостоятельных частей: заголовка и тела. За головок содержит описание переменных, констант, типов, процедур, функций и других конструкций языка PL/SQL. Те ло пакета содержит реализацию алгоритмов процедур и функций и хранится Например, Oracle предоставля ет стандартный пакет UTL_FILE, который содержит процеду ры и функции, предназначенные для организации файлового ввода-вывода из программ на языке PL/SQL.

SQL Ч обработки данных Oracle Триггер (TRIGGER) Ч это хранимая процедура, кото рая автоматически выполняется когда происходит свя с триггером событие. Обычно события связаны с вы полнением операторов вставки, модификации и удаления данных. С помощью триггеров можно реализовать правила динамической проверки целостности данных и дополнитель ного контроля доступа.

Библиотеки (LIBRARY) Ч объекты базы данных, предназначенные для взаимодействия программ PL/SQL с модулями, написанными на других языках программирова ния.

Типы (TYPE) и коллекции типов Ч новые виды объек тов базы данных для предназначенные для реализа ции объектных расширений.

Каталог (DIRECTORY) Ч объект, предназначенный для организации файлового ввода-вывода и работы с боль шими двоичными объектами.

Профиль (PROFILE) Ч объект, ограничивающий ис пользование пользователем системных ресурсов, например процессорного времени или числа операций ввода-вывода.

манипулирования данными SQL В языке SQL предусмотрено четыре ключевых слова для операций манипулирования данными: SELECT, INSERT, UPDATE и DELETE. Предложения с оператором SELECT занимают особое место, поскольку они предназначены для выборки данных, а часть активности пользователей связана с выполнением запросов на выборку данных. Кроме того, умение правильно и оптимально написать сложный за прос является одной из лучших характеристик квалифициро ванного специалиста в области систем управления базами данных. Часто часть языковых средств, отвечающую за вы борку данных, называют языком запросов.

запроса.

Оператор SELECT используется для выборки атрибутов одной нескольких таблиц в соответствии с указанным критерием отбора. В запросе можно использовать встроенные функции и, более того, пакетные функции, не изменяющие состояние базы данных (обладающие необходимым "уровнем чистоты"). Последовательность операций при прохождении оператора SELECT через архитектуру сервера Oracle была приведена в разделе "Архитектура распределенных систем обработки данных".

Всякий запрос начинается с ключевого слова SELECT.

После ключевого слова SELECT список, определяю щий перечень выводимых столбцов и, возможно, элементы форматирования. Ключевое слово FROM определяет табли цы, представления или снимки, из которых будут отбираться Ключевое слово WHERE определяет логическое ус ловие отбора данных. Если ключевое слово WHERE опущено, то осуществляется выбор из декартова произведения таблиц, представлений и снимков, указанных в перечне значений по сле ключевого слова FROM.

Хотя выводить все атрибуты таблицы обычно требуется редко, стандарт SQL поддерживает простой способ запроса на вывод всех атрибутов. Для этого используется специаль ный символ (звездочка). Проиллюстрируем использова ние простейших запросов на таблице, созданной и заполнен ной предложениями:

CREATE TABLE CHAR(3),At INTO INSERT INTO Tabl INSERT INTO Tabl SQL Ч обработки данных Oracle Запрос, выполняющий вывод всех данных таблицы задается оператором SELECT * FROM SQL> SELECT * FROM AT A В С Листинг 13. Запрос, выводящий все из таб лицы Tabl Если данные выбираются из схемы, отличной от схемы пользователя, то в запросе необходимо указать полное имя таблицы, то есть как имя схемы, так и имя таблицы. Пусть пользователь выполняет выборку из таблицы Tabl пользо вателя и2. Запрос, выполняющий вывод всех данных таблицы Tabl схемы пользователя и2, задается SQL> SELECT FROM AT A В С Запрос, выводящий все данные из таб лицы из схемы пользователя и Как перечень, так и порядок вывода столбцов может быть определен пользователем при формировании запроса. Запрос, выполняющий выборку значений столбцов таблицы Tabl в порядке, отличающемся от порядка, заданного при описании таблицы, задается следующим оператором:

SQL> SELECT FROM ТаЫ;

AT 1 A 2 В 2 С Листинг 15. выводящий данные столбцов At и таблицы ТаЫ в указанном порядке Дополнительно пользователь может указать в списке вы вода выражения, зависящие от значений столбца и заголовок, который будет выведен на соответствующей позиции.

Ниже приведен пример выполняющего выборку значений столбца с соответствующим заголовком и значения столбца с присоединенной строкой:

At2/ 2 = Ч "Header Atl" At2/10 Header Atl = A.2 В.2 = С Листинг 16. Запрос, выводящий значения и Atl с присоединенной строкой и с измененны ми заголовками Результатом выполнения операции выборки является мультимножество, то есть, если это не указано устране ние повторяющихся строк не производится. Для устранения SQL Ч данных Oracle повторяющихся строк используется ключевое слово DISTINCT. Для устранения дубликатов Oracle неявно произ водит сортировку и в этом случае время выполнения запроса может оказаться неожиданно большим. Поэтому не рекомен дуется использовать эту конструкцию в приложениях, тре бующих малого времени реакции. Сравните два запроса:

SELECT FROM Tabl;

AT SQL> SELECT DISTINCT FROM AT Листинг без устранения повторяющихся строк и с устранением повторяющихся строк Формирование критерия Вычисление раздела WHERE производится по следую щим правилам.

Пусть R Ч результат вычисления раздела FROM. Тогда условие отбора применяется ко всем и результа том раздела WHERE является множество, состоящее из тех строк для которых истинны значения результатов вычис ления условий отбора. Если условие выборки включает под запросы, то каждый подзапрос вычисляется для каждой стро ки таблицы R. В стандарте термин "эффектив но в том смысле, что результат вычисления подзапроса должен быть таким, как если бы каждый под запрос действительно вычислялся заново для каждой строки хотя реально это обычно не требуется.

В качестве базовой конструкции кри терия отбора часто используется совокупность предикатов, соединенных логическими связками. Язык SQL поддерживает двухместные предикаты с операциями:

= Равно > Больше чем Меньше чем >= Больше или равно <= Меньше или равно !=, о Не равно Операции имеют стандартные значения для значений. Для символьных строк их определение зависит от конкретной среды выполнения, в том числе системы и набора конкретных символов используемого на языка. Обратите внимание, что в ASCII все символы верхнего регистра меньше чем все лы нижнего поэтому < а все номера Ч мень ше, чем все символы, поэтому < Проиллюстрируем использование простейшего критерия отбора, задаваемого двухместным предикатом, на примере следующего запроса:

* FROM 2 WHERE 1;

AT В С Листинг 18. Запрос с использованием критерия от бора, двухместным предикатом SQL Ч обработки данных Oracle Обратите внимание на то, что в переменных типа CHAR строка дополняется пробелами до длины переменной. Харак тер обработки дополнительных пробелов задается специ альным образом в файле параметров базы данных, поэтому при сравнении с литеральной строкой, содержащей заверша ющие пробелы, необходимо проявлять некоторую осторож ность. Результат сравнения "одинаковых" строк типа CHAR и также может оказаться неожиданным.

определения отбора Обратите внимание, что стандарт SQL допускает наличие в базе данных неопределенных значений, поэтому вычисле ние условия отбора должно производиться не в булевой, а в трехзначной логике со значениями TRUE, FALSE и UNKNOWN (неизвестно). Для любого предиката известно, в каких ситуациях он может порождать значение Булевские операции AND, OR и NOT работают в трехзначной логике следующим образом:

1. Таблица истинности для операций с пе ременной, принимающей неопределенное значе ние Операция TRUE AND UNKNOWN UNKNOWN FALSE AND UNKNOWN FALSE UNKNOWN AND UNKNOWN UNKNOWN TRUE OR UNKNOWN TRUE FALSE OR UNKNOWN UNKNOWN UNKNOWN OR UNKNOWN UNKNOWN NOT UNKNOWN UNKNOWN Среди предикатов условия отбора в соответствии со стан дартом SQL используются следующие предикаты: предикат сравнения, предикат BETWEEN, предикат IN, предикат LIKE, предикат NULL, предикат EXISTS и предикат с квантором. Заметим, что во всех реализациях SQL на эффек тивность выполнения запроса существенно влияет наличие в условии отбора простых предикатов сравнения (предикатов, задающих сравнение столбца таблицы с константой).

Язык SQL допускает связывание предикатов логическими связками AND, OR, и NOT. Применение логического отрица ния NOT возможно как к отдельному (в том числе и одноме стному) предикату, так и выражению, образованному из пре дикатов с помощью логических связок. Для устранения неод нозначности и потенциальных ошибок при сложных критериев рекомендуется использовать круглые скобки для группирования.

Следует иметь в виду, что последовательность вычисле ния истинности предикатов умышленно не определена и ме няется в зависимости от выражения. Как только значение вы ражения вычислено на основе некоторого набора предикатов, истинность предикатов вычисляется. В зависи мости от плана выполнения запроса последовательность вы числений также изменяется. В результате может быть полу чен неожиданный эффект. Рассмотрим следующий пример.

SQL> FROM 2 WHERE 1=1 OR 1/0=1;

AT A В С SELECT * FROM 2 WHERE 1=1 AND 1/0=1;

SQL Ч обработки данных Oracle 1/0= * error at line 2:

divisor is equal to zero Листинг Пример, иллюстрирующий различные спо собы вычисления логических выражений описания данных Oracle К числу основных функций языка описания данных мож но Ч идентификацию типов данных;

Ч присвоение уникальных различным типам дан ных;

Ч спецификацию структуры объекта базы данных;

Ч спецификацию ключей.

В число дополнительных функций языка описания дан ных можно включить:

Ч определение частных характеристик элементов дан ных;

Ч определение ограничений целостности;

Ч описание элементов физического уровня хранения данных.

Под частными характеристиками элементов данных обычно понимается определение длины символьных строк, масштаба и точности числовых данных и т. п. Обратите вни мание, что формат хранения не обязательно совпадает с матом, в котором пользователь получает данные. Сервер Oracle поддерживает возможность переформатирования зна чений данных.

Указание ограничений целостности используется для по вышения достоверности ввода данных. Автоматический кон троль хорошо структурированных данных повышает досто верность информации в базе данных.

Средства описания физического уровня хранения данных иногда выделяют в специальный подъязык описания памяти.

Обычно СУБД включает средства для описания особенностей хранения данных (в частности, степень заполнения, тип кэ ширования и т. п.).

Типы данных Oracle Данный раздел представляет типы данных, поддерживае мые Oracle. Все типы данных, перечисленных в стандарте ANSI SQL92, полностью поддерживаются Типы данных, специфичные для сервера Oracle, отмечены строкой [Только для Oracle].

символов CHARACTER используется для хранения строк фик сированной длины. хранения строк резервируется опре деленное в параметре длина пространство. При необходимо сти короткая строка дополняется пробелами.

Если длина строки не указана явно, она полагается равной Максимальное значение параметра длина Ч 255 символов.

Пример Str2 CHARACTER Тип VARCHAR используется для хранения строк пере менной длины. Для хранения строк резервируется реально необходимое пространство.

VARCHAR CHAR VARYING CHARACTER VARYING Если длина строки не указана явно, она полагается равной Максималь ное значение параметра длина Ч 4000 символов.

Пример varstrl SQL Ч обработки данных Oracle varstr2 CHARACTER Тип [Только для используется для хранения строк переменной длины. Для хранения строк ре зервируется реально необходимое пространство. Основная причина введения типа состоит в том, что фир ма-производитель декларирует неизменность этого типа в бо лее поздних реализациях Oracle, в то время как тип соответствовать требованиям стандартов SQL.

(длина). Длина строки долж на быть указана явно. Минимальное значение параметра дли на Ч 1 символ, максимальное значение параметра длина Ч 4000 символов.

Пример strlora Между этими типами есть различие Ч данные типа CHAR имеют фиксированную длину и могут содержать до 255 символов, a VARCHAR2 имеет переменную длину и мо жет содержать до 4000 символов. По умолчанию в SQL все строковые литералы имеют тип CHAR. любого столбца типа занимает 255 байт дискового про странства и также 255 в листьевом наборе индекса.

Эти различия следует учитывать при проектировании струк туры таблиц, выделении места для хранения данных и срав нениях строк в SQL-выражениях. Если две строки имеют раз ную длину, то при сравнении более короткая строка дополня ется пробелами до второй строки. В том случае, если ограничение в 4000 символов существенно и есть необходи мость хранить более длинные тексты именно в можно таблицу, каждая запись которой будет содер жать одну строку текста и для ускорения доступа поместить ее в кластер.

Для хранения символьных данных с использованием на циональных алфавитов предназначены типы и Тип LONG [Только для Oracle] используется для хране ния больших строк переменной длины. Для хранения строк резервируется реально необходимое пространство. Использо вание переменных типа LONG имеет следующие ограниче ния:

Ч таблица не может содержать более одного столбца с типом данных LONG;

Ч для типа LONG не разрешено построение индекса;

Ч столбцы типа LONG не могут включаться в ограниче целостности (кроме ограничения NULL или NOT NULL);

Ч их нельзя использовать в выражениях вида INSERT INTO... SELECT... FROM;

Ч столбцы этого типа нельзя использовать в конструк циях GROUP BY, CONNECT BY.

Фирма-производитель считает тип LONG устаревшим и не рекомендует его использовать. Тип данных LONG может не поддерживаться в более поздних версиях Oracle.

LONG Если длина строки не указана явно, она полагается равной 2 мегабайтам. Макси мальное значение параметра длина Ч 2 гигабайта символов.

Пример longstr LONG Числовые Тип INTEGER используется для представления целых чисел в диапазоне от до INT.

Пример varintl INTEGER SQL Ч обработки данных Oracle NUMBER [Только для Oracle] используется для представления чисел с заданной точностью.

[, ли значение параметра точность не указано явно, оно пола гается равным 38. Значение параметра масштаб по умолча нию предполагается равным 0. Значение параметра точность может изменяться от 1 до 38, значение параметра масштаб может изменяться от -84 до 127. Использование ных значений масштаба означает сдвиг десятичной точки в сторону старших разрядов. Например, определение NUMBER (7,-3) означает до тысяч.

Пример varcounter NUMBER В таблице 2 приведены представления числа 123456.789 с различной точностью и масштабом.

Таблица Представления числа с раз личной точностью и масштабом Определение Представление при выполнении действий NUMBER NUMBER(7,1) 123456. ошибка в данных 123456. Для совместимости с другими СУБД Oracle поддержива ет типы данных DECIMAL, DOUBLE_PRECISION, NUMERIC, DEC и REAL. Все типы числовых данных хранятся в одном и том же внутреннем формате Oracle.

Типы DECIMAL И NUMERIC полностью эквивалентны NUMBER.

.

Синтаксис: DECIMAL [, DEC [, NUMERIC [, Пример vardecl DEC vardec 3) NUMERIC Тип Ч специальный тип данных, который служит для представления указателей на запись в таблице. При создании строки в таблице ей сразу присваивается ROWID, который остается неизменным до ее удаления или реорганизации дан ных. Использование ROWID Ч самый быстрый способ дос тупа к строке в таблице.

SQL > ROWID FROM WHERE ROWID AAADFlAADAAAGnPABX Листинг 20. Вычисление ROWID Так как значение ROWID является уникальным для лю бой строки в таблице, ее можно использовать, например, удаления повторяющихся строк в таблице. Пример такой рации приведен в листинге SQL> CREATE TABLE Tabl NUMBER, At Table created.

SQL> INSERT INTO Tabl 1 row created.

86.

SQL Ч обработки данных Oracle SQL> 1 row created.

DELETE FROM 2 WHERE NOT IN (SELECT 3 FROM 4 GROUP BY 5 / 1 row deleted.

Пример удаления записей-дубликатов строки Тип RAW [Только для Oracle] используется для хранения двоичных строк переменной длины. Отличие типа RAW от типов CHAR, состоит в том, что для типов сим вольных строк Oracle производит автоматическое преобразо вание данных при их передаче между клиентом и сервером.

Утилиты Import и Export также производят автоматическое преобразование символьных строк при логической разгрузке и загрузке баз данных в с настройками средств поддержки национальных языков. Oracle выдает данные типа RAW в виде.

RAW Параметр длина измеряет ся в байтах. Максимальное значение параметра длина Ч байт.

Пример LONG [Только для Oracle] используется для хранения больших битовых строк переменной длины.

LONG RAW Параметр длина измеряется в байтах. Если длина строки не указана явно, она полагается равной 2 мегабайтам. Максимальное значение па раметра длина Ч 2 гигабайта символов. Для переменных типа LONG RAW невозможно построение индекса.

Пример verylongstrl LONG и время Тип DATE [Только для Oracle] используется для хране ния даты и времени. Допускаются даты с 1 января 4712 г. до до декабря 4712 г. Для формирования значения типа в SQL и PL/SQL обычно используется встроенная функция При определении даты без уточнения времени по умолчанию принимается время полуночи. Функция SYSDATE возвращает текущее значение даты и времени.

Значение функции определяется средствами операционной системы компьютера, на котором работает сервер Oracle.

DATE.

Пример DATE Наличие специального типа для хранения даты и времени позволяет поддерживать арифметику и вре мен. Добавление к переменной типа DATE целого числа ин терпретируется как определение более поздней даты, а вычитание выполняется как определение более ранней. Рас смотрим несколько примеров:

SQL > SELECT FROM dual;

SYSDATE 16-04- SQL> SELECT FROM dual;

26-04- SQL Ч данных Oracle SELECT FROM dual;

06-04- Листинг Запросы, иллюстрирующие арифметику дат Oracle Также возможно использование юлианской даты. Юли анская дата Ч это число дней, прошедших с 1 г.

до нашей эры. Реализация юлианской даты в Oracle не имеет компоненты времени. Для использования юлианской даты в функциях и TO_DATE применяется маска форма та SELECT 2 FROM JDATE Листинг 23. Использование юлианской даты Время хранится точностью до секунды. Когда нужно организовать обработку дат с более высокой точностью, то можно прибегнуть к различным хитростям, например хранить наносекунды в числовом поле, написав библиотеку функций для обработки его значений и используя эти функции в сах. Или использовать специализированные пакетные функ ции, работающие с сотыми долями секунды. При этом следу ет обратить внимание на точность, которую обеспечивает ис точник данных.

Тип BLOB [Только для Oracle] используется для хране ния двоичных данных размером до 4 гигабайт. Для работы с большими двоичными объектами используется стандартный пакет DBMS_LOB, о котором рассказывается в разделе "PL/SQL Ч процедурное расширение языка SQL".

BLOB.

Пример doc BLOB Тип CLOB [Только для используется для хране ния символьных данных длины размером до гигабайт, использующих однобайтовую кодировку.

CLOB.

Пример cdoc CLOB Тип NCLOB [Только для Oracle] используется для хране ния символьных данных размером до 4 гигабайт, использую щих одно- или многобайтовую кодировку.

NCLOB.

Пример ncdoc NCLOB Тип BFILE [Только для Oracle] используется для хране ния указателей на двоичные данные, находящиеся во внеш них по отношению к СУБД файлах. Сами файлы хранятся в файловой системе.

BFILE.

Пример file doc BFILE SQL Ч данных Oracle и удаление в Oracle Таблица является базовой структурой реляционной моде ли. Как известно, вся основная информация реляционной ба зы данных хранится в таблицах. Таблицы состоят из множе ства поименованных столбцов. Множество допустимых зна чений столбца может быть уточнено с помощью ограничений целостности.

Pages:     | 1 | 2 | 3 | 4 | 5 |    Книги, научные публикации