powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-{04052,00604,02020}
19 сообщений из 19, страница 1 из 1
ORA-{04052,00604,02020}
    #39792726
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Стоит задача валидировать дб-линки на предмет работоспособности.
Написал вот такой блок.
Код: 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.
declare
	tmp number;
begin
	--Проверка ДБ-Линков
	begin
  		    
		select 1 into tmp from dual@link1.link;	
		rollback;
		execute immediate 'alter session close database link link1.link';   
			
		select 1 into tmp from dual@link2.link;	
		rollback;
		execute immediate 'alter session close database link link2.link';   

		select 1 into tmp from dual@link3.link;	
		rollback;
		execute immediate 'alter session close database link link3.link';   
			
		select 1 into tmp from dual@link4.link; 
		rollback;
		execute immediate 'alter session close database link link4.link';  
			 
		select 1 into tmp from dual@link5.link; 
		rollback;
		execute immediate 'alter session close database link link5.link';  
      
	exception when others then
		raise_application_error(-20101, 'Ошибка при проверке линков: '||chr(13)||chr(10)||utils.error_stack);
	end;
   --Прочие проверки 
   -- ...
exception 
   when others then
   	dbms_output.put_line(sqlerrm);
	  	rollback;
end;
      


Выдает ошибку вида
ORA-04052: ошибка во время поиска удаленного объекта myScheme.dual@link5.link
ORA
-00604: ошибка на рекурсивном SQL-уровне 1
ORA-02020: используется слишком много каналов связи БД

open_links = 4

Вопросов несколько:
1. Почему не происходит закрытие дб-линка после каждого запроса?
2. Почему после выбрасывания ошибки, текущая сессия девелопера предлагает роллбэк/коммит?
3. Нужна ли перезагрузка базы при изменении значения open_links?
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792728
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfio1. Почему не происходит закрытие дб-линка после каждого запроса?До выполнения дело не доходит.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792730
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioВыдает ошибку видаЭто ошибка компиляции удалённой статики в PL/SQL.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792740
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, можно попросить разъяснить попроще? Ошибка в синтаксисе хотите сказать?
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792743
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioКоллегиТы ещё не совсем дорос до.
wolfioОшибка в синтаксисе хотите сказать?Посмотри внимательно на весь стек ошибок.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792745
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
я зашел на проф.форум. Это называется этика.

Все линки работают по отдельности через select 1 from dual@link<;>.link
Спасибо за ответ, к сожалению он бесполезен.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792746
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioСпасибо за ответ, к сожалению он бесполезен.Самовлюблённость взамен мозгов тебе не поможет понять твою проблему.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792749
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините, если мой комментарий Вас задел.

По дело что-то можете подсказать?
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792750
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, кстати, если бы ты умел мыслить процедурно, а не копипастно, то твоя проблема вряд ли возникла бы.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792751
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioПо дело что-то можете подсказать?Всё уже сказано. Включай мозг.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39792756
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда есть время, можно потренироваться :).

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
Connected to Oracle Database 11g Release 11.2.0.4.0 
Connected as supermag@//192.168.1.201/DBOFFICE

SQL> set serveroutput on;
SQL> 
SQL> declare
  2    tmp varchar2(100);
  3  begin
  4      for c in (select 'select '||level||' lvl from dual@DBNOHT0'||level query from dual connect by level < 10) loop
  5        dbms_output.put_line(c.query);
  6        execute immediate c.query into tmp;
  7        dbms_output.put_line(' tmp: '||tmp);
  8        commit;
  9      end loop;
 10  exception
 11     when others then
 12     dbms_output.put_line(sqlerrm);
 13     rollback;
 14  end;
 15  /
 
select 1 lvl from dual@DBNOHT01
 tmp: 1
select 2 lvl from dual@DBNOHT02
 tmp: 2
select 3 lvl from dual@DBNOHT03
 tmp: 3
select 4 lvl from dual@DBNOHT04
 tmp: 4
select 5 lvl from dual@DBNOHT05
 tmp: 5
select 6 lvl from dual@DBNOHT06
 tmp: 6
select 7 lvl from dual@DBNOHT07
 tmp: 7
select 8 lvl from dual@DBNOHT08
 tmp: 8
select 9 lvl from dual@DBNOHT09
 tmp: 9

PL/SQL procedure successfully completed


SQL> 
SQL> declare
  2    tmp varchar2(100);
  3  begin
  4      for c in (select 'select '||level||' lvl from dual@DBNOHT0'||level query from dual connect by level < 10) loop
  5        dbms_output.put_line(c.query);
  6        execute immediate c.query into tmp;
  7        dbms_output.put_line(' tmp: '||tmp);
  8        --commit;
  9      end loop;
 10  exception
 11     when others then
 12     dbms_output.put_line(sqlerrm);
 13     rollback;
 14  end;
 15  /
select 1 lvl from dual@DBNOHT01
 tmp: 1
select 2 lvl from dual@DBNOHT02
 tmp: 2
select 3 lvl from dual@DBNOHT03
 tmp: 3
select 4 lvl from dual@DBNOHT04
 tmp: 4
select 5 lvl from dual@DBNOHT05
ORA-02020: используется слишком много каналов связи БД

PL/SQL procedure successfully completed


SQL> 
SQL> declare
  2    tmp number;
  3  begin
  4    select count(1) into tmp
  5      from (
  6              select 1 lvl from dual@DBNOHT01 union all
  7              select 1 lvl from dual@DBNOHT02 union all
  8              select 1 lvl from dual@DBNOHT03 union all
  9              select 1 lvl from dual@DBNOHT04 union all
 10              select 1 lvl from dual@DBNOHT05
 11           );
 12  exception
 13     when others then
 14     dbms_output.put_line(sqlerrm);
 15     rollback;
 16  end;
 17  /
declare
  tmp number;
begin
  select count(1) into tmp
    from (
            select 1 lvl from dual@DBNOHT01 union all
            select 1 lvl from dual@DBNOHT02 union all
            select 1 lvl from dual@DBNOHT03 union all
            select 1 lvl from dual@DBNOHT04 union all
            select 1 lvl from dual@DBNOHT05
         );
exception
   when others then
   dbms_output.put_line(sqlerrm);
   rollback;
end;

ORA-04052: ошибка во время поиска удаленного объекта SUPERMAG.DUAL@DBNOHT05
ORA-00604: ошибка на рекурсивном SQL-уровне 1
ORA-02020: используется слишком много каналов связи БД

SQL> 

...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39793856
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,
спасибо.

Можете разъяснить в чем принципиальная разница между динамическим вызовом и прямым?
в v$dblink линки всеровно не закрываются.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39793867
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioв чем принципиальная разница между динамическим вызовом и прямым?

https://www.google.ru/search?client=opera&q=dynamic+sql&sourceid=opera&ie=UTF-8&oe=UTF-8]Dynamic SQL is a programming technique that enables you to build SQL statements dynamically at runtime

wolfioв v$dblink линки всеровно не закрываются.

Код: plsql
1.
2.
alter session close database link
dbms_session.close_database_link()
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39793998
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfiodmdmdm,
спасибо.

Можете разъяснить в чем принципиальная разница между динамическим вызовом и прямым?
в v$dblink линки всеровно не закрываются.Ты так и не понял, что ломается на этапе компиляции, когда PL/SQL парсер проверяет наличие и доступность всех (в том числе и удаленных) объектов, на которые есть явные ссылки в коде.
Поэтому все твои красивые попытки закрыть линк просто не выполняются
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39794210
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не понял, почему это происходит на проверке 5го линка по счету. Если в моем примере оставить до 4 блоков, ошибок не будет.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39794223
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про параметр open_links вы сами написали.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39794270
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чувак, еще раз подумай
Тебе все расжевали 3 раза
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39794407
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioя не понялЕсли всё так туго с пониманием, то может не всё так плохо с исполнительностью? Приведи
Elic весь стек ошибок.
...
Рейтинг: 0 / 0
ORA-{04052,00604,02020}
    #39794468
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, господа эксперты. Ошибка мне ясна.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-{04052,00604,02020}
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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