powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
9 сообщений из 9, страница 1 из 1
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
    #40101688
stil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
    #40101694
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stil,

c PRAGMA AUTONOMOUS_TRANSACTION

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

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

c PRAGMA AUTONOMOUS_TRANSACTION

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

.....
stax


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

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


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

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

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

Транзакция с уровнем изоляции выше Read Committed должна видеть данные в
состоянии на момент своего старта. Для этого этот момент должен быть чётко
определён.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
    #40101763
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ORA-06519: active autonomous transaction detected при отсутствии каких то изменений данных
    #40101855
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
Потому что распределенная

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

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


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


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