Администрирование Oracle


         

Аудит базы данных


Словарь  данных  каждой базы данных содержит таблицу с именем SUS.AUD$, обычно называемую АУДИТОРСКИМ  ЖУРНАЛОМ базы данных. Аудиторские записи, генерируемые как результат отслеживания предложений, привилегий или объектов, можно помещать как в аудиторскую таблицу базы данных, так и в аудиторский журнал операционной системы. Использование аудиторского журнала дает возможность просматривать  выбранные порции аудиторского журнала с помощью предопределенных представлений словаря данных, а также  использовать инструменты ORACLE, такие как SQL*ReportWriter, для генерации аудиторских отчетов.

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

Аудиторский журнал базы данных (SYS.AUD$) - это единственная таблица в словаре данных каждой базы данных ORACLE. Если вы решили использовать аудит, создайте аудиторские представления, подключившись как SYS и запустив скрипт CATAUDIT.SQL. Если вы решили отключить аудит и больше не нуждаетесь в аудиторских представлениях, удалите их, подключившись как SYS и запустив скрипт CATNOAUD.SQL. Точное имя и местоположение этого скрипта зависит от операционной системы.



Аудит с помощью триггеров базы данных


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



Автоматический запуск базы данных при запуске операционной системы


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



Блоки данных


 

На самом низком уровне рассмотрения, данные базы данных ORACLE хранятся в БЛОКАХ ДАННЫХ (называемых также логическими блоками, блоками ORACLE или страницами). Один блок данных соответствует фиксированному числу байт физического пространства базы данных на диске. Размер блока данных специфически устанавливается для каждой базы данных ORACLE при ее создании. Этот размер кратен размеру блока операционной системы, но не превышает определенный максимум. Важно помнить, что база данных, на ее самом низком уровне, использует и распределяет свободное пространство в базе данных блоками данных ORACLE. По контрасту с этим, все данные на физическом уровне, т.е. на уровне операционной системы, распределяются в байтах. Каждая операционная система имеет то, что называется РАЗМЕРОМ БЛОКА, который определяется как специфическое число байт на диске.

ORACLE управляет пространством в файлах данных базы данных в единицах, называемых БЛОКАМИ ДАННЫХ. Блок данных - это наименьшая единица ввода-вывода, используемая базой данных. Блок данных соответствует физическому блоку на диске с размером, совпадающим с размером блока данных ORACLE. Этот размер блока может отличаться от стандартного размера блока ввода-вывода операционной системы, в которой выполняется ORACLE.

Формат блока данных ORACLE один и тот же, независимо от того, содержит ли блок данные таблицы, индекса или кластера.

 





Блокировки строк (TX)


Монопольная блокировка данных запрашивается для индивидуальной строки от имени транзакции, если эта строка модифицируется одним из следующих предложений: INSERT, UPDATE, DELETE или SELECT с фразой FOR UPDATE. Строка всегда блокируется монопольно, так что другие пользователи не могут модифицировать эту строку до тех пор, пока транзакция, удерживающая блокировку,  не будет подтверждена или отменена. Блокировки строк всегда запрашиваются ORACLE автоматически как результат приведенных выше предложений.



Блокировки таблиц (TM)


Транзакция запрашивает блокировку таблицы, когда таблица модифицируется следующими предложениями: INSERT, UPDATE, DELETE, SELECT с фразой FOR UPDATE, либо блокируется предложением LOCK TABLE. Блокировка таблицы может удерживаться в одном из следующих режимов: разделяемая для строк (RS), монопольная для строк (RX), разделяемая для таблицы (S), разделяемая для строк монопольная (SRX) и монопольная(X). Степень ограничения доступа, налагаемая блокировкой, определяет, какие режимы блокировок по этой же таблице могут быть получены другими одновременными транзакциями.



Динамический SQL в Oracle


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

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

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



Домен защиты


Каждый пользователь имеет ДОМЕН ЗАЩИТЫ - набор свойств,  которые определяют такие вещи, как:

·   действия (привилегии и роли), доступные пользователю

·   квоты табличных пространств (доступной дисковой памяти)

·   лимиты на системные ресурсы (например, время процессора) для данного пользователя

Каждое  свойство,  вносящее  вклад  в домен защиты пользователя, обсуждается ниже.



Export


Иногда можно обнаружить, что вы не сделали в свое время то, в чем сейчас остро нуждаетесь. Возьмем, например, утилиты Import и Export. Утилита Export — это самый удобный способ застраховаться от возможных неприятностей. Экспорт — это универсальная утилита, поставляемая корпорацией Oracle. При всей заложенной в ней гибкости ею довольно легко пользоваться на основе обширного списка параметров. Разнообразие параметров дает возможность воспользоваться утилитой Export для решения сложных проблем управления данными.  Утилита Export может записывать файлы операционной системы, которые затем можно перемещать в другую операционную систему или версию Oracle.

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

user_segments для оценки необходимого дискового пространства.

В следующем коде показан пример использования утилиты Export:

exp userid=system/manager OWNER=scott... [прочие опции}



Файлы данных


Табличное пространство  в базе  данных ORACLE  состоит из одного или  нескольких   физических  ФАЙЛОВ   ДАННЫХ.   Файлы   данных, ассоциированные  с  табличным  пространством,  хранят все данные этого  табличного   пространства.   Любой   файл  данных   может ассоциироваться только с одним табличным пространством и  только с одной базой данных. При  создании  файла  данных  для табличного пространства ORACLE распределяет ему  указанное количество  дисковой памяти.   Когда файл    данных    создается,    операционная    система    несет ответственность  за  очистку  старой  информации  и за установку должных режимов доступа к файлу, прежде чем он будет распределен ORACLE.   Если   файл  велик,   этот  процесс     может потребовать значительного времени. Поскольку  первым  табличным  пространством  в любой базе данных всегда является  SYSTEM, первые  файлы данных  любой базы данных автоматически распределяются  табличному пространству  SYSTEM во время создания базы данных.



Форсированный запуск экземпляра


Форсированный запуск, описанный ниже, следует применять ТОЛЬКО в следующих случаях:

·       Текущую работающую инстанцию не удается закрыть с помощью опций Normal или Immediate меню Shut Down (или эквивалентных опций предложения SHUTDOWN)

·       Экземпляр не удается запустить обычным способом

Если вы попали в такую ситуацию, обычно удается решить проблему путем запуска нового экземпляра в форсированном режиме, используя одну из следующих опций SQL*DBA:

·       переключатель Force в диалоговом окне Start Up Instance

·       команду STARTUP с опцией FORCE

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



Глобальная область системы (SGA)


ГЛОБАЛЬНАЯ  ОБЛАСТЬ  СИСТЕМЫ  (SGA)  -  это  область памяти разделяемой между процессами. Область  SGA и  фоновые  процессы  ORACLE  составляют инстанцию ORACLE.  SGA  распределяется  при  запуске  инстанции и освобождается при закрытии инстанции. Для  оптимальной производительности  SGA  должна  быть  максимально большой (пока  позволяет  реальная  память),  чтобы  держать  как  можно больше данных в памяти и минимизировать дисковые операции.  Информация, хранящаяся  в  SGA,  подразделяется  на несколько типов структур памяти, включая: буфера базы данных, буфера журнала повторения  и разделяемый  пул.  Эти  области  имеют  фиксированные размеры и создаются при запуске инстанции. Буферный кэш базы данных  БУФЕРА БАЗЫ ДАННЫХ  в SGA   хранят    наиболее   недавно  использовавшиеся  блоки  данных  из  базы  данных; все множество буферов базы  данных в  инстанции составляет БУФЕРНЫЙ КЭШ БАЗЫ ДАННЫХ.



Групповые обозначения для опций аудита


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



Import


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

 



 Import и Export


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

·   Хранение данных в файлах операционной системы для архивирования

·   Выборочное резервное копирование частей базы данных

·   Перемещение данных из одной пользовательской схемы Oracle в другую

·   Перемещение данных с одной аппаратной платформы или операционной системы в другую

·   Экономия пространства и повышение производительности за счет уменьшения фрагментации

Работа с утилитами Import и Export весьма проста. Утилита Export записывает информацию о табли­цах или объектах базы данных, такую как операторы создания таблицы, операторы создания индекса, разрешения на таблицу, информация о размерах и т.д., а также данные из самих таблиц Oracle. Затем утилита Export сохраняет эту информацию в именованных файлах операционной системы. Файлы операционной системы, создаваемые утилитой Export, известны как файлы дампа. Файлы дампа, которые представле­ны в двоичном формате Oracle, применяются главным образом только в утилите Import. Можно назвать Файл дампа любым именем, допустимым в операционной системе. Если вы не укажите имя выходного файла для утилиты Export, то по умолчанию будет принято имя EXPDAT.DMP.

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



INTERNAL и незащищенные соединения


Если используется незащищенное соединение(как большинство сетевых соединений), то ДОЛЖНО  использовать пароль  для  INTERNAL,  для последующего подключения в режиме INTERNAL;  это требование  подразумевает,  что  в  системе  должен быть установлен пароль для INTERNAL.

В некоторых О.С. можно либо включить,  либо полностью отключить возможность соединений CONNECT INTERNAL  для незащищенных  соединений. Выбор  делается  во   время инсталляции  ORACLE,  и  может  быть изменен позднее.



Использование файла параметров


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



Использование пароля для INTERNAL


 Некоторые  операционные  системы  позволяют устанавливать пароль для соединений  в режиме INTERNAL. Можно установить пароль для INTERNAL во время инсталляции сервера ORACLE, Oracle  предоставляет утилиту  для управления этим паролем (создания, изменения и удаления его). 



Явные блокировки данных


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

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

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

 

 



Экстенты


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

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



Конверсия и эскалация блокировок данных


ORACLE автоматически  конвертирует блокировку  таблицы из  более слабой  в   необходимую  более   строгую  степень   ограничений. Например,  предположим,  что  транзакция  использует предложение SELECT  с  фразой  FOR  UPDATE,  чтобы  заблокировать  строки  в таблице.   Как  следствие,  она  получает монопольные блокировки строк  и  разделяемую  для  строк  блокировку таблицы.  Если эта транзакция позднее обновляет одну или несколько  заблокированных строк, блокировка таблицы автоматически конвертируется из режима RS в режим RX.

ORACLE никогда не прибегает к эскалации блокировок, когда СУБД автоматически заменяет многочисленные блокировки, полученные на одном уровне другой блокировкой на более высоком уровне.



Многоверсионная модель согласованности данных.


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

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

Ø     Транзакции read-only – могут содержать только запросы и не могут содержать никаких предложений DML (языка манипулирования данными). В течение транзакции её доступны данные, которые были подтверждены к моменту её начала.

Ø     Монопольные блокировки таблиц и строк. Если повторяемость чтений необходимо обеспечить в транзакциях, содержащих предложения DML, транзакция может явно запросить разделяемые блокировки по таблицам или монопольные блокировки по тем строкам, которые будут считываться неоднократно.

Где:

DDL  – Data Definition Language – язык содержащий набор операторов для определения данных.

DML – Data Modifying Language – язык содержащий набор операторов для модификации данных.

По умолчанию Oracle автоматически блокирует строки, на которые воздействуют операторы INSERT, UPDATE или DELETE; причём блокируются только те строки, на которые фактически оказано воздействие, а не вся таблица или весь блок данных.

Назначение блокировок данных (блокировок DML) - защитить данные таблицы, гарантируя их целостность при одновременном доступе к данным нескольких пользователей. Блокировки данных предотвращают деструктивное взаимодействие одновременных конфликтующих операций DML и операций DDL. Операции DML могут получать блокировки на двух различных уровнях: для конкретных строк и для целых таблиц.



Монопольные блокировки таблиц (X)


Эта блокировка вводит самый ограничительный режим, который обеспечивает транзакции, удерживающей эту блокировку по таблице, возможность монопольной записи в таблицу. Эта блокировка запрашивается для таблицы следующим предложением LOCK TABLE таблица IN EXCLUSIVE MODE;

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



Монопольные для строк блокировки таблиц (RX)


Эта блокировка обычно указывает, что транзакция, удерживающая блокировку по таблице, уже выполнила одно или несколько обновлений в строках таблицы. Эта блокировка автоматически запрашивается для ТАБЛИЦЫ, модифицируемой следующими предложениями:

·       INSERT INTO таблица ...;

·       UPDATE таблица ...;

·       DELETE FROM таблица ...;

·       LOCK TABLE таблица IN ROW EXCLUSIVE MODE;

Блокировка RX, удерживаемая транзакцией, запрещает другим транзакциям вручную блокировать таблицу для монопольного чтения или записи; поэтому другие транзакции не могут одновременно использовать следующие предложения:

·       LOCK TABLE таблица IN SHARE MODE;

·       LOCK TABLE таблица IN SHARE EXCLUSIVE MODE;

·       LOCK TABLE таблица IN EXCLUSIVE MODE;



Назначение привилегий


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

·         Привилегии   могут   назначаться   пользователям    явно. Например, привилегия вставлять записи в таблицу EMP может быть явно назначена пользователю SCOTT.

·         Привилегии могут  назначаться РОЛЯМ  (именованным группам привилегий), а затем эта роль может быть назначена одному или  нескольким   пользователям.   Например,   привилегия вставлять записи в таблицу EMP может быть назначена  роли с именем CLERK,  а эта роль,  в свою очередь,  может быть назначена пользователям SCOTT и BRIAN.



Немедленный останов базы данных


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

·       Скоро произойдет отключение питания.

·       База данных или одно из ее приложений работает неверно.

·       Немедленный останов базы данных протекает следующим образом:

·       Обработка текущих предложений SQL от клиентов немедленно прекращается.

·       Все неподтвержденные транзакции откатываются. (Если есть длинные неподтвержденные транзакции, этот способ останова может оказаться достаточно продолжительным, несмотря на свое название.)

·       ORACLE не ждет отключения текущих соединенных пользователей; ORACLE неявно откатывает активные транзакции и разрывает все пользовательские соединения.

·       Очередной запуск базы данных может потребовать восстановления инстанции (которое ORACLE выполнит автоматически).

Для немедленного останова базы данных используйте одну из следующих опций SQL*DBA:

·       опцию Immediate меню Shut Down

·       команду SHUTDOWN с опцией IMMEDIATE



Необходимые предпосылки


Для создания новой базы данных вы должны иметь:

·       привилегии операционной системы, соответствующие полноправному администратору базы данных

·       достаточное количество памяти для запуска экземпляра ORACLE

·       достаточный объем дискового пространства на компьютере, выполняющем ORACLE



Объектно-ориентированные Базы Данных.


Направление объектно-ориентированных баз данных (ООБД) возникло сравнительно давно. Публикации появлялись уже в середине 1980-х. Однако наиболее активно это направление развивается в последние годы. С каждым годом увеличивается число публикаций и реализованных коммерческих и экспериментальных систем.



Объектно-ориентированные модели данных


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

В модели ООБД поддерживается множественное наследование классов на основе отношения супертип/подтип. В подклассе допускается добавление и/или переопределение атрибутов и методов. Возможные при множественном наследовании двусмысленности (по именованию атрибутов и методов) разрешаются либо путем переименования, либо путем явного указания источника наследования. Объект подкласса является объектом каждого суперкласса, на основе которого порожден данный подкласс.

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



Объектные привилегии


ОБЪЕКТНЫЕ   ПРИВИЛЕГИИ    позволяют   пользователям    выполнять конкретные действия  на конкретном  объекте.  Такова,  например, привилегия  удалять  строки  в  указанной  таблице.    Объектные  привилегии  назначаются  пользователям, так что они могут использовать приложения  базы данных  для выполнения  конкретных задач.



Обеспечение целостности базы данных


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

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

·       NOT NULL

·       PRIMARY KEY

·       UNIQUE KEY

·       FOREIGN KEY (REFERENCES)

·       CHECK

·       INDEX (ИНДЕКСЫ)

·       TRRIGERS и PROCEDURES



Обеспечение защиты базы данных


Защита в среде Oracle обеспечивается с помощью средств создания, изменения и уничтожения учётных записей пользователя базы данных Oracle (см. вопрос 15), а также с помощью привилегий (Grant, role), регулирующих возможность создавать и изменять объекты базы данных (см. вопрос 14).



Обязанности администратора базы данных (АБД)


Поскольку система баз данных ORACLE может быть весьма большой  и может иметь  много пользователей,  должно существовать  лицо или группа лиц,  управляющих этой  системой.  Такое  лицо называется администратором базы данных (АБД).

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



Общие понятия объектно-ориентированного подхода и их преломление в ООБД


В наиболее общей и классической постановке объектно-ориентированный подход базируется на концепциях:

·         объекта и идентификатора объекта;

·         атрибутов и методов;

·         классов;

·         иерархии и наследования классов.

                Объектный тип – это расширение типа, определяемого пользователем, позволяющее инкапсулировать методы с элементами данных в едином логическом модуле. Определение объектного типа служит в качестве шаблона, но не распределяет память. Объекты хранятся физически как строки или столбцы таблицы. Также в Oracle введены объекты трёх новых встроенных типов: объекты типа vary, типа ref, и ‘большие объекты’ типа LOB.

·         Объекты типа vary представляют собой один из примеров коллекции Oracle8, которая примерно соответствует массиву. Объекты этого типа полезны при обработке небольших коллекций в коде PL/SQL.

·         Объект типа ref  представляет собой указатель на объектный тип, определяемый пользователем.

·         Объект типа  LOB предназначен для работы с ‘большими’ объектами, такими как полные документы, видеоизображения, цифровые звукозаписи и т.д.

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

Каждый объект имеет состояние и поведение. Состояние объекта - набор значений его атрибутов. Поведение объекта - набор методов (программный код), оперирующих над состоянием объекта. Значение атрибута объекта - это тоже некоторый объект или множество объектов. Состояние и поведение объекта инкапсулированы в объекте; взаимодействие между объектами производится на основе передачи сообщений и выполнении соответствующих методов.



и тем же набором атрибутов


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

Допускается порождение нового класса на основе уже существующего класса - наследование. В этом случае новый класс, называемый подклассом существующего класса (суперкласса) наследует все атрибуты и методы суперкласса. В подклассе, кроме того, могут быть определены дополнительные атрибуты и методы. Различаются случаи простого и множественного наследования. В первом случае подкласс может определяться только на основе одного суперкласса, во втором случае суперклассов может быть несколько. При поддержании множественного наследования классы связаны в ориентированный граф с корнем, называемый решеткой классов. Объект подкласса считается принадлежащим любому суперклассу этого класса.

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

 


Очистка аудиторских записей из аудиторского журнала


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

DELETE FROM sys.aud$;

Если информация аудиторского журнала должна архивироваться для целей накопления истории, администратор защиты может скопировать соответствующие записи в нормальную таблицу базы данных или экспортировать аудиторскую таблицу в файл операционной системы. Удалять записи из аудиторского журнала базы данных может лишь пользователь SYS, т.е. пользователь, имеющий привилегию DELETE ANY TABLE (или пользователь, которому SYS передал привилегию DELETE по таблице SYS.AUD$).



Офлайновые файлы данных


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



Онлайновые и офлайновые табличные пространства


АБД может перевести любое  табличное пространство в базе  данных ORACLE   в   состояние   ОНЛАЙН   (т.е.   доступно)   или ОФЛАЙН (недоступно),   если   база   данных   открыта.     Единственным исключением  является  то,  что  табличное  пространство  SYSTEM всегда  находится  в  онлайне,  ибо  словарь  данных должен быть всегда доступен ORACLE. Обычное  состояние  табличного  пространства  -  онлайн, так что данные, содержащиеся в нем, доступны пользователям базы  данных. Однако  администратору  может  понадобиться  перевод  табличного пространства в офлайн по одной из следующих причин:

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

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

·         чтобы  сделать  приложение  вместе  с  его группой таблиц временно    недоступным    на   время    обновления  или сопровождения этого приложения

Когда  табличное  пространство  переводится  в офлайн, ORACLE не позволяет последующим  предложениям  SQL  обращаться к объектам этого  табличного  пространства.  

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



Оператор подготовки


Во время выполнения оператора PREPARE символьная строка, содержащаяся в host-string-variable, передается компилятору SQL, который обрабатывает таким же образом, как если бы получил в статике. Построенный при выполнении оператора PREPARE код остается действующим до конца транзакции или до повторного выполнения данного оператора PREPARE в пределах этой же транзакции.



 Оператор получения описания подготовленного оператора


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



Оператор выполнения подготовленного оператора


Оператор EXECUTE служит для выполнения ранее подготовленного оператора SQL типа "N" (не требующего применения курсора) или для совмещенной подготовки и выполнения такого оператора.

Для выполнения подготовленного оператора служит первый вариант оператора EXECUTE. Число и типы фактических параметров должны соответствовать числу и типам формальных параметров подготовленного оператора.



Основные компоненты SQL*Loader


Для утилиты SQL*Loader необходимы входные данные 2-ух типов: внешние данные, которые могут находиться на диске или ленте, и управляющая информация (содержащаяся в управляющем файле), которая описывает характеристики входных данных. Выходные данные, часть которых является необязательной, включает таблицы Oracle, журналы, файлы некорректных записей и файлы отвергнутых записей.



Останов базы данных


Чтобы инициировать останов базы данных, используйте либо меню Shut Down, либо команду SHUTDOWN в SQL*DBA.



Останов базы данных в нормальных обстоятельствах


Нормальный останов базы данных протекает следующим образом:

·       После получения команды на останов не допускаются новые соединения с базой данных.

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

·       Очередной запуск базы данных не потребует никаких процедур восстановления инстанции.

Для останова базы данных в нормальных обстоятельствах используйте одну из следующих опций SQL*DBA:

·       опцию Normal меню Shut Down

·       команду SHUTDOWN с опцией NORMAL



Отношения между сегментами, экстентами и блоками данных


ORACLE распределяет пространство базы данных для всех ее данных. Единицами логического распределения являются блоки данных, экстенты и сегменты.

 



Подключение в режиме INTERNAL


Запуск и останов  базы  данных  -  это мощные административные  возможности. В угоду поддержания корректной работоспособности базы данных, функции(команды STARTUP или SHUTDOWN) остановки и запуска разрешены, только для администратора подключенного к  ORACLE в режиме NTERNAL(CONNECT INTERNAL), а для возможности подключиться в режиме NTERNAL, вы должны соотвествовать одному из ниже следующих условий:

·         Ваше учетное имя в операционной системе имеет  привилегии операционной  системы,  позволяющие  вам  соединяться   в режиме INTERNAL.

·         Вы имеете полномочия соединяться в режиме INTERNAL.

·         Ваша база данных имеет  пароль для INTERNAL, и  вы знаете этот пароль.

Все эти требования образуют дополнительный слой защиты, препятствующий несанкционированному  запуску или остановке баз данных ORACLE.  Для  систем,   имеющих   пароль   для   INTERNAL,    существуют  дополнительные, ниже описываемые соображения.



Пользователи базы данных и схемы


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

С каждым именем пользователя ассоциирована СХЕМА(SCHEMA), имеющая  такое же имя. SCHEMA(схема) - это логическая коллекция объектов базы данных (таблиц, представлений,  последовательностей,  синонимов,   индексов, кластеров, процедур, функций, пакетов и связей баз данных).   По умолчанию,  каждый  пользователь  базы  данных  создает  и имеет доступ ко всем объектам в соответствующей схеме. Команда  CREATE SCHEMA  полезна для гарантирования успешного создания  всех нужных объектов  и грантов за  одну  операцию;  если  индивидуальный  объект  внутри  этой операции не  может быть  создан, все  предложение откатывается и аннулируются   все   его   результаты.



Представления словаря данных.


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



PRIMARY KEY (первичный ключ)


UNIQUE (уникальный). Ограничение UNIQUE используется для определения того, что значения в столбце не должно повторяться в другой строке этой таблицы, определяет вторичный ключ для таблицы. Это столбец или группа столбцов, которые можно использовать как уникальную идентификацию строки. Никакие две строки не могут иметь одинаковые значения для столбца или столбцов ключа UNIQUE. Столбцы для ограничения UNIQUE не обязательно NOT NULL. Можно сформировать ограничение таблицы, указав, что в  таблице не должна повторяться комбинация столбцов. К примеру: можно в начале объявить стандартно emp_id number(5), person_id date а под конце объявить что:  unique(emp_id, person_id) – и получиться, что сочетание  значений этих полей, должно быть уникальным в каждой строке.

FOREIGN KEY (внешний ключ).

FOREIGN KEY, устанавливает отношение целостности между таблицами. Оно требует, чтобы столбец или набор столбцов в одной таблице совпадал с первичным или вторичным ключом другой таблицы. С момента создания внешнего ключа ссылающегося на первичный ключ некой таблицы удаление таблицы будет – запрещено. И обойти это ограничение можно только удалив ограничение. Внешние ключи могут быть именованные или неименованные.

CHECK.

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

ИНДЕКСЫ

(INDEX).

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

TRRIGERS(Триггеры) – с программный элемент хранимый в БД выполняемый автоматически, в определенных ситуациях, не имеющий входных или выходных параметров, что в конечном итоги и является причиной невозможности вызвать его явно, непосредственно, его вызывает только сама база данных Oracle. Выходные данные триггера должны быть также применимы к БД, а не возвращены вызывающей программе или отображены на экране. Процедуры и функции расписаны в вопросе № 6.Схемы и объекты схемы

Таким образом, целостность базы данных может быть рассмотрена на трех уровнях:

1.       На уровне типа данных (т.е. соответствия  типов данных)

2.       На уровне ключей (к примеру, соответствие первичных и внешних ключей)

3.       На уровне триггеров, процедур и/или функций(к примеру, триггера отвечают только за свои области данных).

 



Пример работы Oracle.


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

1.       ЭКЗЕМПЛЯР - работает на том компьютере, на котором выполняется ORACLE (часто называемом ХОСТОМ или СЕРВЕРОМ БАЗЫ ДАННЫХ, информацию о текущем состоянии сервера БД, экземпляре, можно получить по V$INSTANCE )

ЭКЗЕМПЛЯР (INSTANCE она же инстанция) СУБД Oracle – это набор серверных процессов, объединенных единой глобальной системной областью и связанных с общим набором совместно используемых файлов данных. К примеру если на сервере работает две независимые базы данных, и каждая обладает своей глобальной системной областью и независимым набором сервисных процессов то у нас будет два экземпляра базы данных Oracle; каждому из экземпляров присваевается системный идентификатор SID (system identifier)

2.       Компьютер, используемый для приложений (ЛОКАЛЬНАЯ МАШИНА или РАБОЧАЯ СТАНЦИЯ КЛИЕНТА) выполняет приложение в рамках пользовательского процесса. Приложение-клиент пытается установить соединение с сервером, используя подходящий драйвер SQL*Net.

3.       Сервер также выполняет соответствующий драйвер SQL*Net. Сервер обнаруживает запрос на соединение от приложения и создает (выделенный) процесс сервера от имени пользовательского процесса.

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

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


6.       Процесс сервера извлекает все необходимые значения данных из файла данных (таблицы) или получает их из SGA.
7.       Процесс сервера модифицирует данные в SGA. Процесс DBWR записывает модифицированные данные на диск для постоянного хранения, если сочтет это необходимым. Поскольку транзакция подтверждена, процесс LGWR немедленно регистрирует транзакцию в онлайновом файле журнала повторения.
8.       Если транзакция успешна, процесс сервера посылает сообщение через сеть приложению. В противном случае передается соответствующее сообщение об ошибке.
9.       Во время всей описанной процедуры работают другие фоновые процессы, наблюдая за условиями, которые могут потребовать вмешательства. Кроме того, сервер базы данных управляет транзакциями других пользователей и предотвращает соперничество между транзакциями, запрашивающими одни и те же данные.
Эти шаги описывают лишь самый основной уровень операций, которые  осуществляет ORACLE.
 

Примеры останова базы данных


Эта секция приводит примеры останова базы данных и инстанции через интерфейс меню и команды SQL*DBA. Во всех примерах предполагается, что АБД уже подключен как INTERNAL.

Меню Shut Down останавливает базу данных.

Команда SHUTDOWN эквивалентна меню Shut Down. Например, следующее предложение является командным эквивалентом меню Shut Down.



Привилегии


ПРИВИЛЕГИЯ(PRIVILEGE) -  это право  выполнять определенный  тип предложений SQL. Некоторые примеры привилегий включают:

·   право соединяться с базой данных (создавать сессию)

·   право создавать таблицу в вашей схеме

·   право выбирать строки из чьей-либо таблицы

·   право выполнять чью-либо хранимую процедуру

Привилегии  в s базе  данных  ORACLE  могут быть разделены на две различные   категории:   системные   привилегии   и    объектные привилегии.



Привилегии объектного уровня.


Если пользователь Oracle владеет объектом наподобие таблицы, другим пользователям Oracle может быть разрешено использовать этот объект путём предоставления им одной или нескольких привилегий объектного уровня. Например, если пользователь user_1 намеревается позволить пользователю user_2 использовать его таблицу, но только для вставки и обновления строк с помощью команд INSERT или UPDATE, то пользователю user_2 могут быть даны привилегии UPDATE и INSERT.

·         SELECT – позволяет другому пользователю Oracle сделать запрос к данным таблицы.

·         INSERT – позволяет другому пользователю Oracle вставлять строки в таблицу с помощью команды INSERT.

·         UPDATE – позволяет пользователю Oracle обновлять строки в таблице вне зависимости от того, были ли эти строки созданы этим пользователем или нет. Привилегия UPDATE

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

·         EXECUTE – даёт возможность пользователю Oracle, владеющему процедурным кодом базы данных (процедурами, функциями или пакетами), позволить другому пользователю Oracle вызывать его процедурные объекты.

·         ALTER – даёт возможность пользователю Oracle изменить определение таблицы или последовательности.

·         INDEX – позволяет пользователю Oracle создавать индексы на таблицы владельца.

·         REFERENCES – позволяет пользователю Oracle обращаться к объектам другого пользователя.

В конце оператора GRANT для привилегии объектного уровня может быть определена фраза WITH GRANT OPTION, которая позволяет пользователю Oracle получившему эту привилегию, передать её другому пользователю Oracle.


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

·         USER_TAB_PRIVS

·         USER_COL_PRIVS

·         TABLE_PRIVILEGES

·         COLUMN_PRIVILEGES

Представления словаря данных, начинающиеся с ALL_ и DBA_.

Роль(role) – совокупность системных привилегий и привилегий объектного уровня, которые были сгруппированы под одним именем, чтобы облегчить предоставление и отмену этих привилегий. Когда пользователю даётся роль, он получает все привилегии, связанные с ней.

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

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

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

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

Вместе с новой базой данных автоматически создаются пять ролей. Это – CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE и IMP_FULL_DATABASE. Первые три предусмотрены для совместимости с предыдущими версиями программного обеспечения Oracle и обычно не требуются.


Привилегии системного уровня.


Существует две основные группы привилегий системного уровня: имеющие в составе имён слово ANY и не имеющие его. Привилегии со словом ANY в имени позволяют пользователю

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

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

Привилегии системного уровня могут быть также предоставлены пользователю Oracle с использованием WITH ADMIN OPTION в конце оператора GRANT. Это позволяет пользователю Oracle, получившему такую системную привилегию, передавать её любому другому пользователю Oracle. По сути дела он становится ещё одним администратором этой привилегии.

Для изъятия привилегии или роли системного уровня у пользователя Oracle, можно использовать команду REVOKE. Ею можно определить сразу несколько системных привилегий и имён пользователей.

На любые объекты, созданные в то время, когда действовала эта привилегия, её отмена не повлияет. Кроме того, если системная привилегия изъята у пользователя PUBLIC, не будет затронут другой пользователь, которому эта системная привилегия была предоставлена непосредственно.

Любой пользователь предоставивший системную привилегию посредством WITH ADMIN OPTION, может предоставить эту системную привилегию другому пользователю Oracle – он, по сути дела, является дополнительным администратором этой системной привилегии.