powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-04052, ORA-24757 при вызове функции по DBLINK
23 сообщений из 23, страница 1 из 1
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954541
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, столкнулись с проблемой при вызове функции по дблинку по типу
Код: plsql


При вызове сессия висит 1 минуту, после чего отваливается с ошибкой
Код: plaintext
1.
2.
3.
4.
ORA-04052: ошибка во время поиска удаленного объекта OWNER.PACKAGE.FUNCTION@DBLINK
ORA-00604: ошибка на рекурсивном SQL-уровне 1
ORA-24757: дублирующийся идентификатор транзакции
ORA-02063: предшествующий line из DBLINK

Если вместо
Код: plsql


делать вызов
Код: plsql


то нормально отрабатывает, а результат возвращается сразу
DBLINK подключается к удаленной базе под пользователем OWNER из запроса
Если в момент тормозов смотреть удаленную базу, то видно что создаётся 2 подключения
1. Висит в Active с событием SQL*Net Message from client
2. Висит в событии ENQ: DX contention, блокирующей сессией указывается первая сессия, время от времени событие меняется на Inactive transaction branch

Локальная база
Код: plaintext
1.
2.
3.
4.
5.
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
"CORE	12.2.0.1.0	Production"
TNS for Linux: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

Удаленная база
Код: plaintext
1.
2.
3.
4.
5.
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
"CORE	12.2.0.1.0	Production"
TNS for Linux: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

В чем может быть проблема, кто-нить сталкивался?
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954558
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код создания линка приведи
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954563
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

Код: plaintext
1.
2.
create public database link CAP
  connect to CAP
  using 'ALIAS';
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954570
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OWNER из первого поста это CAP?
Если нет, то юзеру CAP на удаленой БД дадены достаточные привилегии для вызова OWNER.PACKAGE.FUNCTION?

В функции нет обращения к другим объектам через DBLINK?
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954578
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

OWNER=CAP

В функции просто возвращается пакетная переменная
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954584
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А линк нужен именно публичный?
С приватным ситуация повторяется?

Похоже на баг
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954597
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,
пересоздал приватный, ничего не поменялось
Да, похоже на баг, а металинк что-то сегодня решил отдохнуть:(
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954608
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor

В функции просто возвращается пакетная переменная


пакетная переменная на удаленке?

если закоментировать обращение к пакетной?

.....
stax
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954613
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor,

И да, покажите как определена пакетная переменная, какого типа, как выполняется ее инициализация?



удаленка PDB?

Щас запилю testcase
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954628
Alexander Anokhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй перед вызовом выполнить dbms_transaction.local_transaction_id
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954639
Alexander Anokhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Anokhin
Попробуй перед вызовом выполнить dbms_transaction.local_transaction_id


Это работает для похожего бага (Bug 17572661 - ORA-24757 occurs on distributed transaction from read only database (Doc ID 17572661.8)) который пофиксен в 12.2.0.1, но все жё. Ещё стоит проверить повторяется ли проблема на идентичном, но физически другом, пакете в новой сессии.

Если не поможет, то можно сделать hang analyze или system state dump пока сессия висит, и посмотреть есть ли что интересное там. Ну и саппорту пригодятся.
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954641
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для loopback dblink повторения не вижу

Код: 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.
SQL>  create database link dbl connect to dropme2 identified by dropme2 using 'localhost/db122d1';

Database link created.


SQL> select dropme122.getx@dbl from dual;

      GETX
----------
       122

SQL> select dropme2.dropme122.getx@dbl from dual;

      GETX
----------
       122

SQL> show user
USER is "DROPME"
SQL> 

SQL> !cat dropme122.sql
create or replace package dropme2.dropme122 as
x number;
function getX return number;
end;
/

create or replace package body dropme2.dropme122 as 
function getX return number 
as
begin
return X;
end;
begin
x := 122;
end;
/
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954652
watson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

у вас dblink коннектится к той же схеме, в которой создан пакет - dropme2.

попробуйте создать пакет в отличной схеме, например dropme3 и, потом, выполнить

Код: plsql



Сам проверить не могу в данный момент, но думаю, ошибку повторить удастся.
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954675
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
watson,

Там схема другая

из dropme иду в dropme2
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954680
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> select dropme122.getx@dbl from dual;

      GETX
----------
       122

SQL> select dropme2.dropme122.getx@dbl from dual;

      GETX
----------
       122

SQL> show user
USER is "DROPME3"
SQL> 
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39954682
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor,

Удаленная база часом не readonly?

SY.
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39955229
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Спасибо за ответы

SYУдаленная база часом не readonly?
Нет, база не в ReadOnly

Staxесли закоментировать обращение к пакетной?
Это как? Смысл всей функции теряется, там кроме возврата ничего не делается. см. функцию ниже


Тест-кейс такой:

Удаленная база
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace package remote_const as
function fConst_1 return char deterministic; 

end;

create or replace package body remote_const as 
const_1 char := '0';
function fConst_1 return char deterministic as 
begin
  return const_1;
end;
end;



Локальная база
Код: plsql
1.
select cap.remote_const.fConst_1@cap from dual


Первый раз после создания пакета срабатывает нормально
На второй раз уже висит

Alexander AnokhinПопробуй перед вызовом выполнить dbms_transaction.local_transaction_id
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
 res varchar2(500);
begin
res := dbms_transaction.local_transaction_id(true);
DBMS_OUTPUT.PUT_LINE( res);
end;

select cap.remote_const.fConst_1@cap from dual


добавление предварительного вызова функции не помогает

Alexander Anokhin Ещё стоит проверить повторяется ли проблема на идентичном, но физически другом, пакете в новой сессии.
То есть проблема повторяется на идентичном пакете
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39955297
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверьте список синонимов.
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39955318
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Пусто, синонимов CAP ни на локальной, ни на удаленной базе нет
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39955323
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor
andrey_anonymous,

Пусто, синонимов CAP ни на локальной, ни на удаленной базе нет

А для remote_const?
А паблик смотрели?
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39955330
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

да и паблик и для тестового пакета и для оригинального - ничего такого нет
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #39977157
Alex Rubtsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер, господа!

Наблюдается такая же ситуация на "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0".

В тестовых целях сделал dblink на этот же сервер, но в другую схему.
Через dblink все ошибки как описал ТС: с использованием OWNER - ошибка, без OWNER - OK .
Без dblink - наоборот. ;)

Удалось решить проблему ?

--
С уважением, Алексей.
...
Рейтинг: 0 / 0
ORA-04052, ORA-24757 при вызове функции по DBLINK
    #40060087
stil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor,

вот чтото подобное и у меня творится. Удалось решить проблему?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-04052, ORA-24757 при вызове функции по DBLINK
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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