Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ ORACLE SQL \ JAVA ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

WEB Разработка

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Основы Oracle 18c - 19c часть 5 - транзакции


 
 
Основы Oracle 18c - 19c часть 5 - транзакции
 
 
В данной заметке речь пойдет о транзацкциях
 
 
Из предыдущих уроков имеем три взаимосвязанные таблицы с данными колонками:
 
payments ( payment_num, payment_date, customer, customer_address, total_cost )
 
payments_goods ( payment_num, good_num, good_name, quantity, price, cost )
 
payments_services ( payment_num, service_name, cost )
 
 
Транзакция по сути - логическая единица работы в базе данных
 
Начинается с первого исполняемого опертартора SQL, завершается при фиксации или откате
 
Исполняемый оператор SQL - который генерирует обращения к экземпляру БД
Включая операторы DML и DDL и оператор SET TRANSACTION
 
 
Фиксация транзакции имеет следующую логику:
 
Создает данные для отмены undo, состоит из значений данных, подлежащих модификации до внесения изменений
Создает данные повторного выполнения redo
БД пишет на диск содержимое буферов журнала повторного выполнения перед фиксацией транзакции
Делает изменения в буферах бд, сама бд может писать модифицированные буферы на диск перед фиксацией транзакции
БД может писать изменения транзакции немедленно или с задержкой из буферов бд в файлы данных
 
При фиксации транзакции БД делает:
 
Записывает SCN для фиксируемой транзакции
SCN – логическая временная метка упорядочивания событий, происходящих с БД
SCN похожи на возрастающие номера последовательностей, которые увеличиваются в SGA
wallwriter - записывает элементы журнала повторного выполнения
Пишет в файл журнала повторного выполнения на диске из буфера журнала повторного выполнения в SGA
Пишет SCN транзакции в файл журнала повторного выполнения, помечая фиксацию транзакции
БД освобождает блокировки таблиц и строк
БД помечает транзакцию завершенной
 
 
Откат транзакции
 
Отменить изменения  транзакции, если они еще не были зафиксированы можно с помощью ROLLBACK
Возможно откатить все изменения или вернуться к точке сохранения
 
Кем и как может произойти откат:
Человеком
Произошедший аварийно ввиду прерывания работы процесса
Откат незафиксированных транзакций во время восстановления
Откат на уровне оператора, произошедший из-за ошибки выполнения оператора
 
Процедура для всех случаев отката выглядит так:
БД использует данные в виде, который они имели до изменения в табличном пространстве в undo
БД освобождает все блокировки транзакции и таблицы.
БД завершает транзакцию
 
 
Транзакции имеют операторы управления:
 
 
Слова WORK необязательный характер:
 
 
Используется таблица для примера: 
payments_services ( payment_num, service_name, cost )
 
 
В следующем примере:
Выполняется инструкция UPDATE, чтобы начать транзакцию
Запрашивается V$TRANSACTION для получения подробной информации о транзакции
Совершается откат
Транзакция больше не существует
 
 
 
 
Для более подробного изучения транзакций обратитесь к оф. документации
 
 
Примеры работы с транзакциями 
Можете использовать UPDATE, DELETE, INSERT для изменения данных
 
 
 

Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект