DeepEdit!

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

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

Создание программы

В следующем примере используем процедуру CREATE_PROGRAM пакета DBMS_SCHEDULER для получения периодически вызываемой исполняемой программы с именем KICK_RMAN_INC.


После создания такой программы в созданном ранее задании на инкрементальное резервное копирование RMAN не придется указывать полный путь программы и тип задания. Новое определение будет таким:

Как видите, указаны только имя расписания и имя программы. Программа (и полный путь к ней) уже определена как исполняемый файл, поэтому не следует указывать, к какому типу программ она относится (PL/SQL-блок, хранимая процедура или исполняемый файл). Соответственно, параметр program_type исключен из описания задания. Более того, после того как программа определена, ее также можно использовать в другом задании без необходимости задания каких бы то ни было деталей. Можно вообще полностью заменить программу (например, сделать блоком PL/SQL или хранимой процедурой вместо исполняемого файла операционной системы): никакие изменения в коде создания задания не потребуются.
Запуск программ других пользователей
При обсуждении расписаний уже упоминалось, что программы могут принадлежать пользователям, отличным от их создателей.1 По умолчанию предполагается, что определяемая в процедуре CREATE_JOB программа принадлежит пользователю, создающему задание. Однако при желании можно использовать программу, принадлежащую другому пользователю. Предположим, например, что пользователь INTEREST_AD- MIN владеет программой начисления процентов:


Используем эту процедуру в именованной программе CAL_INTEREST от имени пользователя INTEREST_ADMIN:

После того как программа создана, создаем расписание EVERY_DAY, принадлежащее пользователю SCHED_MANAGER.

Прежде чем пользователь ACC_MANAGER сможет использовать эту программу, ему должны быть предоставлены привилегии EXECUTE на программу или системная привилегия EXECUTE ANY PROGRAM.

Создается задание Calculate_Daily_Interest, которое выполняет программу, на которую ссылается именованная программа CALC_INTEREST, принадлежащая пользователю INTEREST_ADMIN, причем выполняет ее по именованному расписанию EVERY_DAY, принадлежащему пользователю SCHED_ADMIN. Ничего себе!
Возможность выполнения именованных программ регулируется привилегией EXECUTE. Для контроля ссылок на именованные расписания, принадлежащие другим пользователям, привилегий не существует.
Использование именованных программ может значительно снизить административные накладные расходы. Вам не придется менять определение задания при изменении исполняемого файла, пути или имени хранимой процедуры.
 









jAntivirus