Проект «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 для изменения данных
 
 
 

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

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

Контакты для обмена ссылками между сайтами Видео к статьям на Youtube Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и Linux Код обмена баннерами
Мои друзья: www.info-x.org - Информационный ресурс о ОС FreeBSD За сложными вещами простые действия Новости Ubuntu Linux Сообщество сисадминов Личный сайт skeletora Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

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

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