Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ORA-02020  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1642
В поиске нашел несколько тем, решил завести новую. Вроде понял, почему так происходит, но не до конца.

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;
;


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, вуаля:

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.

Вот там, где (?), остались непонятки - вроде не на каждый запрос в сессии требуется "открывать новый дблинк".
12 окт 16, 19:37    [19775224]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
AlexAA
Guest
dmdmdm,

Может быть поможет
ALTER SESSION CLOSE DATABASE LINK <link name>


http://docs.oracle.com/cd/E11882_01/server.112/e25494/ds_appdev.htm#ADMIN12194
13 окт 16, 07:09    [19776249]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
AlexAA
dmdmdm,

Может быть поможет
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
13 окт 16, 07:48    [19776271]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1642
Спасибо, альтернативы понятны.
Непонятно, почему после каждого запроса.
Даже если на каждый запрос архитектурно держится объект "открытый линк" - то хотя бы 4 запроса должны проходить при open_links=4.
13 окт 16, 08:32    [19776317]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
dmdmdm
то хотя бы 4 запроса должны проходить при open_links=4

Вот 4 и прошли, если смотреть первый блок вывода с ошибками - DBNOHT02, DBNOHT03, DBNOHT08 и DBNOHT19
13 окт 16, 08:55    [19776363]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
P.S.
Determining Which Link Connections Are Open
13 окт 16, 09:20    [19776447]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1642
Viewer
Вот 4 и прошли


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

Ладно, попробуем закрывать линк.
13 окт 16, 09:33    [19776499]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1642
Усе нормально, шеф.

--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;
13 окт 16, 09:45    [19776561]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02020  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
dmdmdm
 . . . . . . . . . 
begin
 . . . . . . . . . 
  execute immediate 'alter session set NLS_TERRITORY = ''AMERICA''';
 . . . . . . . . . 
end;

... imho, раз уж начали использовать DBMS_SESSION, будьте последовательным :)
DBMS_SESSION.SET_NLS
dbms_session.set_nls('NLS_TERRITORY','''AMERICA''')
13 окт 16, 10:04    [19776669]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить