Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Oracle University Official Study Notes (RUS) > База данных Oracle 10g Администрирование > База данных Oracle 10g Администрирование I

Ответ
 
Опции темы Опции просмотра
  #11  
Старый 24.09.2009, 14:19
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Объекты PL/SQL



Объекты PL/SQL

Спецификация пакета (package). Пакет - это совокупность логически связанных процедур и функций. Пакет обязательно содержит спецификацию (она хранится в БД с типом package), в которой описывается интерфейс к возможностям пакета. В спецификации объявляются доступные извне типы, переменные, константы, исключения, курсоры и подпрограммы.
Тело пакета (package body) реализует спецификацию и полностью определяет курсоры и подпрограммы. В теле пакета находятся скрытые от вызывающей программы (caller) детали реализации и объявления частных объектов.
Тело типа (type body) - это совокупность методов (процедур и функций), связанных с определяемыми пользователями типами данных. Дополнительную информацию см. в документе Oracle Database Application Developer's Guide -Object Relational Features
Процедура (procedure) - это блок PL/SQL, выполняющий заданные действия.
Функция (function) - блок PL/SQL, возвращающий единственное значение, указываемое в команде PL/SQL RETURN.
Триггер (trigger) - это блок PL/SQL, выполняемый при возникновении конкретного события в базе данных. События могут быть связаны с таблицей, например, вставка строки в таблицу. Они также могут также происходить на уровне базы данных, например, событие, возникающее сразу после подсоединения пользователя к БД.
__________________
Телеграм чат
Ответить с цитированием
  #12  
Старый 24.09.2009, 14:20
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Функции



Функции

Функции PL/SQL обычно используются для вычисления значения. Существует большое число встроенных функций, например, SYSDATE, SUM, AVG и TO_DATE. Кроме того, разработчики приложений создают свои собственные функции. В коде PL/SQL должна быть команда RETURN. На слайде показан пример создания функции в среде Enterprise Manager. Для новой функции вводится имя, схема, в которой она создается, а также исходный код.

Ниже приведен полный код создания функции computetax, показанной на слайде:

__________________
Телеграм чат
Ответить с цитированием
  #13  
Старый 24.09.2009, 14:24
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Процедуры (Procedures)



Процедуры (Procedures)

Процедура PL/SQL используется для выполнения какого-либо действия.
Процедуры, также как и функции, могут принимать входные значения и выполнять условные операторы (IF-THEN, CASE и LOOP).
__________________
Телеграм чат

Последний раз редактировалось Marley; 24.09.2009 в 14:26.
Ответить с цитированием
  #14  
Старый 24.09.2009, 14:27
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Пакеты



Пакеты

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

Спецификация пакета (иногда ее называют заголовком пакета) имеет тип PACKAGE. В ней содержатся только определения процедур, функций и переменных пакета.
Тело пакета имеет тип PACKAGE BODY и содержит фактический код подпрограмм, определенных в спецификации пакета.


Пакетные процедуры и функции вызываются извне пакета следующим образом:

имя_пакета.имя_процедуры или имя_пакета.имя_функции

Примеры использования приведенных на слайде подпрограмм пакета:

Код:
SQL> SELECT money.compute_tax(salary)   FROM hr.employees
WHERE employee_id=107;
Код:
SQL> EXECUTE money.give_raise_to_all;
__________________
Телеграм чат
Ответить с цитированием
  #15  
Старый 24.09.2009, 14:28
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Спецификация и тело пакета



Тело пакета

Тело пакета хранится отдельно от спецификации пакета. Поэтому после изменения и перекомпиляции кода тела пакета другие объекты, зависимые от спецификации пакета, не помечаются как недействительные (invalid).
Тело пакета содержит код подпрограмм, определенных в спецификации пакета. В нем кодируются выполняемые действия. В спецификации же отражается формат вызова подпрограмм пакета.
Тело пакета не может быть скомпилировано, пока не скомпилирована спецификация. Можно создать спецификацию без тела, но нельзя создать тело без спецификации.
Тело пакета можно преобразовать (wrapped), чтобы скрыть детали кода. Для этого используется автономная утилита Wrap, с помощью которой разработанные на PL/SQL приложения поставляются с закрытым для изменений кодом пакетов. Дополнительные сведения об использовании утилиты Wrap см. в документе PL/SQL User's Guide and Reference.
__________________
Телеграм чат

Последний раз редактировалось Marley; 24.09.2009 в 14:32.
Ответить с цитированием
  #16  
Старый 24.09.2009, 14:42
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Встроенные пакеты



Встроенные пакеты

Встроенные PL/SQL-пакеты, поставляемые вместе с базой данных Oracle 10g, предоставляют доступ к расширенным возможностям базы данных, например, обработке очередей (advanced queuing), шифрованию и вводу/выводу файлов. Эти пакеты также содержат утилиты администрирования и сопровождения. Набор используемых пакетов зависит от вида приложений, выполняемых на сервере базы данных. Примеры наиболее часто используемых для администрирования и сопровождения пакетов:

DBMS_STATS; сбор, просмотр и изменение статистик оптимизатора.
DBMS_OUTPUT; формирование выходных данных в PL/SQL
DBMS_SESSION; доступ из кода PL/SQL к командам ALTER SESSION и SET ROLE.
DBMS_RANDOM; генерирование случайных чисел.
DBMS_UTILITY; оценка времени выполнения, использования времени ЦП, получение сведений о версии базы данных; вычисление хэш-значения и выполнение многих других разнообразных функций.
DBMS_SCHEDULER; планирование выполнения процедур и функций, вызываемых из кода PL/SQL
DBMS_CRYPTO; шифрование и дешифрование информации базы данных.
UTL_FILE; чтение и запись из PL/SQL файлов операционной системы.

Детальную информацию о встроенных пакетах см. в документе PL/SQL Packages and Types Reference.
__________________
Телеграм чат
Ответить с цитированием
  #17  
Старый 24.09.2009, 14:44
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Триггеры



Триггеры

Триггеры - это хранимые в базе данных кодовые объекты PL/SQL, которые срабатывают и выполняются автоматически, когда что-то происходит. База данных Oracle 10g позволяет обрабатывать с помощью триггеров многие события.

Например, вставку в таблицу, подсоединение пользователя к БД, кем-то предпринимаемую попытку удаления таблицы или изменения параметров аудита.

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

АБД используют триггеры для аудита по значениям данных (см. урок "Обеспечение безопасности базы данных Oracle"), для проверки сложных ограничений и для автоматизации многих других задач. Например, триггер SECURE_EMPLOYEES, показанный на слайде, разрешает выполнять команды DML, обрабатывающие данные таблицы EMPLOYEES, только во время рабочего дня.
__________________
Телеграм чат
Ответить с цитированием
  #18  
Старый 24.09.2009, 14:44
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию События, по которым срабатывают триггеры



События, по которым срабатывают триггеры

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

DML-операции, вызывающие срабатывание триггеров, когда команды DML модифицируют данные.
DDL-операции, вызывающие срабатывание триггеров , когда команды создают или каким-либо образом модифицирую объект.
Определенные события, происходящие на уровне базы данных.

Большинство триггеров срабатывает перед событием или после него.

Триггеры DML могут быть созданы для событий, возникающих один раз на уровне команды или же для событий, возникающих при изменении каждой строки таблицы.
__________________
Телеграм чат
Ответить с цитированием
  #19  
Старый 24.09.2009, 14:46
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Блокировки



Блокировки

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

Транзакции могут блокировать отдельные строки данных, несколько строк и даже целые таблицы. База данных Oracle 10g поддерживает как ручное, так и автоматическое блокирование. Автоматически накладываемые блокировки всегда выбирают наименьший уровень, чтобы минимизировать потенциальные конфликты с другими транзакциями.
__________________
Телеграм чат
Ответить с цитированием
  #20  
Старый 24.09.2009, 14:47
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Механизм блокирования



Механизм блокирования

Механизм блокирования спроектирован так, чтобы обеспечивать высокий уровень конкурентной обработки данных (data concurrency) внутри базы данных. Транзакции, модифицирующие данные, получают блокировки на уровне строки, а не на уровне таблицы. При модификации объектов (например, перемещении таблицы) накладываются блокировки на уровне объектов, а не всей базы данных или схемы.

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

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

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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:01. Часовой пояс GMT +3.


Powered by vBulletin®