Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-02020 / 9 сообщений из 9, страница 1 из 1
12.10.2016, 19:37
    #39325642
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
В поиске нашел несколько тем, решил завести новую. Вроде понял, почему так происходит, но не до конца.

Код: 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.
declare
  v1 varchar2(100);
  v2 varchar2(100);
begin
  rollback;
  for c in (select title, indir, commentary from smpostlocations where commentary not like '%(закрыт)%'order by title) loop  
    begin
      execute immediate 'alter session set NLS_TERRITORY = ''AMERICA''';
      execute immediate 'select paramvalue 
                           from supermag.SSSysInfo@'||c.title||'
                           where paramname=''Version''' into v1;

      execute immediate 'select banner
                           from v$version@'||c.title||'
                           where rownum = 1' into v2;

      rollback;
      dbms_output.put_line(c.title||': '||v1||', version: '||v2);
    exception when others then
      dbms_output.put_line(c.title||': '||sqlerrm);
      rollback;
    end;
  end loop;
end;
;



Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
DBNOHT01: ORA-02020: используется слишком много каналов связи БД
DBNOHT02: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT03: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT04: ORA-02020: используется слишком много каналов связи БД
DBNOHT05: ORA-02020: используется слишком много каналов связи БД
DBNOHT06: ORA-02020: используется слишком много каналов связи БД
DBNOHT07: ORA-02020: используется слишком много каналов связи БД
DBNOHT08: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT09: ORA-02020: используется слишком много каналов связи БД
DBNOHT10: ORA-02020: используется слишком много каналов связи БД
DBNOHT11: ORA-02020: используется слишком много каналов связи БД
DBNOHT12: ORA-02020: используется слишком много каналов связи БД
DBNOHT13: ORA-02020: используется слишком много каналов связи БД
DBNOHT14: ORA-02020: используется слишком много каналов связи БД
DBNOHT16: ORA-02020: используется слишком много каналов связи БД
DBNOHT17: ORA-02020: используется слишком много каналов связи БД
DBNOHT18: ORA-02020: используется слишком много каналов связи БД
DBNOHT19: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production



Версии оракла 9 и 11.

Попробовал делать commit даже после alter session, вуаля:

Код: 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.
declare
  v1 varchar2(100);
  v2 varchar2(100);
begin
  rollback;
  for c in (select title, indir, commentary from smpostlocations where commentary not like '%(закрыт)%'order by title) loop  
    begin
      execute immediate 'alter session set NLS_TERRITORY = ''AMERICA''';
      commit;
      
      execute immediate 'select paramvalue 
                           from supermag.SSSysInfo@'||c.title||'
                           where paramname=''Version''' into v1;
      
      execute immediate 'select banner
                           from v$version@'||c.title||'
                           where rownum = 1' into v2;

      rollback;
      dbms_output.put_line(c.title||': '||v1||', version: '||v2);
    exception when others then
      dbms_output.put_line(c.title||': '||sqlerrm);
      rollback;
    end;
  end loop;
end;



DBNOHT01: ORA-12170: TNS:истекло время ожидания соединения
DBNOHT02: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT03: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT04: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT05: 1.026.1, version: Oracle9i Release 9.2.0.8.0 - Production
DBNOHT06: 1.026.1, version: Oracle9i Release 9.2.0.8.0 - Production
DBNOHT07: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT08: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT09: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT10: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT11: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT12: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT13: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT14: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT16: 1.026.1, version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
DBNOHT17: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production
DBNOHT18: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
DBNOHT19: 1.030.1, version: Oracle Database 11g Release 11.2.0.1.0 - Production


Т.е. commit/rollback требуется после каждого запроса (?), если не хотим менять параметр open_links.

Вот там, где (?), остались непонятки - вроде не на каждый запрос в сессии требуется "открывать новый дблинк".
...
Рейтинг: 0 / 0
13.10.2016, 07:09
    #39325831
AlexAA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
dmdmdm,

Может быть поможет
Код: plsql
1.
ALTER SESSION CLOSE DATABASE LINK <link name>



http://docs.oracle.com/cd/E11882_01/server.112/e25494/ds_appdev.htm#ADMIN12194
...
Рейтинг: 0 / 0
13.10.2016, 07:48
    #39325837
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
AlexAAdmdmdm,

Может быть поможет
Код: plsql
1.
ALTER SESSION CLOSE DATABASE LINK <link name>



http://docs.oracle.com/cd/E11882_01/server.112/e25494/ds_appdev.htm#ADMIN12194
... или DBMS_SESSION.CLOSE_DATABASE_LINK
...
Рейтинг: 0 / 0
13.10.2016, 08:32
    #39325853
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
Спасибо, альтернативы понятны.
Непонятно, почему после каждого запроса.
Даже если на каждый запрос архитектурно держится объект "открытый линк" - то хотя бы 4 запроса должны проходить при open_links=4.
...
Рейтинг: 0 / 0
13.10.2016, 08:55
    #39325869
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
dmdmdmто хотя бы 4 запроса должны проходить при open_links=4
Вот 4 и прошли, если смотреть первый блок вывода с ошибками - DBNOHT02, DBNOHT03, DBNOHT08 и DBNOHT19
...
Рейтинг: 0 / 0
13.10.2016, 09:20
    #39325895
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
...
Рейтинг: 0 / 0
13.10.2016, 09:33
    #39325910
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
ViewerВот 4 и прошли

Непоследовательно, но да, 4 :).

Ладно, попробуем закрывать линк.
...
Рейтинг: 0 / 0
13.10.2016, 09:45
    #39325925
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
Усе нормально, шеф.

Код: 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.
--select * from v$dblink
declare
  v1 varchar2(100);
  v2 varchar2(100);
begin
  rollback;
  execute immediate 'alter session set NLS_TERRITORY = ''AMERICA''';
  for c in (select title, indir, commentary from smpostlocations where commentary not like '%(закрыт)%'order by title) loop  
    begin
      
      execute immediate 'select paramvalue 
                           from supermag.SSSysInfo@'||c.title||'
                           where paramname=''Version''' into v1;
      
      execute immediate 'select banner
                           from v$version@'||c.title||'
                           where rownum = 1' into v2;

      dbms_output.put_line(c.title||': SUPERMAG version: '||v1||', DBMS version: '||v2);
      rollback;
      dbms_session.close_database_link(c.title);
    exception when others then
      dbms_output.put_line(c.title||': '||sqlerrm);
      rollback;
    end;
  end loop;
end;
...
Рейтинг: 0 / 0
13.10.2016, 10:04
    #39325956
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-02020
dmdmdm
Код: plsql
1.
2.
3.
4.
5.
6.
 . . . . . . . . . 
begin
 . . . . . . . . . 
  execute immediate 'alter session set NLS_TERRITORY = ''AMERICA''';
 . . . . . . . . . 
end;


... imho, раз уж начали использовать DBMS_SESSION, будьте последовательным :)
DBMS_SESSION.SET_NLS
Код: plsql
1.
dbms_session.set_nls('NLS_TERRITORY','''AMERICA''')
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-02020 / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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