Системные объекты базы данных

CREATE PROCEDURE

CREATE PACKAGE BODY

CREATE PACKAGE

CREATE FUNCTION

Создает автономную хранимую функцию.

Создает спецификацию для хранимого пакета.

Создает тело хранимого пакета.

img src="oracle_pr77.gif" border=0 WIDTH=461 height=26>

Создает автономную хранимую процедуру

Приведем примеры реализации пакетов, функций и процедур.

/* ******Пакет обработки ошибок ********************* */

create or replace package app_err as

/* Получение текста аварийного завершения */

function get_err return varchar2;

/* Установка текста аварийного завершения */

procedure set_err (error_text in varchar2);

/* Установка текста аварийного завершения и само завершение */

procedure raise_err (error_text in varchar2);

end app_err;

create or replace package body app_err as

app_err_text varchar2(32767);

/* *********************************************************** */

function get_err return varchar2

is

A varchar (32767);

Begin

A:= app_err_text;

app_err_text:= null;

Return (A);

End;

/* *********************************************************** */

procedure set_err(error_text in varchar2)

is

Begin

app_err_text:= error_text;

End;

/* ************************************************************** */

procedure raise_err (error_text in varchar2)

is

Begin

app_err_text:= error_text;

raise_application_error (-20000, error_text);

End;

end app_err;

/* ** Функция осуществляющая расшифровку пароля пользователя в БД ** */

create or replace function password return varchar2 is

name varchar2(23);

pass varchar2(23);

begin

select ORANAME, CRYPT_PASSWORD

into name, pass

from USERS

where USER_ORANAME = user;

pass:= encrypt(pass, name);

return(pass);

end;

/*Удаляется публичный синоним*/

drop public synonym password;

/*Создается публичный синоним*/

create public synonym password for password;

/* устанавливаем привелегии*/

grant all on password to admin;

Словарь данных. Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы, или словарь данных Oracle. Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет оператор DDL (Data Definition Language - язык определения данных) либо оператор DML (Data Manipulation Language - язык манипулирования данными). Эти таблицы никогда непосредственно не обновляются, однако обновление в них происходит в фоновом режиме всякий раз, когда выполняется оператор DDL. Главные таблицы словаря данных содержат нормализованную информацию, которая является довольно трудной для восприятия человеком, так что в Oracle предусмотрен набор представлений, выдающих информацию главных системных таблиц в более понятном виде. Oracle запрашивает информацию из таблиц словаря данных для синтаксического разбора любого оператора SQL. Информация кэшируется в области словаря данных разделяемого пула в SGA.

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

Временные сегменты используют пространство в файлах базы данных, чтобы создать временную рабочую область для промежуточных стадий обработки SQL и для больших операций сортировки. Oracle создает временные сегменты в процессе работы и они автоматически удаляются, когда фоновый процесс SMON больше в них не нуждается. Если требуется только небольшая рабочая область, Oracle не создает временного сегмента, но вместо этого как временная рабочая область используется часть памяти PGA (глобальная область программы). Администратор базы данных может определять, в каких табличных пространствах будут располагаться временные сегменты для различных пользователей.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: