Когда заканчивается автономная транзакция для Oracle? - PullRequest
2 голосов
/ 06 марта 2012

Как я понимаю, автономные транзакции (в мире Oracle) автономная транзакция заканчивается, когда выдается коммит или откат. Однако я только что написал процедуру как автономную транзакцию, потому что мне нужно было изолировать часть DDL, которая изменяет табличное пространство с чтения только на чтение и запись.

Потом я начал думать о том, когда закончится автономный бит.

Проблема в том, что существует неявная фиксация как до, так и после выполнения DDL. Теперь я знаю, что мой код обладает желаемым эффектом, поэтому я могу только предположить, что первоначальный «пустой» коммит не является концом автономной транзакции, а последующий коммит. Что удивительно, так это то, что я не могу найти упоминаний об этом в Интернете.

Может кто-нибудь указать мне на документацию, которая объяснила бы мою загадку?

1 Ответ

3 голосов
/ 06 марта 2012

Подпрограмма, объявленная автономной, является автономной для всей подпрограммы и не заканчивается при выполнении фиксации или отката.
См. здесь в документации оракула:

...