Словарь данных каждой базы данных содержит таблицу с именем 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 один и тот же, независимо от того, содержит ли блок данные таблицы, индекса или кластера.
Монопольная блокировка данных запрашивается для индивидуальной строки от имени транзакции, если эта строка модифицируется одним из следующих предложений: INSERT, UPDATE, DELETE или SELECT с фразой FOR UPDATE. Строка всегда блокируется монопольно, так что другие пользователи не могут модифицировать эту строку до тех пор, пока транзакция, удерживающая блокировку, не будет подтверждена или отменена. Блокировки строк всегда запрашиваются ORACLE автоматически как результат приведенных выше предложений.
Транзакция запрашивает блокировку таблицы, когда таблица модифицируется следующими предложениями: INSERT, UPDATE, DELETE, SELECT с фразой FOR UPDATE, либо блокируется предложением LOCK TABLE. Блокировка таблицы может удерживаться в одном из следующих режимов: разделяемая для строк (RS), монопольная для строк (RX), разделяемая для таблицы (S), разделяемая для строк монопольная (SRX) и монопольная(X). Степень ограничения доступа, налагаемая блокировкой, определяет, какие режимы блокировок по этой же таблице могут быть получены другими одновременными транзакциями.
Описанный в стандарте SQL набор операторов SQL предназначен для встраивания в программу на обычном языке программирования. Поэтому в этом наборе перемешаны операторы "истинного " реляционного языка запросов (например оператор удаления из таблицы части строк, удовлетворяющих заданному условию) и операторы работы с курсорами, позволяющими обеспечить построчный доступ к таблице-результату запроса.
В диалоговом режиме набор операторов SQL и их синтаксис должен быть несколько другим. Весь вопрос состоит в том, как реализовывать такую диалоговую программу. Правила встраивания стандартного SQL в программу на обычном языке программирования предусматривают, что вся информация, касающаяся операторов SQL, известна (за исключением значений переменных, используемых в качестве констант в операторах SQL). Не предусмотрены стандартные средства компиляции с последующим выполнением операторов, которые становятся известными только во время выполнения. Поэтому, опираясь только на стандарт, невозможно реализовать диалоговый монитор взаимодействия с БД на языке SQL или другую прикладную программу, в которой текст операторов SQL возникает во время выполнения, т. е. фактически так или иначе стандарт необходимо расширять.
Один из возможных путей расширения состоит в использовании специальной группы операторов, обеспечивающих динамическую компиляцию (во время выполнения прикладной программы) базового подмножества операторов SQL и поддерживающих их корректное выполнение. В дополнительный набор операторов, поддерживающих динамическую компиляцию базовых операторов SQL, входят операторы: PREPARE, DESCRIBE и EXECUTE.
Каждый пользователь имеет ДОМЕН ЗАЩИТЫ - набор свойств, которые определяют такие вещи, как:
· действия (привилегии и роли), доступные пользователю
· квоты табличных пространств (доступной дисковой памяти)
· лимиты на системные ресурсы (например, время процессора) для данного пользователя
Каждое свойство, вносящее вклад в домен защиты пользователя, обсуждается ниже.
Иногда можно обнаружить, что вы не сделали в свое время то, в чем сейчас остро нуждаетесь. Возьмем, например, утилиты 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 и фоновые процессы ORACLE составляют инстанцию ORACLE. SGA распределяется при запуске инстанции и освобождается при закрытии инстанции. Для оптимальной производительности SGA должна быть максимально большой (пока позволяет реальная память), чтобы держать как можно больше данных в памяти и минимизировать дисковые операции. Информация, хранящаяся в SGA, подразделяется на несколько типов структур памяти, включая: буфера базы данных, буфера журнала повторения и разделяемый пул. Эти области имеют фиксированные размеры и создаются при запуске инстанции. Буферный кэш базы данных БУФЕРА БАЗЫ ДАННЫХ в SGA хранят наиболее недавно использовавшиеся блоки данных из базы данных; все множество буферов базы данных в инстанции составляет БУФЕРНЫЙ КЭШ БАЗЫ ДАННЫХ.
Для удобства спецификации часто встречающихся групп связанных опций аудита предоставляются специальные обозначения. Эти обозначения сами не являются опциями; они просто позволяют указать одним словом целую группу опций в предложении AUDIT или NOAUDIT.
Утилита Import противоположна утилите Export. Она отвечает за чтение экспортных файлов в целях воссоздания объектов базы данных, а также любого состояния, в котором они экспортировались первоначально. Утилита Import может также преобразовывать данные предоставленные с разных платформ к примеру с UNIX машины в ASCII кодах, на мейнфрем с кодировкой EBCDIC и наоборот, что позволяет перемещать данные с одной платформы на другую. Утилита Import может работать в интерактивном режиме или в режиме командной строки. При использовании интерактивного режима утилита Import запрашивает у пользователя параметры, необходимые для выполнения импорта. Обычно проще задать параметры в командной строке или в файле параметров. Утилита 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.
В некоторых О.С. можно либо включить, либо полностью отключить возможность соединений CONNECT INTERNAL для незащищенных соединений. Выбор делается во время инсталляции ORACLE, и может быть изменен позднее.
Можно использовать файл параметров как для утилиты Export, так и для утилиты Import. Файл параметров помогает выполнять операции импорта и экспорта, обеспечивая при этом непротиворечивость и простоту. Его удобно использовать для экспорта в ночное время. Файлы параметров гарантируют целостный экспорт для полной уверенности в том, что все необходимые таблицы действительно будут экспортированы. Можно вызывать эти утилиты, задавая параметры в командной строки или в сценарии операционной системы, но использование командной строки может не позволить задать все необходимые параметры. Сценарий export_ts записывает необходимый ему файл параметров. Имена таблиц в кавычках являются чувствительными к регистру.
Некоторые операционные системы позволяют устанавливать пароль для соединений в режиме 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 могут получать блокировки на двух различных уровнях: для конкретных строк и для целых таблиц.
Эта блокировка вводит самый ограничительный режим, который обеспечивает транзакции, удерживающей эту блокировку по таблице, возможность монопольной записи в таблицу. Эта блокировка запрашивается для таблицы следующим предложением LOCK TABLE таблица IN EXCLUSIVE MODE;
Все блокировки данных, получаемые транзакцией, включая все блокировки строк и таблиц, освобождаются при подтверждении или откате этой транзакции. Блокировки данных, полученные после точки сохранения, освобождаются, если транзакция откатывается к этой точке сохранения.
Эта блокировка обычно указывает, что транзакция, удерживающая блокировку по таблице, уже выполнила одно или несколько обновлений в строках таблицы. Эта блокировка автоматически запрашивается для ТАБЛИЦЫ, модифицируемой следующими предложениями:
· 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 необходимы входные данные 2-ух типов: внешние данные, которые могут находиться на диске или ленте, и управляющая информация (содержащаяся в управляющем файле), которая описывает характеристики входных данных. Выходные данные, часть которых является необязательной, включает таблицы Oracle, журналы, файлы некорректных записей и файлы отвергнутых записей.
Чтобы инициировать останов базы данных, используйте либо меню Shut Down, либо команду SHUTDOWN в SQL*DBA.
Нормальный останов базы данных протекает следующим образом:
· После получения команды на останов не допускаются новые соединения с базой данных.
· Прежде чем остановить базу данных, ORACLE ждет отсоединения от нее всех текущих соединенных пользователей.
· Очередной запуск базы данных не потребует никаких процедур восстановления инстанции.
Для останова базы данных в нормальных обстоятельствах используйте одну из следующих опций SQL*DBA:
· опцию Normal меню Shut Down
· команду SHUTDOWN с опцией NORMAL
ORACLE распределяет пространство базы данных для всех ее данных. Единицами логического распределения являются блоки данных, экстенты и сегменты.
Запуск и останов базы данных - это мощные административные возможности. В угоду поддержания корректной работоспособности базы данных, функции(команды STARTUP или SHUTDOWN) остановки и запуска разрешены, только для администратора подключенного к ORACLE в режиме NTERNAL(CONNECT INTERNAL), а для возможности подключиться в режиме NTERNAL, вы должны соотвествовать одному из ниже следующих условий:
· Ваше учетное имя в операционной системе имеет привилегии операционной системы, позволяющие вам соединяться в режиме INTERNAL.
· Вы имеете полномочия соединяться в режиме INTERNAL.
· Ваша база данных имеет пароль для INTERNAL, и вы знаете этот пароль.
Все эти требования образуют дополнительный слой защиты, препятствующий несанкционированному запуску или остановке баз данных ORACLE. Для систем, имеющих пароль для INTERNAL, существуют дополнительные, ниже описываемые соображения.
Каждая база данных ORACLE имеет список имен пользователей. Чтобы получить доступ к базе данных, пользователь должен использовать приложение базы данных, и попытаться соединиться с базой данных, предоставив действительное имя пользователя. С каждым именем пользователя связан пароль, чтобы предотвратить несанкционированный доступ.
С каждым именем пользователя ассоциирована СХЕМА(SCHEMA), имеющая такое же имя. SCHEMA(схема) - это логическая коллекция объектов базы данных (таблиц, представлений, последовательностей, синонимов, индексов, кластеров, процедур, функций, пакетов и связей баз данных). По умолчанию, каждый пользователь базы данных создает и имеет доступ ко всем объектам в соответствующей схеме. Команда CREATE SCHEMA полезна для гарантирования успешного создания всех нужных объектов и грантов за одну операцию; если индивидуальный объект внутри этой операции не может быть создан, все предложение откатывается и аннулируются все его результаты.
Словарь данных - не только центральное хранилище в каждой базе данных ORACLE. Это также важный инструмент для всех пользователей, от конечных пользователей до разработчиков приложений и администраторов базы данных. Даже начинающие пользователи могут извлекать выгоду из понимания и использования словаря данных.
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, при которой пользователь и ассоциированный с ним процесс сервера находятся на разных машинах, соединенных через сеть.
1. ЭКЗЕМПЛЯР - работает на том компьютере, на котором выполняется ORACLE (часто называемом ХОСТОМ или СЕРВЕРОМ БАЗЫ ДАННЫХ, информацию о текущем состоянии сервера БД, экземпляре, можно получить по V$INSTANCE )
ЭКЗЕМПЛЯР (INSTANCE она же инстанция) СУБД Oracle – это набор серверных процессов, объединенных единой глобальной системной областью и связанных с общим набором совместно используемых файлов данных. К примеру если на сервере работает две независимые базы данных, и каждая обладает своей глобальной системной областью и независимым набором сервисных процессов то у нас будет два экземпляра базы данных Oracle; каждому из экземпляров присваевается системный идентификатор SID (system identifier)
2. Компьютер, используемый для приложений (ЛОКАЛЬНАЯ МАШИНА или РАБОЧАЯ СТАНЦИЯ КЛИЕНТА) выполняет приложение в рамках пользовательского процесса. Приложение-клиент пытается установить соединение с сервером, используя подходящий драйвер SQL*Net.
3. Сервер также выполняет соответствующий драйвер SQL*Net. Сервер обнаруживает запрос на соединение от приложения и создает (выделенный) процесс сервера от имени пользовательского процесса.
4. Пользователь выполняет предложение SQL и подтверждает свою транзакцию. Например, пользователь изменяет данные в строке таблицы.
5. Процесс сервера принимает это предложение и проверяет разделяемый пул, чтобы отыскать в нем разделяемую область SQL, содержащую идентичное предложение SQL. Если такая разделяемая область SQL найдена, процесс сервера проверяет пользовательские привилегии доступа к запрашиваемым данным и использует существующую разделяемую область SQL для обработки предложения; если нет, то для предложения распределяется новая разделяемая область SQL, в которой осуществляется разбор и исполнение предложения.
Эта секция приводит примеры останова базы данных и инстанции через интерфейс меню и команды 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.
Существует две основные группы привилегий системного уровня: имеющие в составе имён слово ANY и не имеющие его. Привилегии со словом ANY в имени позволяют пользователю
Привилегии системного уровня могут быть даны либо непосредственно пользователю Oracle, либо роли, которая будет назначена пользователю Oracle.
Если нужно будет дать привилегии системного уровня каждому пользователю Oracle (включая любых пользователей Oracle, которые могут быть созданы в будущем), можно дать системную привилегию пользователю PUBLIC, что означает любого пользователя Oracle.
Привилегии системного уровня могут быть также предоставлены пользователю Oracle с использованием WITH ADMIN OPTION в конце оператора GRANT. Это позволяет пользователю Oracle, получившему такую системную привилегию, передавать её любому другому пользователю Oracle. По сути дела он становится ещё одним администратором этой привилегии.
Для изъятия привилегии или роли системного уровня у пользователя Oracle, можно использовать команду REVOKE. Ею можно определить сразу несколько системных привилегий и имён пользователей.
На любые объекты, созданные в то время, когда действовала эта привилегия, её отмена не повлияет. Кроме того, если системная привилегия изъята у пользователя PUBLIC, не будет затронут другой пользователь, которому эта системная привилегия была предоставлена непосредственно.
Любой пользователь предоставивший системную привилегию посредством WITH ADMIN OPTION, может предоставить эту системную привилегию другому пользователю Oracle – он, по сути дела, является дополнительным администратором этой системной привилегии.