Иван Задворьев - Язык PL/SQL

Тут можно читать онлайн Иван Задворьев - Язык PL/SQL - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Array SelfPub.ru, год 2018. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Иван Задворьев - Язык PL/SQL краткое содержание

Язык PL/SQL - описание и краткое содержание, автор Иван Задворьев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.

Язык PL/SQL - читать онлайн бесплатно полную версию (весь текст целиком)

Язык PL/SQL - читать книгу онлайн бесплатно, автор Иван Задворьев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

При использовании пакета DBMS_JOB можно поставить в очередь заданий новое задание, которое будет автоматически выполнено в указанные моменты времени. Заданием в Oracle является анонимный блок PL/SQL, в котором, как правило, вызываются хранимые программы.

Распространено мнение, что среди всех встроенных пакетов DBMS_JOB – наиболее часто используемый администраторами баз данных Oracle.

Таблица 8.Программы пакета DBMS_JOB.

Программа

Описание программы

SUBMIT (процедура)

отправляет новое задание в очередь заданий

CHANGE (процедура)

изменяет параметры задания

WHAT (процедура)

изменяет описание задания

NEXT_DATE (процедура)

изменяет следующее время выполнения задания

REMOVE (процедура)

удаляет задание из очереди

RUN (процедура)

указывает немедленно выполнить задание

INTERVAL (процедура)

изменяет интервал между запусками задания

Будем рассматривать в качестве задания анонимный блок PL/SQL, запускающий процедуру p1.

CREATE TABLE job_test (insert_date DATE);

CREATE PROCEDURE p1 AS

BEGIN

INSERT INTO job_test VALUES(SYSDATE);

COMMIT;

END;

Отправим задание в очередь со следующими параметрами:

SQL> DECLARE

2 l_job_num INTEGER;

3 BEGIN

4 DBMS_JOB.submit(job =>l_job_num,

5 what=>'BEGIN p1; END;',

6 next_date=>sysdate,

7 interval=>'sysdate+10/24/60/60');

8 COMMIT;

9 DBMS_OUTPUT.PUT_LINE(l_job_num);

10 END;

11 /

23

PL/SQL procedure successfully completed.

В очередь будет помещено новое задание BEGIN p1; END; с немедленным выполнением после помещения в очередь и последующим выполнением каждые десять секунд, что задается выражением sysdate+10/24/60/60. На экран выводится уникальный номер задания, назначенный ему при постановке в очередь (23). Важно отметить, что после вызова процедуры DBMS_JOB.submit необходимо явно зафиксировать транзакцию, в противном случае задание в очередь поставлено не будет.

Посмотрим на результаты работы процедуры p1 и убедимся, что задание запускается каждые десять секунд:

SQL> SELECT TO_CHAR(insert_date,'DD.MM.YYYY HH24:MI:SS') AS insert_date

2 FROM job_test ORDER BY insert_date;

INSERT_DATE

25.01.2015 11:26:18

25.01.2015 11:26:28

25.01.2015 11:26:38

Данные о заданиях пользователя, которые в данный момент находятся в очереди, можно просмотреть в представлении словаря-справочника данных USER_JOBS:

SQL> SELECT job,log_user,last_sec,next_sec,broken,interval,what

2 FROM USER_JOBS;

JOB LAST_SEC NEXT_SEC BROKEN INTERVAL WHAT

– – – – – –

23 11:26:51 11:27:01 N sysdate+10/24/60/60 BEGIN p1; END;

В первом столбце отображаются номера заданий, назначаемые им при постановке в очередь. В следующих столбцах отображаются время последнего и следующего выполнения задания, интервал выполнения и анонимный блок PL/SQL для выполнения задания. Меткой BROKEN (заблокировано) помечаются те задания, при шестнадцати попытках выполнения которых произошли ошибки. Заблокированные задания перестают выполняться, поэтому администратору баз данных следует контролировать содержание представления DBA_JOBS, в котором отображаются сведения обо всех заданиях. Если в задании временно отпала необходимость, то его можно пометить как заблокированное специально, используя для этого процедуру DBMS_JOB.broken.

Удаляется из очереди задание следующим образом:

SQL> BEGIN

2 DBMS_JOB.remove(23);

3 COMMIT;

4 END;

5 /

PL/SQL procedure successfully completed.

Файловый ввод-вывод

Встроенный пакет UTL_FILE предоставляет программам PL/SQL возможность работать с файлами на сервере. С помощью этого пакета можно решать следующие задачи:

формирование на сервере небольших текстовых отчетов;

загрузка в базу данных строк небольших текстовых файлов;

чтение log-файлов сервера для мониторинга ошибок;

формирование log-файлов программ PL/SQL.

Для загрузки/выгрузки данных значительных (мегабайты, гигабайты) объемов следует использовать не пакет UTL_FILE, а использовать клиентские приложения – SQL*Loader для загрузки данных и SQL*Plus для их выгрузки. Если запускать эти утилиты на сервере баз данных, то их использование – самый быстрый способ загрузить и выгрузить данные из базы в файлы. В то же время при разработке серверной бизнес-логики встречаются ситуации, когда читать и писать в файлы хотелось бы именно в хранимых программах на PL/SQL без усложнений, вызванных обращениями к другим средствам. Чтобы для каждого поступившего платежа выгружать на сервере XML-файл размером меньше килобайта пакет UTL_FILE вполне подходит.

Настройка ограничений доступа к каталогам

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

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

использовать параметр базы данных utl_file_dir;

создать специальные объекты баз данных – директории (DIRECTORY) и предоставить пользователям привилегии доступа к ним.

В параметре utl_file_dir задается список каталогов, с файлами из которых может осуществлять операции UTL_FILE. Для просмотра текущего значения параметра utl_file_dir можно использовать представление словаря данных V$PARAMETER или команду SHOW PARAMETER утилиты SQL*Plus:

SQL> SELECT value dir FROM V$PARAMETER

2 WHERE name='utl_file_dir';

DIR

C:\Dir1

SQL> SHOW PARAMETER utl_file_dir

NAME TYPE VALUE

– – –

utl_file_dir string C:\Dir1

Значением параметра utl_file_dir может быть и символ *, что означает, что с помощью пакета UTL_FILE можно получить доступ к файлам в любых каталогах, к которым есть доступ у пользователя oracle операционной системы сервера. Выставление этого параметра таким способом обычно практикуется в тестовых инсталляциях и должно быть совершенно исключено в production по требованиям безопасности.

Директория (directory) – объект баз данных Oracle, являющийся псевдонимом каталога в файловой системе сервера. Директории создаются DDL-командами следующего вида:

SQL> CREATE OR REPLACE DIRECTORY dir1 AS 'C:\Dir1';

Directory created.

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

SQL> GRANT READ ON DIRECTORY dir1 TO user1;

Grant succeeded.

Параметр utl_file_dir задает список каталогов сразу для всех пользователей, которые имеют привилегии на выполнение программ пакета UTL_FILE, причем настроить конкретные действия (чтение или запись) с файлами из этих каталогов с его помощью нельзя.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Иван Задворьев читать все книги автора по порядку

Иван Задворьев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык PL/SQL отзывы


Отзывы читателей о книге Язык PL/SQL, автор: Иван Задворьев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x