Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала
- Название:Oracle SQL. 100 шагов от новичка до профессионала
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:11
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала краткое содержание
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.
Oracle SQL. 100 шагов от новичка до профессионала - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Шаг 87. Планировщик JOB-заданий. Управление
Введение
В ORACLE есть механизм, позволяющий запланировать выполнение определенной программы на заданное время, такая программа может быть оператором SQL, программой на языке PLSQL либо даже внешней программой. Этот механизм называется механизмом заданий JOB.
Данный механизм может применяться, например, для планирования запуска тяжелых запросов в ночное время или на выходные дни, распределения задач построения отчетности.
Теория и практика
Для управления заданиями в ORACLE существует специальный пакет DBMS_JOB:
• создание заданий;
• можно использовать механизм DBMS_JOB или механизм DBMS_SCHEDULER — более современный способ.
Здесь
JOB — входной параметр, уникальный идентификатор задания. Идентификатор генерируется специальной системной последовательностью;
WHAT — анонимный PL/SQL-блок, в данном блоке указывается последовательность команд, которая будет выполнена в процессе работы задания.
В этом же параметре можно также писать команды вставки, удаления, редактирования (INSER, UPDATE, DELETE), а также команды для создания индексов таблиц, создания индексов, ограничений;
NEXT_DATE — дата-время следующего выполнения задания. Если будет указана дата меньше, чем текущая дата, то выполнение задания будет начато немедленно;
INTERVAL — вычисляемая дата следующего выполнения задания в столбце NEXT_DATE.
Примеры интервала задания:
NULL
Задание выполнится однократно и удалится.
TRUNC (SYSDATE+1) +10/24
Задание будет выполняться ровно в 10 часов каждого дня.
TRUNC (SYSDATE+1) + (11+ (15/60)) /24
Задание будет выполняться ровно в 11 часов 15 минут каждого дня.
TRUNC (LAST_DAY (SYSDATE)) + (n+ (m/60)) /24
Задание будет выполняться ровно в n часов m минут последнего дня каждого месяца.
TRUNC (LAST_DAY (SYSDATE) +1) + (n+ (m/60)) /24
Задание будет выполняться ровно в n часов m минут первого дня каждого месяца;
NO_PARSE — флаг разбора PL/SQL-выражения. Если его значение равно FALSE, разбор происходит в момент установки задания. Иначе — в момент выполнения задания;
INSTANCE — какой экземпляр производит выполнение задания;
FORCE — если значение этого параметра истинно, тогда в качестве INSTANCE может выступать любое положительное целое число. В противном случае экземпляр, указанный в INSTANCE, должен быть обязательно запущен, иначе будет вызвано исключение.
Пример 1. Создание задания
Таблица AUTO будет очищаться каждый день в 1 час 5 минут.
Пример 2. Cозданиe задания
Таблица будет очищаться каждый день в 3 часа 5 минут и заполняться данными из AUTO1.
Пример 3
Таблица будет очищаться каждый день в 3 часа 5 минут и заполняться данными из AUTO1.
Удаление задания можно сделать следующей процедурой:
Здесь JOB — идентификатор задачи.
Выключение задания
Бывают случаи, когда задание временно не должно выполняться. Для этого совсем необязательно его удалять. Достаточно его просто выключить. Выключение (включение) задания производится установкой специального флага состояния — BROKEN. Делается это с помощью следующей процедуры:
Просмотр всех заданий.
Для просмотра всех заданий используются следующие таблицы: DBA_JOBS, ALL_JOBS и USER_JOBS.
• DBA_JOBS показывает все задания (JOB);
• ALL_JOBS показывает задания (JOB) текущего пользователя;
• USER_JOBS показывает задания (JOB) текущего пользователя.
Важные замечания
Вычисление NEXT_DATE с помощью формулы интервала происходит после выполнения задания. Поэтому всегда учитывайте это время и старайтесь не ставить NEXT_DATE на время, близкое к окончанию суток, из-за возможного неправильного расчета следующей даты выполнения.
При создании задания или изменения его параметров ORACLE записывает текущие параметры NLS владельца. Эти параметры каждый раз восстанавливаются при выполнении задания. Это может приводить к некоторым ошибкам в случае ожидания других значений. Поэтому, если необходимо, лучше производить установку нужных NLS-значений с помощью команды ALTER SESSION в параметре WHAT задания.
Задания в теле завершаются COMMIT;
Вопросы учеников
Есть ли еще способы создать задание, используя планировщик заданий?
Да, есть более современный метод — DBMS_SCHEDULLER.
Как создать задание, которое бы выполнялось каждые полдня?
Пример задания:
Контрольные вопросы и задания для самостоятельного выполнения
1. Создайте задание, которое бы очищало таблицу MAN1 каждый день в 5 часов.
2. Создайте задание, которое бы запускало скрипт заполнения таблицы MAN1 таблицы MAN каждый день в 10 часов.
3. Просмотрите все задания, которые были запущены для текущего пользователя.
Шаг 88. Таблицы в ORACLE SQL. Дополнительные сведения
Введение
Мы с вами познакомились с обычными таблицами, существующими в ORACLE. Также в данной книге мы подробно разбираем работу с секционированными таблицами.
Но в ORACLE СУБД есть и другие виды таблиц.
Это таблицы, организованные по индексу, и кластеризованные таблицы.
Рассмотрим подробнее эти типы таблиц.
Теория и практика
Таблица, организованная по индексу — INDEX ORGANIZED TABLE, IOT
Индекс-таблицы (INDEX-ORGANIZED TABLE, IOT) — такие таблицы, в которых данные хранятся в виде индексной структуры, первичный ключ представляет собой индекс на основе B-дерева.
Индекс-таблицы отличаются от традиционных тем, что в индексных таблицах данные хранятся в упорядоченном виде. Данные сортируются по первичному ключу.
Индексные таблицы имеют уникальную идентификацию по первичному ключу, не могут быть с колонками типа CLOB, BLOB. Индексные таблицы не могут быть в кластерах.
Доступ к данным к индексных таблицах осуществляется быстрее.
Синтаксис создания индексной таблицы:
Здесь
• IOT_TABLENAME — имя создаваемой таблицы;
• COLNAME2…COLNAMEN — наименование колонки;
• PK_COLUMNNAME_NEW — название ключа.
ORGANIZATION INDEX означает что таблица организована по индексу.
Пример создания таблицы, организованной по индексу:
Таблицы в общем кластере
Кластер — это несколько таблиц, которые физически хранятся вместе. Обычно используется в таблицах, участвующих в запросах с объединениями JOIN.
Целью кластеров таблиц является повышение производительности запросов с объединениями для этих таблиц.
При создании кластеризованных таблиц необходимо создать кластер, где будут располагаться эти таблицы.
Создадим кластер для двух таблиц MANc, CITYc, являющихся копиями таблиц MAN, CITY.
Далее создаем две таблицы MANc, CITYc.
Создаем две таблицы MANc, CITYc для кластера MAN_CITY:
Читать дальшеИнтервал:
Закладка: