русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ОБЩИЕ И ЧАСТНЫЕ КАНАЛЫ


Дата добавления: 2013-12-24; просмотров: 1124; Нарушение авторских прав


ПРОГРАММНЫЕ КАНАЛЫ

СОЗДАНИЕ ПРОГРАММНЫХ КАНАЛОВ И УПРАВЛЕНИЕ ИМИ

Если канал не существует, то при первом указании его имени в SEND_MESSAGE он создается неявным образом. В PL/SQL версии 2.2 и выше каналы можно создавать и удалять явно, с помощью процедур CREATE_PIPE и REMOVE_PIPE.

Программный канал представляет собой структуру данных, находящуюся в разделяемом пуле системной глобальной области (SGA – system global area) памяти. Поэтому он не занимает память, в которую могут помещаться другие объекты базы данных при их считывании с диска. Когда необходимо освободить дополнительное пространство разделяемого пула, каналы автоматически уничтожаются. Однако это касается только тех каналов, в которых не находятся сообщения, ожидающие считывания (хотя канал можно удалить из SGA и явным образом, с помощью процедуры PURGE, описанной ниже). Алгоритмом уничтожения программных каналов является алгоритм LRU (least recently used – использовавшийся раньше всех): уничтожается тот канал, который не использовался дольше всех. Максимальный размер канала и, следовательно, размер структуры данных в разделяемом пуле задается параметром MAXPIPESIZE функций SEND_MESSAGE и CREATE_PIPE.

 

Каналы, создаваемые неявно с помощью SEND_MESSAGE, называются общими (public). Любой пользователь, имеющий полномочие EXECUTE на модуль DBMS_PIPE и знающий имя канала, может посылать и принимать по нему сообщения. Доступ же к частным (private) каналам ограничивается пользователем, создавшим этот канал, хранимыми процедурами, выполняющимися на основании набора привилегий владельца этого канала, и пользователями, присоединившимися как SYSDBA или INTERNAL.

В PL/SQL версий 2.0 и 2.1 применяются только общие каналы, создаваемые неявно. В PL/SQL версии 2.2 и выше можно уже создавать каналы явно, используя для этого функцию CREATE_PIPE. Эта функция является единственным способом создания частного канала, однако при желании ей можно воспользоваться и для создания общего канала. Каналы, создаваемые посредством CREATE_PIPE, остаются в разделяемом пуле до тех пор, пока не будут явно удалены с помощью функции REMOVE_PIPE или пока экземпляр базы данных не будет остановлен. Такие каналы автоматически не уничтожаются в SGA. Описание CREATE_PIPE выглядит следующим образом:



 

function CREATE_PIPE (pipename in varchar2,

maxpipesize in integer default 8192,

private in boolean default true)

return integer;

 

Если канал успешно создан, CREATE_PIPE возвращает ноль. Если канал уже существует, а текущий пользователь имеет привилегии, необходимые для доступа к нему, то возвращается ноль и данные, находящиеся в канале, остаются без изменений. Если существует общий канал с указанным именем или частный канал, имеющий то же имя и принадлежащий другому пользователю, то устанавливается ошибка “ORA-23322: insufficient privilege to access pipe” (привилегии, недостаточные для доступа к каналу) и функция завершается неуспешно. Параметры этой функции описаны в следующей таблице:

 

Таблица 17 Параметры функции CREATE_PIPE

Параметр Тип Описание
pipename varchar2 Имя создаваемого канала. Имена каналов ограничены 30 символами. Имена, начинающиеся с ORA$, зарезервированы для внутреннего использования.
maxpipesize integer Максимальный размер канала в байтах. Этот же параметр используется в SEND_MESSAGE для неявного создания канала. Значение по умолчанию – 8 192 байта. Если SEND_MESSAGE вызывается со значением, превышающим MAXPIPESIZE, размер канала увеличивается. Если же SEND_MESSAGE вызывается со значением меньшим, чем MAXPIPESIZE, то сохраняется существующий размер.
private boolean TRUE для частного канала, в противном случае FALSE. Значение по умолчанию – TRUE. Общие каналы создаются неявно функцией SEND_MESSAGE, поэтому, как правило, не имеет смысла устанавливать для данного параметра значение FALSE.

 

Каналы, создаваемые явно функцией СКЕАТЕ_РIРЕ, удаляются с помощью функции REMOVE_PIPE. Если при этом в канале находятся сообщения, то они также удаляются. Эта функция – единственный способ удалить те каналы, которые были созданы явно. Описание функции REMOVE_PIPE выглядит следующим образом:

 

function REMOVE_PIPE (pipename in varchar2)

return integer;

 

Единственным параметром этой функции является имя удаляемого канала. Если канал существует, а текущий пользователь имеет на него привилегии, то канал удаляется и функция возвращает ноль. Если канал не существует, также возвращается ноль. Если канал существует, но текущий пользователь не имеет привилегий на доступ к нему, то устанавливается ошибка ORA-23322 (как и в функции CREATE_РIРЕ).

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

 

procedure PURGE (pipename in varchar2);

 



<== предыдущая лекция | следующая лекция ==>
ПОЛУЧЕНИЕ СООБЩЕНИЙ | УСТАНОВЛЕНИЕ ПРОТОКОЛА СВЯЗИ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.27 сек.