Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Распределенный вызов spl через динамический запрос выдает Memory allocation failed / 9 сообщений из 9, страница 1 из 1
04.06.2014, 16:32
    #38661652
_torero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
Здравствуйте!

Используем IDS 11.50 FC8.

1) На одном сервере создаем таблицу и SPL для доступа к ней:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create database dbsrv1;
database dbsrv1;
grant dba to public;

create table test (i integer, val varchar(10));
insert into test values (1, 'aaa');
insert into test values (2, 'bbb');
insert into test values (3, 'ccc');

---------
create procedure get_val (_i integer)

   returning varchar(10) as val
   define _val varchar(10);
   let _val = '';

   select val into _val from test where i = _i;

    return _val;

end procedure;



2) На другом сервере (другой хост! и соответственно другой инстанс) создаем SPL, в которой через динамический запрос делаем распределенный вызов spl из первого сервера:

Код: sql
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.
create database dbsrv2;
database dbsrv2;
grant dba to public;
------
------
create procedure get_test ()

returning varchar(10) as val

DEFINE _db     varchar(100);
DEFINE _val      varchar(100);
DEFINE dsql        varchar(250);

  Let _db   = "dbsrv1@ol_tsr";


  ---------------------------------------
  Let dsql = " execute procedure "||trim(_db)||":get_val(2)";


  PREPARE stmt_id FROM dsql;
  DECLARE cust_cur cursor FOR stmt_id;
  OPEN cust_cur ;

  FETCH cust_cur INTO _val;

  CLOSE cust_cur;
  FREE cust_cur ;
  FREE stmt_id ;

  ---------------------------------------
  return _val;

end procedure;                   




3) Теперь на втором же сервере запускаем на выполнение оберточную SPL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
drop procedure call_test;
create procedure call_test()

   define _val varchar(10);
   define _ix integer;

for _ix = 1 to 1000000 
   execute procedure get_test() into _val;
end for;

end procedure;

execute procedure call_test();



В результате выполнения начинает выделяться shared memory на первом сервере. Затем съедается память windows первого сервера. (приложенный файл spl_1.gif).
Потом клиент на втором сервере, запустивший call_test() отваливается с ошибкой "Memory allocation failed during query processing" (приложенный файл spl_2.gif).

Лечится командой onmode -F на первом сервере (приложенный файл spl_3.gif).


Почему так происходит? Что можно изменить?
...
Рейтинг: 0 / 0
04.06.2014, 16:32
    #38661653
_torero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
второй файл spl_2.gif
...
Рейтинг: 0 / 0
04.06.2014, 16:33
    #38661655
_torero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
третий файл spl_3.gif
...
Рейтинг: 0 / 0
04.06.2014, 17:35
    #38661739
_torero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
нашел эту ситуацию в фикс-листе
http://www-01.ibm.com/support/docview.wss?uid=swg27022346

под номером IC85176

но внутрь не пускает
...
Рейтинг: 0 / 0
04.06.2014, 23:20
    #38662007
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
IC85176: MEMORY LEAK ON REMOTE INSTANCE PREPARING A CURSOR AND CALLING A STORED PROCEDURE INSIDE A LOOP

APAR status OPEN

Error description

If a prepare statement and a call to a remote stored procedure
are ran into a loop, a memory leak will be experienced in the
UDR pool.


_toreroно внутрь не пускает
Пароль забыли или религия не позволяет зарегистрироваться на ibm.com ?
...
Рейтинг: 0 / 0
05.06.2014, 08:33
    #38662154
_torero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
Яковлев Павел,
нашел тот fix уже после создания темы.

Поэтому эту ветку можно было бы закрыть и открыть новую "Как скачать fix", но разрешите пока тут продолжу.

Регистрация есть, но даже с ней не получается.
Во 1-х, при входе вышло сообщение о лимитациях для некоторых стран.
Во 2-х, выбирая, например, продукт Information Managment - IBM Data Server Client Packages кнопка Continue не активная.
...
Рейтинг: 0 / 0
05.06.2014, 23:48
    #38663065
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
Скачать fix просто - иметь честно купленый Информикс и действующую поддержку (продляется ежегодно).

Но что бы даже описания багов не почитать..... Или что-то не так или IBM перемудрили.
...
Рейтинг: 0 / 0
09.06.2014, 17:59
    #38665587
VRay
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
Яковлев ПавелСкачать fix просто - иметь честно купленый Информикс и действующую поддержку (продляется ежегодно).


Для версий Informix Developer Edition или Informix Innovator-C Edition тоже требуется действующая поддержка?
...
Рейтинг: 0 / 0
09.06.2014, 22:50
    #38665743
Распределенный вызов spl через динамический запрос выдает Memory allocation failed
эээээ не задумывался ибо не надо было такие особенности знать

почитайте ibm.com - там всё есть

(только временами зарыто в недрах не по детски :)
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Распределенный вызов spl через динамический запрос выдает Memory allocation failed / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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