Когда заканчивается автономная транзакция Oracle?

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

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

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

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


person Paul Coombes    schedule 06.03.2012    source источник
comment
Документы Oracle: docs.oracle.com/cd/E11882_01 /server.112/e16508/   -  person tbone    schedule 06.03.2012


Ответы (1)


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

person A.B.Cade    schedule 06.03.2012
comment
Когда вы входите в исполняемый раздел автономной процедуры, основная транзакция приостанавливается. Когда вы выходите из процедуры, основная транзакция возобновляется. Это все объясняет, большое спасибо за разъяснение моего недоразумения. - person Paul Coombes; 06.03.2012