7. СУБД ORACLE7 : общие положения

7.1. Структура базы данных ORACLE7.

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

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

Таблицы: стандартные логические единицы хранения

ORACLE7 хранит и представляет все данные в таблицах. Таблица - это массив связанной информации, то есть записей данных, имеющих одинаковые атрибуты. Атрибутами таблицы являются ее столбцы, а записи данных образуют строки таблицы. Каждый столбец таблицы или атрибут содержит конкретный тип данных. Когда пользователь создает таблицу. он задает для каждого столбца метку и тип данных. ORACLE7 поддерживает множество различных типов данных например: char, number date, long и другие.

Табличные области и файлы данных: стандартные физические единицы хранения ORACLE7.

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

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

Область SYSTEM : табличная область для всех таблиц

Каждая база данных ORACLE7 имеет по крайней мере одну табличную область - область SYSTEM. При создании базы данных администратор задает для нее имена и размеры начальных файлов данных. Эти файлы образуют на диске физическую память для табличной области SYSTEM. ORACLE7 использует табличную область SYSTEM для хранения словаря данных . Словарь данных - набор внутренних системных таблиц, содержащих все виды информации о базе данных. Например: имеются таблицы словаря данных с информацией о таблицах табличных областях и файлах данных СУБД.

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

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

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

•  Рассмотрим некоторые компоненты системы базы данных ORACLE7.

Представления: способы просмотра данных

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

  Рис.3 Пример реализации представления.

Представление можно рассматривать как хранимый запрос (оно определяется с помощью запроса). Например :

CREATE VIEW reorder AS

SELECT id, onhand, reorder FROM stock

WHERE onhand<reorder

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

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

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

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

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

Целостность домена: каждое значение поля должно быть элементом домена.

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

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

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

Целостность вcей таблицы: обеспечение уникальности каждой строки.

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

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

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

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

CREATE TABLE customer

(id NUMBER(5,0) PRIMARY KEY,

lastname CHAR(50) NOT NULL,

firstname CHAR(50) NOT NULL,

phone CHAR(20),

UNIQUE (lastname,firstname),

CHECK (state IN

(‘AL','AK','AZ','OH','SC','WV'))) -- сокращенные названия штатов

CREATE TABLE orders

(customerid NUMBER(5,0) NOT NULL,

orderdate DATE NOT NULL,

shipdate DATE

status CHAR(1),

CHECK (status IN (‘F','B')), --F— оплачено , В — долг

FOREIGN KEY (customerid) REFERENCES customer)

В данном примере ограничения NOT NULL, CHECK позволяют задать в таблице ограничения домена. Для определения первичного ключа и задания ограничений целостности таблицы разработчик должен описать целостность таблицы с помощью PRIMARY KEY. Для таблицы customer описывается также ограничение UNIQUE, которое обеспечивает уникальность имен/фамилий покупателей.

Ссылочная целостность: обеспечение синхронизации связанных таблиц.

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

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

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

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

Деловые правила: специальные правила целостности данных.

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

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

7.3. Управление доступом к данным в многопользовательской СУБД.

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

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

Это проблемы, но ORACLE7 решает эти проблемы. Рассмотрим как это он делает.

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

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

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

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

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

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

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

Как же Огасlе7 возвращает точные результаты, если он не устанавливает блокировки для запросов? Можно было бы полагать, что без блокировки строки для запросов конкурирующее с запросом обновление может дать для запроса неточный набор результатов.

Огасlе7 может обойтись без блокировок строк для запросов при сохранении точности результатов благодаря механизму выделения версий. Для каждого запроса ORACLE7 возвращает затребованную версию данных на текущий момент времени. На момент получения запросы Огасlе7 обеспечивает согласованность каждой строки в результате запроса.

Сегменты отката.

Используя хранимые в сегментах отката данные, Огасlе7 может создавать для запроса согласованные по чтению копии (наборы результатов) данных. Сегмент отката (или сегмент отмены транзакций) — это область памяти на диске, которую Оraclе7 использует для временного хранения старых значений данных, обновляемых транзакцией удаления или обновления строк. Если пользователь отменяет транзакцию, то Оraclе7 считывает присвоенный транзакции сегмент отката и возвращает измененные ею строки в исходное состояние. Кроме того, Оrасlе7 использует сегмент отката в механизме выделения версий. Если запросу требуются данные, которые в процессе его выполнения изменяются, то Оrасlе7 с помощью данных сегмента отката генерирует согласованный по чтению копию данных (заданный момент времени). Все это происходит автоматически.

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

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

Неужели кто угодно может войти в базу данных Оrасlе7 и начать использовать данные, читать табличную информацию и модифицировать ее? Конечно, нет! Если бы это было так, то пользователи могли бы видеть данные, которые для них не предназначаются (такие как заработная плата их начальника), а злоумышленники могли бы легко стереть или изменить данные по своему усмотрению (например, повысить зарплату самим себе). Одной из обязанностей сервера базы данных является обеспечение защиты всей информации СУБД. Независимо от того, хотите или нет защитить свои данные от глаз неуполномоченных пользователей или злоумышленников, защита является важной функцией базы данных. Для обеспечения защиты Оrасlе7 использует систему выборочного управления доступом зто означает, что администратор присваивает пропуска для всех зарегистрированных в базе данных пользователей и дает им полномочия на выполнение в базе данных конкретных операций с конкретными данными. Различные методы управления защитой Оraclе7 описываются в следующих разделах.

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

Доступ к базе данных Огасlе7 очень напоминает доступ к телефонной банковской системе. Во-первых, вам нужно получить общий доступ к базе данных. Чтобы предоставить кому-либо доступ к базе данных Оraclе7, администратор должен зарегистрировать его и создать в базе данных нового пользователя (определив его имя). Для обеспечения защиты доступа пароль должен соответствовать имени этого нового пользователя. Для подключения к базе данных пользователь должен ввести и имя, и пароль. Нового пользователя создает, например, следующий оператор SQL:

CREATE USER safеdorow IDENTIFID BY p1e

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

После получения пользователем доступа к базе данных Оraclе7 операции его в этой СУБД ограничивают другие средства контроля доступа.

Расширение и ограничение полномочий.

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

Система защиты Оraclе7 очень напоминает защиту телефонной банковской системы. Администратор может управлять всеми операциями с базой данных и доступом к данным, в том числе тем, какие пользователи могут создавать таблицы и представления, какие—создавать и модифицировать табличные области, а какие — считывать и модифицировать различные таблицы и представления базы данных. Это делается путем предоставления и отмены различных полномочий или прав доступа. Приведем примеры применяемых для этого команд SQL GRANT и REVOKE:

GRANT CREATE SESSION, CREATE TABLE TO safd

REVOKE CREATE TABLE FROM allin

Оператор GRANT дает пользователю SAFD полномочия на подключение к базе данных (то есть на инициализацию сеанса с базой данных) и создание таблиц. Оператор REVOKE отменяет полномочия пользователя ALLIN на создание таблиц.

Огас1е7 имеет два широких класса полномочий, о которых рассказывается в следующих двух разделах: полномочия на объекты и системные полномочия.

Системные полномочия: управление расширенными системными операциями.

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

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

Пользователь с системными полномочиями DROP TABLESPACE может удалять любую табличную область (за исключением табличной области SYSTEM).

Пользователь с системными полномочиями SELECT ANY TABLE может опрашивать любую таблицу базы данных.

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

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

Полномочия на объекты управляют работой базы данных с конкретным ее объектом. (Объект — это нечто, находящееся внутри базы данных: таблица, представление, роль, процедура, пользователь и т.д.). Например, администратор может управлять тем, кто опрашивает таблицу CUSTOMER. Для этого он предоставляет полномочия SELECT на эту таблицу только конкретным пользователям. Существуют и другие полномочия на объекты, о которых можно получить информацию в руководстве по применению Оracle7.

Управление защитой с помощью ролей.

Управление защитой в большой базе данных клиент/сервер — сложная задача. Множество работающих в системе полномочий и пользователей могут требовать обозначений конкретных полномочий. При отсутствии административного инструментального средства управление защитой может стать настоящим кошмаром. К счастью, Оracle7 предлагает решение, облегчающее управление полномочиями в большой и сложной системе клиент/сервер, — это роли. Роль представляет собой набор соответствующих полномочий, которые администратор может коллективно предоставлять пользователям и другим ролям. С помощью ролей администратор может значительно упростить управление полномочиями.

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

Схемы в Oracle7.

При работе с Oracle7 вы часто будете сталкиваться с термином “схема”. Это слово может иметь самый разный смысл. Аналогично тому как администраторы могут физически организовать таблицы Oracle7 с помощью табличных областей, логически они организуют таблицы и представления реляционной базы данных с помощью схем. Схема - это логический набор родственных таблиц и представлений, а также всех других объектов базы данных. Например, при добавлении к СУБД клиент/сервер нового приложения администратору для организации таблиц и представлений, которые будет использовать приложение, следует создать новую схему. На рис.4 показано приложение для учета продаж.

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

Рис.4 Связанные наборы объектов в базе данных Oracle7 физически могут организовываться как схемы.

7.5. Обеспечение доступности необходимых пользователям данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

7.6. Архивация и восстановление данных.

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

Защита транзакций: журнал транзакций.

В журнале полетов коммерческого авиалайнера записывается все, что происходит во время полета в кабине пилотов. Почти не поддающаяся разрушению маленькая коробочка (“черный ящик”) регистрирует информацию на случай авиакатастрофы. После катастрофы его можно исследовать и выяснить причину. Oracle7 также ведет журнал, где регистрируются происходящее в базе данных изменения. Каждый раз, когда SQL-оператор вносит изменение в базу данных, Oracle7 записывает его в журнал транзакций (который называется также журналом отмены). Если пользователь завершает транзакцию, Oracle7 немедленно записывает данные в журнал, подтверждая, что транзакция и ее изменения стали постоянными.

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

О том как Огасlе7 в случае серьезных сбоев использует журнал транзакций, архивные файлы данных и сегменты отката, рассказывается ниже в разделе “Восстановление базы данных”. Но сначала расскажем немного о журнале транзакций.

Структура журнала транзакций.

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

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

Архивация базы данных.

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

Архивация файлов данных.

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

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

Архивация других файлов.

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

Восстановление базы данных после сбоев диска.

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

•  Администратор при необходимости исправляет проблемы с аппаратурой (например, заменяет неисправный жесткий диск новым).

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

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

После того как администратор закончит процесс восстановления, Oracle7 оставляет базу данных в согласованном (в смысле транзакций) состоянии — в том состоянии, в котором она была после последней сохраненной транзакции.

Мы рассмотрели описание структуры БД Ora с le 7, важные моменты работы сервера (создание и администрирование БД). Для того, чтобы больше узнать о работе сервера Orakle 7, необходимо обратиться к книге Стива Бобровски « Ora с le 7. Вычисления. Клиент/сервер», а также к технической документации по работе сервера БД Ora с le 7.

Список литературы :

•  А.В.Кошкарев, В.С.Тикунов “Геоинформатика”, Москва, “Картгеоцентр” - “Геоиздат”, 1993.

•  Стивен Бобровски. « Oracle 7 и вычисления клиент.сервер», из-во «Лори», 1995 г .

•  Техническая документация по программному обеспечению технологий Intergraph .