- •12 Правил Кодда:
- •Словарь субд Oracle: состав, назначение, применение.
- •Структура вторичной памяти субд Oracle: табличные пространства, сегменты, экстенты, блоки, структура блока.
- •Архитектура программного обеспечения с точки зрения программиста, объекты разработки, роли разработчиков и их функциональное наполнение.
- •Режимы старта и останова экземпляра Oracle, операторы alter перевода экземпляра Oracle из одного состояния в другое.
- •Понятия субд Oracle: системные привилегии, объектные привилегии, роль, профиль безопасности, пользователь.
- •Табличные пространства: назначение, типы, основные параметры, необходимые привилегии, операторы создания и удаления, представления словаря.
- •Синоним: назначение, типы, необходимые привилегии, операторы создания и удаления, представления словаря.
- •Представление: назначение, необходимые привилегии, операторы создания, модификации и удаления, представления словаря, опции with check option/read only.
- •Материализованное представление: назначение, необходимые привилегии, операторы создания, модификации и удаления, представления словаря.
- •Кластер: назначение, типы, основные параметры, необходимые привилегии, операторы создания, модификации и удаления, представления словаря. Оператор создания таблиц с кластеризованными столбцами.
- •Индекс: назначение, типы (b*,bitmap), основные параметры, необходимые привилегии, операторы создания, модификации и удаления, представления словаря.
- •Временные таблицы: назначение, принцип применения, необходимые привилегии, операторы создания, опции on commit delete rows/ on commit preserve rows.
- •Порядок создания инфраструктуры базы данных Oracle.
- •Pl/sql: исключения, встроенные исключения и пользовательские исключения, генерация (raise, raise_application_error) и обработка исключений, порядок распространения исключений.
- •Pl/sql:константы, %type, %rowtype, записи (record) и их применение, вложенные записи, присваивание записей.
- •Pl/sql: локальные процедуры и функции, параметры, позиционный и параметрический способ передачи параметров
- •Pl/sql: динамический sql, оператор execute immediate, опции using (входные и выходные параметры), опция returning.
- •Хранимые процедуры и функции: назначение, принцип применения, необходимые привилегии, операторы создания, опция authid current_user/definer, объектная привилегия execute, представления словаря.
- •Пакеты: назначение, принцип применения, необходимые привилегии, операторы создания, опция authid current_user/definer, объектная привилегия execute, представления словаря.
- •Триггеры замещения (instead of)
- •Тип xmltype: назначение, создание таблиц с xml-полями, основные функции для работы с xmltype.
- •Большие типы: clob, blob, bfile, назначение, создание и применение.
- •Табличные и поточные функции
- •Расписание (Schedule)
- •Программа (Program)
- •Секцинирвание
- •Диапазонное секционирование
- •Интервальное секционирование
- •Списочное секционирование
- •Композитное секционирование
- •Эквисекционирование
- •Секционирование по ссылке
- •Секционирование по виртуальному столбцу
- •Системное секционирование
Временные таблицы: назначение, принцип применения, необходимые привилегии, операторы создания, опции on commit delete rows/ on commit preserve rows.
Временные таблицы глобальны: созданную одним пользователем таблицу может использовать другой пользователь (если ему назначены соответствующие привилегии). Привилегии раздает владелец (тот, кто выдал CREATE).
Привилегии для создания временной таблицы: CREATE TABLE.
Временные таблицы – это шаблон, хранящийся в словаре базы данных: для временной таблицы выделяется временный сегмент в (по умолчанию) TEMPORARY-табличном пространстве и для каждого пользователя свой. При желании, можно разместить временную таблицу в заданном табличном пространстве. Каждый пользователь видит только свои данные (свой сегмент данных).
Временные таблицы - статичны: временные таблицы создаются (CREATE) один раз и существуют, пока их не удалят (DROP). В этом смысле они похожи на обыкновенные таблицы. Создавать их динамически – затратная для Oracle операция. В Oracle другая стратегия применения временных таблиц, нежели в MS SQL-Server. DROP не получится, если таблица в этот момент используется другим пользователем.
Временные таблицы бывают: ON COMMIT PRESERVE ROWS – на время сеанса (сессии) и ON COMMIT DELETE ROWS – на время транзакции. В начале сеанса временная таблица всегда пуста.
Временные таблицы ON COMMIT PRESERVE ROWS: данные существуют только на время сеанса, возможны все DML-операторы, TCL-операторы.
Временные таблицы ON COMMIT DELETE ROWS: данные существуют только на время транзакции, возможны все DML-операторы, после выполнения COMMIT или ROLLBACK таблица становится пустой.
Для временных таблиц можно создавать триггеры.
Для временных таблиц можно указать все констрейны, создавать индексы.
Для временных таблиц нельзя: не могут быть индексно-организованными, нельзя секционировать, размещать в кластере, нельзя сгенерировать статистическую информацию.
Применение индексных таблиц: выбор ключей (например, для организации списка просмотра) и SELECT JOIN с основной базой данных.
Порядок создания инфраструктуры базы данных Oracle.
создание табличных пространств;
создание ролей;
назначение ролям системных привилегий;
создание профилей безопасности пользователей;
создание пользователей (владелец и др. пользователи);
назначение пользователям ролей;
создание объектов базы данных (таблиц, индексов, представлений, функций, процедур, пакетов,...);
назначение ролям объектных привилегий.
PL/SQL: общая характеристика, основные возможности, программные структуры (анонимные блоки, процедуры, функции, пакеты), управление уровнем предупреждений компилятора, представления словаря со спецсимволами и ключевыми словами. Типы данных PL/SQL. Встроенные функции. Операторы (IF, FOR, LOOP, WHILE, CASE,...). Встроенные функции SQLERRM, SQLCODE.
Характеристика языка PL/SQL:
процедурное расширение языка SQL;
содержит элементы объектно-ориентированного программирования;
блоки, процедуры, функции, пакеты, объектные типы;
интегрирован с базой данных Oracle;
интерпретация (режим по умолчанию):
компиляция (промежуточный код на C и конечный объектный код процессора) дает выигрыш в скорости выполнения до 30%;
среда выполнения: SQL*Plus, другие пакеты, сервер.
Предупреждения компилятора:
- ALL (все);
- PERFOMANCE (производительность);
- INFORMATIONAL (информационные);
- SEVERE (логика программы);
- Specific error (ошибка)
Типы данных PL/SQL (не путать с типами данных базы данных):
скалярные (Scalar);
ссылочные (Reference);
составные (Composite);
большие объекты (LOB).
Скалярные типы данных можно разбить на семейства:
символ/строка;
число;
булев;
дата/время.
CHAR(n byte|char) |
n <= 2000 |
VARCHAR2(n) |
n <= 4000 bytes |
NUMBER(n,s) |
n <= 38, s = [-84,127] |
LONG |
символы до 2GB |
RAW(n) |
бинарные данные n <= 2000 byte |
ROWID |
64 byte уникальный адрес строки в таблице, псевдо-столбец |
NCHAR(n) |
n <= 2000 bytes |
NVARCHAR2(n) |
n <= 4000 bytes |
DATE |
01.01.4712 до н.э – 31.12.9999 |
BINARY_FLOAT |
32bit |
BINARY_DOUBLE |
64bit |
TIMESTAMP(n) |
дата и время n = [0,9] – точность секунд |
TIMESTAMP (n) WITH TIME ZONE |
TIMESTAMP+значение смещение часового пояса |
TIMESTAMP WITH(n) LOCAL TIME ZONE |
TIMESTAMP нормализованный для локального времени |
INTERVAL YEAR(n) TO MOUNT |
n = [0,9] период времени в годах и месяцах |
INTERVAL DAY(n) TO SECOND(m) |
n = [0,9], m =[0,9] период времени в днях, минутах и секундах |
LONG RAW |
бинарные данные до 2GB |
UROWID(n) |
n <= 4000, логический адрес строки в индексно-организованной таблице |
CLOB |
большой символьный объект до 4GB |
NLOB |
CLOB для многобайтных символов |
BLOB |
большой двоичный объект до 4GB |
BFILE |
указатель на двоичный файл операционной системы |
IF-THEN; IF-THEN-ELSE; IF-THEN-ELSEIF; CASE WHEN; LOOP EXIT WHEN; FOR i in от..до LOOP; WHILE(условие)LOOP
SQLERRM – получить сообщение ошибки
SQLCODE – получить код ошибки
PL/SQL: курсоры (неявные и явные), атрибуты курсоров, объявление и схема работы с явным курсором, явные курсоры с параметрами, операторы INSERT, DELETE, UPDATE в PL/SQL, курсорные переменные и их применение, курсорные подзапросы, параметры Oracle, связанные с курсорами, конструкция WHERE CURRENT OF, псевдостолбцы ROWID, ROWNUM .
Неявные курсоры – содержит строку таблицы, в переменной которая типа строки таблицы.
Явные курсоры – объявляем в секции declare cursor… for select …
Курсор Oracle – указатель на область в PGA (контекстная область) в которой хранится: 1)строки запроса, 2)число строк, 2)указатель на разобранный запрос в общем пуле.
Открытие курсора – создание контекстной области PGA (создается моментальный снимок (snapshot) данных запроса).
WHERE CURRENT OF – определяет только что считанную строку.
ROWID-двухбайтовая величина, которая соответствует физическому положению любой строки БД.
ROWNUM-используется для ограничения кол-ва выводимых записей
