- •1.Основные понятия и определения курса. Традиционные файловые системы.
- •5 История развития субд Oracle.
- •6 Общие сведения об инструкциях sql. Правила именования таблиц и столбцов
- •7 Общие сведения о dml.
- •8 Общий синтаксис инструкции select
- •9 Предложения select и from. Предикаты и вычисляемые столбцы (пример).
- •10 Предложение where и классификация условий отбора (привести примеры).
- •11 Составные условия отбора. Влияние значений null на результат отбора.
- •12 Многотабличные запросы и их особенности (привести пример).
- •13 Операторы комбинирования результирующих таблиц в многотабличных запросах (привести примеры).
- •14 Предложение group by. Статистические (агрегативные) функции в sql (примеры).
- •15 Условия отбора групп (предложение having)
- •16 Сортировка результатов запроса (предложение order by).
- •17 Подзапросы: типы, примеры, правила и ограничения, ключевые слова any, all, exist, not exist
- •18 Добавление данных (инструкции insert, merge).
- •19 Модификация и удаление данных (инструкции update, merge и delete).
- •20 Общие сведения о ddl.
- •21 Типы данных sql.
- •22 Создание таблиц (инструкция create table).
- •23 Изменение определения и удаление таблицы (инструкции alter ,drop table).
- •24 Создание псевдонимов и индексов таблиц (инструкции create/drop alias, create/drop index)
- •25 Создание представлений (инструкция create view). Преимущества и недостатки использования, основные виды
- •26 Проблемы обновления и удаление представлений.
- •27 Принципы защиты данных в sql: аутентификация пользователей, защищаемые объекты, использование привилегий и другие возможности обеспечения безопасности
- •28 Аутентификация. Создание и изменение пользователей. Аутентификация пользователей
- •29 Профили. Создание, изменение, удаление.
- •30 Привилегии. Системные привилегии.
- •31 Привилегии доступа к объектам схемы. Правила предоставления привилегий
- •32 Предоставление и отмена привилегий (инструкция grant и revoke).
- •33 Работа с привилегиями при помощи ролей. Системные роли, определение, изменение, удаление ролей
- •34 Аудит. Типы и применение аудита.
- •Типы аудита. В диспетчере авторизации можно использовать два вида аудита: аудит времени выполнения и аудит изменения хранилища данных авторизации. Аудит времени выполнения
- •Аудит изменений хранилища данных авторизации
- •35 Условия целостности данных
- •36 Правила добавления и удаления. Проблемы ссылочных циклов
- •37 Понятие транзакций. Инструкции обработки транзакций (commit и rollback)
- •38 Модель транзакции в стандарте ansi/iso
- •39 Журнал транзакций. Проблемы обработки параллельных транзакций.
- •40 Блокировки транзакций: уровни и виды, тупиковые ситуации.
- •41 Преимущества pl/sql и общие сведения о структуре pl/sql программ
- •42 Классификация блоков pl/sql.
- •43 Управление блоками в sql*Plus.
- •44 Лексические единицы pl/sql
- •45 Синтаксис объявления переменных, инициализация.
- •46 Скалярные типы pl/sql.
- •48 Коллекции (составные типы pl/sql).
- •Методы, применяемые при работе с коллекциями
- •Инициализация коллекций
- •50 Массовое связывание.
- •51 Преобразование типов данных. Область действия и область видимости переменных. Выражения и операции.
- •52 Управляющие структуры pl/sql. Область действия счетчика цикла, ограничения безусловных переходов условное управление
- •Итерационное управление
- •53 Понятие транзакции и виды блокировок Oracle
- •54 Операторы управления транзакциями в Oracle (commit, rollback, savepoint, set transaction, lock table).
- •55 Многоверсионная модель согласованности Oracle.
- •56 Автономные транзакции. Понятие прагмы.
- •57 Записи pl/sql. Использование %rowtype
- •58 Курсорные типы, переменные и выражения. Виды и назначение курсоров.
- •59 Обработка явных и неявных курсоров.
- •61 Динамический sql: использование пакета dbms_sql.
- •62 Алгоритма обработки данных в dbms_sql
- •63 Встроенный динамический sql (nds). (операторы execute immediate, open … for).
- •65 Классификация и определение программных единиц. Общие ключевые слова.
- •66 Создание и использование процедур
- •Вызов процедур и функций
- •67 Создание и использование (вызов) функций.
- •Вызов процедур и функций
- •68 Структура и определение пакета.
- •69 Триггеры бд: виды и создание
- •70 Последовательность событий и предикаты триггеров.
- •71 Пакет dbms_output.
- •72 Пакет utl_file(файловый ввод/вывод)
- •Безопасность
- •73 Пакет dbms_pipe: посылка и получение сообщений
- •74 Пакет dbms_pipe: создание программных каналов и управление ими.
- •75 Архитектура odbc и коды возврата
- •76 Основной алгоритм программ odbc. Инициализация и завершение.
- •77 Выполнение операторов: функции управления каталогом.
- •78 Непосредственное и подготавливаемое выполнение.
- •79 Выборка результатов.
- •80 Подробный алгоритм использования odbc в прикладных программах.
40 Блокировки транзакций: уровни и виды, тупиковые ситуации.
Когда транзакция Аобращается к базе данных, СУБД автоматически блокирует все части базы данных, в которых транзакция осуществляет выборку или изменение. ТранзакцияBвыполняется параллельно, и СУБД также блокирует те части базы данных, к которым она обращается. Если транзакцияBобращается к той части базы данных, которая заблокирована транзакциейА, то СУБД приостанавливает выполнение транзакцииB, заставляя ее ждать до тех пор, пока данные не будут разблокированы. СУБД снимает блокировку, вызванную транзакциейА, только после того, как в этой транзакции встретится инструкция COMMIT или ROLLBACK. Затем СУБД позволяет продолжить выполнение транзакцииB. Теперь транзакцияBблокирует эту же часть базы данных, защищая ее от других транзакций.
уровни
В базе данных блокировка может быть реализована на различных уровнях. Самой грубой формой блокировки является блокировка всей базы данных.
блокировка на уровне таблиц. В этом случае СУБД блокирует только те таблицы, к которым обращается транзакция. Остальные транзакции в это время могут обращаться к другим таблицам
блокировка на уровне страниц. В этом случае СУБД блокирует отдельные блоки данных на диске (“страницы”), когда транзакция обращается к ним. Остальным транзакциям запрещается доступ к заблокированным страницам, но они могут обращаться к другим страницам данных (и блокировать их для себя)
блокировка на уровне строк. Она допускает параллельное выполнение транзакций, которые обращаются к двум различным строкам таблицы, даже если эти строки содержатся на одной странице
Жесткая и нежесткая блокировки
• Когда транзакция извлекает информацию из базы данных, СУБД применяет нежесткуюблокировку. При этом другие транзакции, выполняемые параллельно, могут извлекать те же данные.
• Когда транзакция обновляет информацию в базе данных, СУБД применяет жесткуюблокировку. Если транзакция жестко заблокировала какие-либо данные, другие транзакции не могут обращаться к ним ни для выборки, ни для записи.
Тупиковые ситуации
К сожалению, применение любого механизма блокировки для поддержки параллельного выполнения транзакций приводит к возникновению проблемы, которая называется тупиковой ситуацией. ПрограммаАобновляет таблицу ORDERS и поэтому блокирует часть этой таблицы. Тем временем программаBобновляет таблицу PRODUCTS и блокирует ее часть. Затем программаАпытается обновить таблицу PRODUCTS, а программаBпытается обновить таблицу ORDERS, причем каждая пытается обновить ту часть таблицы, которая заблокирована другой программой
41 Преимущества pl/sql и общие сведения о структуре pl/sql программ
Набор элементов, реализующих возможности процедурного языка, составляет язык хранимых процедур (SPL—Stored Procedure Language).
PL/SQL— процедурный язык программирования, встроенный в большинство продуктов ORACLE. С помощью PL/SQL можно создавать программы, в которых объединяются операторы PL/SQL, предназначенные для управления выполнением программ, и SQL-операторы, с помощью которых можно обращаться к базам данных и обрабатывать информацию.
С помощью PL/SQLможно строить различные программные единицы для доступа к базам данных, в том числе процедуры, функции и модули. В настоящем разделе приведено множество примеров программPL/SQL, однако для самостоятельного создания программных конструкций наPL/SQLнеобходимо иметь четкое представление о базовых конструкциях этого языка.
procedure update_part_unitprice (part_id in integer, new_price in number)
is
invalid_part exception;
begin
updatesales.parts
setunit_price = new_price
whereid = part_id;
if sql %notfound then
raise invalid_part;
endif;
exception
when invalid_part then
raise_application_error(-20000, ‘Invalid Part ID’);
endupdate_part_unitprice;
