Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных / 9 сообщений из 9, страница 1 из 1
04.10.2021, 09:43
    #40101688
stil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
PROCEDURE L_S(
        ....
)
    AS
        PRAGMA AUTONOMOUS_TRANSACTION;
...
    BEGIN
IF UPPER(PG.GET_OPTIONS('Opt')) = 'TRUE' THEN 
            NULL;
        ELSE
            NULL;
       END IF;
END;



Функция GET_OPTIONS из пакета PG:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
FUNCTION GET_OPTIONS(p_key VARCHAR2)
    RETURN VARCHAR2
    AS
        l_result VARCHAR2(256 CHAR);
    BEGIN

        SELECT VALUE
        INTO l_result
        FROM P_OPTIONS@DBDBLINK
        WHERE UPPER(KEY) = UPPER(p_key);

        RETURN(l_result);
    EXCEPTION
        WHEN NO_DATA_FOUND THEN RETURN NULL;
    END;



На выходе получаю: ORA-06519: active autonomous transaction detected and rolled back

Как?? Почему транзакция активна? Нет же никаких изменений данных

v12
...
Рейтинг: 0 / 0
04.10.2021, 09:54
    #40101694
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
stil,

c PRAGMA AUTONOMOUS_TRANSACTION

должна "заканчиваться" commit/rollback

.....
stax
...
Рейтинг: 0 / 0
04.10.2021, 10:14
    #40101708
stil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
Stax
stil,

c PRAGMA AUTONOMOUS_TRANSACTION

должна "заканчиваться" commit/rollback

.....
stax


Да. Я в курсе - уже поправил. Но мне не понятно (для понимания) почему не проканало. Всегда считал, что активность транзакции начинается не объявлением прагмы, а какими то "активными" изменениями. Ошибался?
...
Рейтинг: 0 / 0
04.10.2021, 10:30
    #40101715
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
stil

что активность транзакции начинается не объявлением прагмы,


имхо,
с началом "блока"

......
stax
...
Рейтинг: 0 / 0
04.10.2021, 12:27
    #40101759
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
Потому что распределенная
...
Рейтинг: 0 / 0
04.10.2021, 12:29
    #40101761
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
stilВсегда считал, что активность транзакции начинается не объявлением прагмы, а
какими то "активными" изменениями. Ошибался?

Да. Сервером. Здесь не MS SQL.

Транзакция с уровнем изоляции выше Read Committed должна видеть данные в
состоянии на момент своего старта. Для этого этот момент должен быть чётко
определён.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.10.2021, 12:42
    #40101763
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
Stax

с началом "блока"


В Oracle транзакция начинается с первого DML или как у OP FROM P_OPTIONS @DBDBLINK , т.е. с любого distributed/remote (а не только DML) SQL или PL/SQL. Посему OP и получает ORA-06519:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SQL> select saddr from v$session where sid in (select sid from v$mystat);

SADDR
----------------
00007FF6BBC42B38

SQL> select count(*) from v$transaction where ses_addr = '00007FF6BBC42B38';

  COUNT(*)
----------
         0

SQL> begin
  2      null;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> select count(*) from v$transaction where ses_addr = '00007FF6BBC42B38';

  COUNT(*)
----------
         0

SQL> begin
  2      pkg1.proc1@remote_db;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> select count(*) from v$transaction where ses_addr = '00007FF6BBC42B38';

  COUNT(*)
----------
         1

SQL>



PKG1:

Код: plsql
1.
2.
3.
4.
CREATE OR REPLACE PACKAGE PKG1 IS PROCEDURE PROC1; END;
/
CREATE OR REPLACE PACKAGE BODY PKG1 IS PROCEDURE PROC1 IS BEGIN NULL; END; END;
/



SY.
...
Рейтинг: 0 / 0
04.10.2021, 16:40
    #40101855
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
Вячеслав Любомудров
Потому что распределенная

То есть вы имели в виду "автономная"?
...
Рейтинг: 0 / 0
04.10.2021, 18:08
    #40101894
stil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
SQL*Plus
Вячеслав Любомудров
Потому что распределенная

То есть вы имели в виду "автономная"?


Думаю что имелся ввиду dblink как раз. У меня тоже были в эту сторону подозрения
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]