Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
То есть скажется ли SET ISOLATION LEVEL внутри моей процедуры на того кто ее вызовет? У меня включено pragma autonomous_transaction.

И почему без SET TRANSACTION ISOLATION LEVEL SERIALIZABLE я не вижу данных из вызывающей меня процедуры? Может видимость делаетя как-то проще?
22 апр 09, 13:18    [7097966]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Автономная транзакция - она и есть автономная транзакция, на которую распространяется
принцип ACID в полной мере. Сформулируй нормально, что тебе нужно.
22 апр 09, 13:28    [7098077]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
A. S.
1. То есть скажется ли SET ISOLATION LEVEL внутри моей процедуры на того кто ее вызовет? У меня включено pragma autonomous_transaction.

2. И почему без SET TRANSACTION ISOLATION LEVEL SERIALIZABLE я не вижу данных из вызывающей меня процедуры? Может видимость делаетя как-то проще?


1. В таком случаи нет. Но я не совсем понимаю зачем такое нужно делать.
2. Приведите пример пожалуйста. Ибо если я Вас верно понял то это вообще муть какая то.
22 апр 09, 13:31    [7098114]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
A. S.,

попробуйте толком объяснить, чего хотите сделать.
пока это выглядит как потуги запутать себя самогО
22 апр 09, 13:40    [7098193]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
Серафимный Шестикрыл
Автономная транзакция - она и есть автономная транзакция, на которую распространяется
принцип ACID в полной мере. Сформулируй нормально, что тебе нужно.


Мне нужно не нарушить работу системы своей процедурой. В ней (моей процедуре) есть
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Может ли этот isolation level распространится на всю сессию?
22 апр 09, 13:40    [7098203]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

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

Мне нужно не нарушить работу системы своей процедурой. В ней (моей процедуре) есть
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Может ли этот isolation level распространится на всю сессию?


А ты документацию читал прежде чем задать вопрос ?
Что именно говорит документация о scope данного оператора ?
22 апр 09, 13:43    [7098239]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
A. S.,

А причем тут вообще нарушать работу, чем Вы ее нарушите?
22 апр 09, 13:45    [7098263]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
Lecter
A. S.,

А причем тут вообще нарушать работу, чем Вы ее нарушите?


Я столкнулся с ситуацией, что моя автономная транзакция какого то фига не видит данных из процедуры, ее вызывающей. Уже едет крыша и пробую все что можно. Когда включаю SERIALIZABLE, то видит эти данные. Уже ни в чем не уверен, точно знаю что в вызывающей процедуре ни где не переключается ISOLATION LEVEL.
22 апр 09, 14:24    [7098647]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
аселъ...
Guest
A. S.
Я столкнулся с ситуацией, что моя автономная транзакция какого то фига не видит данных из процедуры, ее вызывающей.

ГЫГЫ
не тормози, дружок
транзакция АВТОНОМНАЯ
так же отдельная сессия А, не видит незафиксированных изменений сделанных в сессии Б,
также АВТОНОМНАЯ транзакция не видит незафиксированных изменений в вызывающей транзакции
22 апр 09, 14:27    [7098685]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
A. S.
Я столкнулся с ситуацией, что моя автономная транзакция какого то фига не видит данных из процедуры, ее вызывающей. Уже едет крыша и пробую все что можно. Когда включаю SERIALIZABLE, то видит эти данные. Уже ни в чем не уверен, точно знаю что в вызывающей процедуре ни где не переключается ISOLATION LEVEL.


- Скажи ему что-нибудь по старославянски !
- Аки-паки иже херувимы... (c)

Каких именно данных ?
Где "включаю" ?
Покажи пример в SQL*Plus.
22 апр 09, 14:29    [7098702]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
аселъ...
Guest
другими словами,
незафиксированные изменения видны только в той транзакции, где они сделаны
соответственно, автономная транзакция не увидит незафиксированных изменений в любой другой транзакции
22 апр 09, 14:31    [7098724]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
аселъ...
A. S.
Я столкнулся с ситуацией, что моя автономная транзакция какого то фига не видит данных из процедуры, ее вызывающей.

ГЫГЫ
не тормози, дружок
транзакция АВТОНОМНАЯ
так же отдельная сессия А, не видит незафиксированных изменений сделанных в сессии Б,
также АВТОНОМНАЯ транзакция не видит незафиксированных изменений в вызывающей транзакции


То есть верно что с SERIALIZABLE должно видеть?
22 апр 09, 14:35    [7098760]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
A. S.,

Верно будет рассказать что именно нужно.
Я не вижу логики делать автономною транзакцию если Вам нужны изменения из текущей...

Зачем Вам нужна ИМЕННО автономная транзакция.
22 апр 09, 14:38    [7098798]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
аселъ...
A. S.
Я столкнулся с ситуацией, что моя автономная транзакция какого то фига не видит данных из процедуры, ее вызывающей.

ГЫГЫ
не тормози, дружок
транзакция АВТОНОМНАЯ
так же отдельная сессия А, не видит незафиксированных изменений сделанных в сессии Б,
также АВТОНОМНАЯ транзакция не видит незафиксированных изменений в вызывающей транзакции

легко состряпать сценарий, который показывает, что иначе (если без грязи, то) и быть не может..
begin
procedure pra (p1 number,p2 number) is
  pragma autonomous_transaction;
begin
  insert into scott.emp(empno,deptno)values(p1,p2);
  commit;
end;

insert into scott.dept (deptno) values (66);
pra(66,7777);
rollback;
end;
22 апр 09, 14:38    [7098801]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

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

То есть верно что с SERIALIZABLE должно видеть?


А ты сам как думаешь ?

ПРИМЕР ТОГО, ЧТО ТЫ ДЕЛАЕШЬ, ПОКАЖИ, мля.
22 апр 09, 14:39    [7098806]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
A. S.
аселъ...
A. S.
Я столкнулся с ситуацией, что моя автономная транзакция какого то фига не видит данных из процедуры, ее вызывающей.

ГЫГЫ
не тормози, дружок
транзакция АВТОНОМНАЯ
так же отдельная сессия А, не видит незафиксированных изменений сделанных в сессии Б,
также АВТОНОМНАЯ транзакция не видит незафиксированных изменений в вызывающей транзакции


То есть верно что с SERIALIZABLE должно видеть?


АВТОНОМНАЯ транзакция с SERIALIZABLE видит незафиксированные изменений в вызывающей транзакции?
22 апр 09, 14:39    [7098807]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
аселъ...
Guest
A. S.

То есть верно что с SERIALIZABLE должно видеть?


абсолютно неверно
22 апр 09, 14:39    [7098811]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
A. S.
АВТОНОМНАЯ транзакция с SERIALIZABLE видит незафиксированные изменений в вызывающей транзакции?


А проверить ты тоже не в состоянии ?

SQL> select * from t;

         X
----------
         1

SQL> update t set x = 2;

1 row updated.

SQL> declare
  2   pragma autonomous_transaction;
  3  begin
  4   for v in (select * from t) loop
  5    dbms_output.put_line(v.x);
  6   end loop;
  7  end;
  8  /
1

PL/SQL procedure successfully completed.

SQL> declare
  2   pragma autonomous_transaction;
  3  begin
  4   set transaction isolation level serializable;
  5   for v in (select * from t) loop
  6    dbms_output.put_line(v.x);
  7   end loop;
  8   commit;
  9  end;
 10  /
1

PL/SQL procedure successfully completed.

SQL> select * from t;

         X
----------
         2

Уровень SERIALIZABLE - более строгий, чем READ COMMITTED.

P.S. Чукча в принципе не читатель ?
22 апр 09, 14:44    [7098852]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
Серафимный Шестикрыл
A. S.
АВТОНОМНАЯ транзакция с SERIALIZABLE видит незафиксированные изменений в вызывающей транзакции?


А проверить ты тоже не в состоянии ?

SQL> select * from t;

         X
----------
         1

SQL> update t set x = 2;

1 row updated.

SQL> declare
  2   pragma autonomous_transaction;
  3  begin
  4   for v in (select * from t) loop
  5    dbms_output.put_line(v.x);
  6   end loop;
  7  end;
  8  /
1

PL/SQL procedure successfully completed.

SQL> declare
  2   pragma autonomous_transaction;
  3  begin
  4   set transaction isolation level serializable;
  5   for v in (select * from t) loop
  6    dbms_output.put_line(v.x);
  7   end loop;
  8   commit;
  9  end;
 10  /
1

PL/SQL procedure successfully completed.

SQL> select * from t;

         X
----------
         2

Уровень SERIALIZABLE - более строгий, чем READ COMMITTED.

P.S. Чукча в принципе не читатель ?


Вам, конечно, спасибо, но толерантней надо быть к окружающим.

Ну у меня есть "черный ящик", мне надо вытащить данные из темповой таблицы с которой тут работают. Внутри есть вызов моей процедуры, собсно все.

begin
execute immediate 'begin myuser.myproc; end;';
exception when others then null;
end;
22 апр 09, 15:03    [7099046]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
A. S.
Ну у меня есть "черный ящик", мне надо вытащить данные из темповой таблицы с которой тут работают. Внутри есть вызов моей процедуры, собсно все.

begin 
  execute immediate 'begin myuser.myproc; end;';
exception when others then null;
end;


И зачем Вам автономная транзакция?
И when others then null - очень плохая практика, тем более зачем это здесь?
22 апр 09, 15:09    [7099120]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Wadim S
Member

Откуда: Ukraine
Сообщений: 178
A. S.

exception when others then null;

Интересно, есть ли варианты когда такое может быть оправдано?
22 апр 09, 15:09    [7099123]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

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

Ну у меня есть "черный ящик", мне надо вытащить данные из темповой таблицы с которой тут работают. Внутри есть вызов моей процедуры, собсно все.


Ты считаешь, что что-то объяснил ?

A. S.

begin
execute immediate 'begin myuser.myproc; end;';
==>exception when others then null;
end;


За такие "конструкции" в приличном обществе бьют по фейсу, не вдаваясь
в тонкую душевную организацию автора.

Я так подозреваю, что именно в этом куске все дело.

A. S.

но толерантней надо быть к окружающим.


Только при условии что окружающие - а конкретно ты - перестанут вести себя
как бараны в танке, придут наконец в сознание, ПРОЧИТАЮТ ДОКУМЕНТАЦИЮ и
адекватно опишут свою проблему. Глядишь, и вопросы отпадут.
22 апр 09, 15:11    [7099141]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
__vvp_
begin 
  execute immediate 'begin myuser.myproc; end;';
exception when others then null;
end;


И зачем Вам автономная транзакция?
[/quot]

Осталось еще спросить, зачем ему динамический вызов.
22 апр 09, 15:13    [7099159]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
A. S.
Member

Откуда: Донецк
Сообщений: 320
Серафимный Шестикрыл
[quot A. S.]

За такие "конструкции" в приличном обществе бьют по фейсу, не вдаваясь
в тонкую душевную организацию автора.

Я так подозреваю, что именно в этом куске все дело.

[quot A. S.]


Как в "приличном обществе" делают если есть вероятность того что моего пользователя не будет в системе? Ходят бьют друг друга по фейсу? :)
22 апр 09, 15:15    [7099177]     Ответить | Цитировать Сообщить модератору
 Re: Влияет ли SET ISOLATION LEVEL внутри автономной транзакции на всю сессию?  [new]
Серафимный Шестикрыл
Member [заблокирован]

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

Как в "приличном обществе" делают если есть вероятность того что моего пользователя не будет в системе? Ходят бьют друг друга по фейсу? :)


В приличном обществе обрабатывают соответствующие исключения, а не глотают все подряд
безвозвратно.

А по фейсу бьют, когда недоразработчик использует программные конструкции, даже не пытаясь
выяснить их смысл.
22 апр 09, 15:18    [7099204]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить