DeepEdit!

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

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Закрепление в разделяемом пуле

Разделяемый пул (shared pool) — это часть SGA, где помимо всего прочего содержится р-код скомпилированных подпрограмм при их выполнении. При первом вызове хранимой подпрограммы ее р-код загружается с дис­ка в разделяемый пул. После того как объект перестает использоваться, информация о нем может быть удалена. Для удаления объектов из разде­ляемого пула применяется алгоритм LRU (least recently used — использо­вавшийся наиболее давно). Более подробно о разделяемом пуле и его работе можно узнать в руководстве "Oracle Concepts".
Модуль DBMS_SHARED_POOL позволяет закреплять (pin) объекты в разделяемом пуле. Закрепленный объект не удалится из пула до тех пор, пока не будет выдана соответствующая команда. При этом неважно, на­сколько заполнен пул и как часто происходит обращение к объекту. За­крепление повышает производительность системы, так как загрузка модуля с диска занимает определенное время. Кроме того, закрепление объектов помогает снизить фрагментацию разделяемого пула. В модуле
содержатся четыре процедуры: POOL.KEEP, DBMS_SHARED_POOL.UNKEEP, DBMS_SHARED_POOL.SIZES hDBMS_SHARED_POOL.ABORTED_REO,UEST_THRESHOLD.

KEEP
Процедура        используется для закрепления объектов в пуле. Можно закреплять модули, триггеры, последовательно­сти, объектные типы и объектыДауа (в Огас1е8ги выше), SQL-операторы. KEEP определяется следующим образом:
PROCEDURE КЕЕР( name VARCHAR2, flag CHARDEFAULT 'Р');
Параметры этой процедуры описаны в таблице ниже. После того как
объект закреплен, он не будет удален из пула до остановки базы данных или до выдачи команды DBMS3HARED_POOL.UNKEEP. Заметим, что не загружает модуль в разделяемый пул не­медленно, а закрепляет его при первой последующей загрузке.
UNKEEP
Процедура UNKEEP — единственное средство, позволяющее удалить объ­ект из разделяемого пула без перезапуска базы данных. Закрепленные объекты никогда не удаляются автоматически. Определение этой проце­дуры выглядит следующим образом:
PROCEDURE UNKEEP( name VARCHAR2, flag CHAR DEFAULT 'Р');
Аргументы аналогичны аргументам процедуры KEEP. Если указанного объекта нет в разделяемом пуле, возвращается сообщение об ошибке.

SIZES
С помощью этой процедуры содержимое разделяемого пула выводится на экран. Определение процедуры SIZES выглядит следующим образом:
PROCEDURE SIZES( minsize NUMBER);
Возвращаются объекты, размер которых превышает значение minsize. Для вывода информации процедура SIZES использует модуль DBMSOUT-PUT, поэтому перед ее вызовом обязательно выполните команду SET SERVEROUTPUT ON в SQL*PIus или Server Manager.

ABORTED_REQUEST_THRESHOLD
Когда база данных определяет, что в разделяемом пуле не хватает памяти для удовлетворения запроса, она начинает удалять объекты, пока памяти не станет достаточно. Удаление большого числа объектов может повли­ять на производительность других сеансов базы данных. Для решения этой проблемы служит ABORTED_REQUEST_THREASHOLD. Определе­ние этой процедуры выглядит следующим образом:
PROCEDURE ABORTED_REQUEST_THRF.SITOLD( threshold, siz, NUMBER);
После вызова этой процедуры Oracle не будет запускать устаревшие объекты из пула, если им требуется больше threashold_size6a&TOB.

Итоги
В этой главе обсуждались такие именованные блоки PL/SQL, как процедуры, функции и модули. Рассказывалось о различиях между локальными и хранимыми подпрограммами, о зависимостях в хранимых подпрограммах и о вызове хранимых подпрограмм из SQL-операторов. Был описан
пакет        В следующей главе рассматривается четвертый вид именованных блоков PL/SQL — триггеры.

 









jAntivirus