Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 AUTONOMOUS_TRANSACTION в pipelined?  [new]
Dimka08
Member

Откуда:
Сообщений: 319
А автономные транзакции внутри "PIPELineD" как-то стремно ...

А почему стремно?
Если не для каждой строки, а фиксированное количество.
Какие могут быть проблемы?
11 июн 10, 17:58    [8933069]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Dimka08
Если не для каждой строки, а фиксированное количество.


1. За каким фигом в pipeline автономные транзакции ?
2. Pipeline после каждого PIPE ROW передает управление. Поэтому если была открыта транзакция,
надо ее фиксировать, иначе получишь исключение. Сие отражено в
документации.

автор

Because table functions pass control back and forth to a calling routine as rows are produced, there is a restriction on combining table functions and PRAGMA AUTONOMOUS_TRANSACTION. If a table function is part of an autonomous transaction, it must COMMIT or ROLLBACK before each PIPE ROW statement, to avoid an error in the calling subprogram.
11 июн 10, 18:26    [8933190]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Серафимный Шестикрыл

1. За каким фигом в pipeline автономные транзакции ?
2. Pipeline после каждого PIPE ROW передает управление. Поэтому если была открыта транзакция,
надо ее фиксировать, иначе получишь исключение.

Давайте все-таки определимся с понятиями.

Предлагаю:
"автономная транзакция в pipelined" - вызов автономок из pipelined функции - с целью логирования, например. Классика, ничему не противоречит.
"pipelined в автономной транзакции" - определение самой pipelined как автономки, тут все оба утверждения корректны.

Можно также рассматривать вариант "pipelined в автономной транзакции" как вызов pipelined из "автономной" функции, но тут тоже вроде все чисто, да и от кода pipelined никак не зависит - поэтому неинтересно.

Тогда суровой, но справедливой обструкции подвергаем лишь
function <func_name> return <tab> 
pipelined
is
pragma autonomous_transaction;
... 

в то время как

function <func_name> return <tab> 
pipelined
is
begin
  for .... loop
    ...
      log_something_autonomous(...);
      pipe_somebody_autonomous(...);
      dbms_application_info.set_session_longops(...);
      post_aq_message_autonomous(...);
... 
подчиняются обычным правилам разумной достаточности и целесообразности с учетом поведения, ожидаемого в контексте select.
11 июн 10, 18:46    [8933247]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
andrey_anonymous

Предлагаю:
"автономная транзакция в pipelined" - вызов автономок из pipelined функции - с целью логирования, например. Классика, ничему не противоречит.
"pipelined в автономной транзакции" - определение самой pipelined как автономки, тут все оба утверждения корректны.
...


Согласен.
11 июн 10, 19:03    [8933286]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
Dimka08
Member

Откуда:
Сообщений: 319
Я довольно часто использую AUTONOMOUS_TRANSACTION для логирования кто , когда и с какими параметрами вызвал функцию. Проблем вроде никогда не было, но подумалось может я просто не замечал, а на самом деле они есть.
11 июн 10, 19:14    [8933333]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Dimka08
Я довольно часто использую AUTONOMOUS_TRANSACTION для логирования кто , когда и с какими параметрами вызвал функцию. Проблем вроде никогда не было, но подумалось может я просто не замечал, а на самом деле они есть.


Автономка непременно должна сопровождаться фиксацией,
а частый commit есть прямой путь получить избыточную нагрузку
на LGWR. ;)
11 июн 10, 19:19    [8933347]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Серафимный Шестикрыл
Автономка непременно должна сопровождаться фиксацией

Скажем прямо: это - общее замечание по автономкам, а не pipelined-специфичное.
11 июн 10, 19:25    [8933371]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
andrey_anonymous
Скажем прямо: это - общее замечание по автономкам, а не pipelined-специфичное.


Прямо ответим :) - это правда, но последний вопрос уже не касался pipelined
а какбэ автономок вообще.
11 июн 10, 19:27    [8933381]     Ответить | Цитировать Сообщить модератору
 Re: AUTONOMOUS_TRANSACTION в pipelined?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Серафимный Шестикрыл
а какбэ автономок вообще.

ок :)
11 июн 10, 19:35    [8933401]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить