Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-04052, ORA-24757 при вызове функции по DBLINK / 23 сообщений из 23, страница 1 из 1
06.05.2020, 12:00
    #39954541
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Добрый день, столкнулись с проблемой при вызове функции по дблинку по типу
Код: 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
06.05.2020, 12:41
    #39954558
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Код создания линка приведи
...
Рейтинг: 0 / 0
06.05.2020, 12:50
    #39954563
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Вячеслав Любомудров,

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

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

OWNER=CAP

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

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

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


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

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

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

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



удаленка PDB?

Щас запилю testcase
...
Рейтинг: 0 / 0
06.05.2020, 14:53
    #39954628
Alexander Anokhin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Попробуй перед вызовом выполнить dbms_transaction.local_transaction_id
...
Рейтинг: 0 / 0
06.05.2020, 15:08
    #39954639
Alexander Anokhin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
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
06.05.2020, 15:16
    #39954641
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
для 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
06.05.2020, 15:36
    #39954652
watson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Vadim Lejnin,

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

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

Код: plsql



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

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

из dropme иду в dropme2
...
Рейтинг: 0 / 0
06.05.2020, 16:26
    #39954680
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Код: 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
06.05.2020, 16:28
    #39954682
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
feagor,

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

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

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
08.05.2020, 14:03
    #39955297
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
Проверьте список синонимов.
...
Рейтинг: 0 / 0
08.05.2020, 14:34
    #39955318
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04052, ORA-24757 при вызове функции по DBLINK
andrey_anonymous,

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

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

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

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

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

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

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

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

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


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