Автономные транзакции
Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску
Автономные транзакции в СУБД Oracle представляют собой новый метод управления транзакциями. Автономные транзакции позволяют создавать новые подтранзакции (subtransaction), которые могут сохранять или отменять изменения вне зависимости от родительской транзакции.
Могут использоваться
- в анонимных блоках верхнего уровня;
- в локальных, отдельных или входящих в пакеты процедурах и функциях;
- в методах объектных типов;
- в триггерах базы данных.
Когда удобно использовать
- Проверка, записи которой не могут быть отменены.
- Ошибка изменяющейся таблицы (Чаще всего она возникает при попытке читать данные из таблицы, в ответ на изменение которой сработал триггер).
- Выполнение операторов ЯОД в триггерах
- Запись в базу данных
- строгая проверка; необходимо знать, какие данные видел каждый из пользователей, или надо записать идентификатор каждой записи, запрошенной у системы;
- средство создания отчетов позволяет выполнять только SQL-операторы SELECT; абсолютно необходимо по ходу построения отчета вызывать хранимую процедуру, выполняющую ряд вставок (например, заполняющую таблицу параметров для другого отчета).
- Разработка модульного кода.
Проблемы
- Невозможность использования в распределенных транзакциях.
- Автономные транзакции доступны только в среде PL/SQL.
- Откатывается вся транзакция
- Временные таблицы уровня транзакции (нельзя одновременно использовать в нескольких транзакциях в одном сеансе).
- Изменяющиеся таблицы (обязательно проверять корректность каждого триггера)
Ошибки
- ORA-06519: выполнен откат назад для незавершенной автономной транзакции
- Причина: Перед выходом из автономного PL/SQL-блока все начатые в нём автономные транзакции должны быть завершены (зафиксированы или отменены). В противном случае активная автономная транзакция неявно откатывается и выдаётся это сообщение об ошибке.
- Действие: Убедиться, что перед выходом из автономного PL/SQL-блока все активные автономные транзакции явно зафиксированы или отменены.
- ORA-14450: попытка доступа к уже используемой временной таблице транзакций
- Причина: Выполнена попытка доступа к временной таблице уровня транзакции, данные в которую поместила другая транзакция, одновременно выполняющаяся в том же сеансе.
- Действие: Не пытаться обращаться ко временной таблице, пока одновременно выполняющаяся транзакция не будет зафиксирована или отменена.
- ORA-00060: взаимная блокировка при ожидании ресурса
- Причина: Произошла взаимная блокировка транзакций при ожидании ресурса.
- Действие: Определить по трассировочному файлу, какие транзакции и ресурсы стали причиной взаимной блокировки. При необходимости повторить транзакцию.
Ссылки
ПО | Это незавершённая статья о программном обеспечении. Вы можете помочь проекту, исправив и дополнив её. |
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....
→