Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пн Ноя 02, 2015 09:04  OOXML как сожрать всю память в процессе. |
|
Полезность: 1
|
Вот такой нехитрый код для вывода отчёта
нехило отъедает памяти...
т.к. каждая ячейка по сути пишется в таблицу в памяти...
Код: |
pragma include ([RUNTIME]::[MACRO_LIB]);
pragma macro(xl, '[OOXML]::[API_XL]');
xlsx blob; -- результат печати (BLOB с содержимым xlsx-файла)
begin
&xl.init_xls; --Инициализируем OOXML
for i in 1..60000
loop
for j in 1..100
loop
&xl.cell( i, j, '111111111111111111111111111111111111111111111 ');
end loop;
debug_pipe('i='||i,0);
end loop;
xlsx := ::[SHABLON_DOC].[LIB_OOXML].xl_finish
( p_show == true -- Открывать (отображать) сформированный файл на машине пользователя
, p_description == 'фигня' -- Описание отчета
);
end;
|
На тестовой вылетает уже на строке 13000.
ORA-06500: PL/SQL: Ошибка памяти ORA-04030: выход за пределы памяти процесса при попытке выделить 16328 байт (koh-kghu sessi,pmuccst: adt/record) ORA-06512: на "IBS.Z$OOXML_XL", line 1379 ORA-06512: на "IBS.Z$OOXML_API_XL", line 239 ORA-06512:
На рабочей тормозит на 1 минуту и выдаёт ещё 3000 строк и снова тормозит и так видимо пока всё не съест.
т.е. вывод - не выводите так большие отчёты ? |
|
 |
KhrushchevAV Участник со стажем
Вступление в Клуб: 17.10.2014
|
Пн Ноя 02, 2015 10:09   |
|
Полезность: Нет оценки
|
Хороший пример.
Тоже получил:
Код: | ORA-06500: PL/SQL: Ошибка памяти
ORA-04030: выход за пределы памяти процесса при попытке выделить 16328 байт (koh-kghu sessi,pmuccst: adt/record) |
Но, на строке 52439.
Страшное дело этот OOXML... |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Пн Ноя 02, 2015 10:21  Re: OOXML как сожрать всю память в процессе. |
|
Полезность: Нет оценки
|
Цитата: |
Код: |
for i in 1..60000
loop
for j in 1..100
loop
&xl.cell( i, j, '111111111111111111111111111111111111111111111 ');
end loop;
debug_pipe('i='||i,0);
end loop;
|
|
100 колонок 60000 строк, отчет даже и небольшой, бывали и побольше |
|
 |
Amper Профи
Вступление в Клуб: 29.10.2010
|
Пн Ноя 02, 2015 10:39  Re: OOXML как сожрать всю память в процессе. |
|
Полезность: Нет оценки
|
Alkov пишет: | т.е. вывод - не выводите так большие отчёты ? |
вывод - сообщите о проблеме в ЦФТ, но желательно получить ошибку на дистрибутивном отчете. |
|
 |
KhrushchevAV Участник со стажем
Вступление в Клуб: 17.10.2014
|
Пн Ноя 02, 2015 13:59   |
|
Полезность: Нет оценки
|
Цитата: | сообщите о проблеме в ЦФТ, но желательно получить ошибку на дистрибутивном отчете. |
Вы правы, Александр. С точки зрения теории менеджмента - это, наверное, правильный путь.
С точки зрения технаря практика...
Ну вот уработаешься ты. Найдешь отчет. Оформишь заявку. Что ответят через энное время? (Проставьте вероятность).
- посоветуют добавить памяти
- исправят один этот отчет
- исправят библиотеку (хи-хи)
А ведь для правильного решения уже все в этом обсуждении есть. Кусок кода стабильно приводящий к ошибке.
Заведите его в джиру (или куда вы там заводите) "со слов клиента". |
|
 |
Amper Профи
Вступление в Клуб: 29.10.2010
|
Пн Ноя 02, 2015 14:12   |
|
Полезность: Нет оценки
|
KhrushchevAV пишет: | Вы правы, Александр. С точки зрения теории менеджмента - это, наверное, правильный путь.
С точки зрения технаря практика...
Ну вот уработаешься ты. Найдешь отчет. Оформишь заявку. Что ответят через энное время? (Проставьте вероятность).
- посоветуют добавить памяти
- исправят один этот отчет
- исправят библиотеку (хи-хи)
А ведь для правильного решения уже все в этом обсуждении есть. Кусок кода стабильно приводящий к ошибке.
Заведите его в джиру (или куда вы там заводите) "со слов клиента". |
Это да, но я такой же технарь, как и Вы, и, к сожалению (или к счастью), не уполномочен заводить заявки, уж тем более от имени клиентов. |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Вт Ноя 03, 2015 02:58  Re: OOXML как сожрать всю память в процессе. |
|
Полезность: Нет оценки
|
Amper пишет: | Alkov пишет: | т.е. вывод - не выводите так большие отчёты ? |
вывод - сообщите о проблеме в ЦФТ, но желательно получить ошибку на дистрибутивном отчете. |
Вот именно что искать придётся в дистрибутивном отчёте.
Если прислать локал - давай до свидания. |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Ноя 03, 2015 06:41  Re: OOXML как сожрать всю память в процессе. |
|
Полезность: Нет оценки
|
Если рассматривать именно повторяемые куски, то в OOXML (не в пакете, а в формате) предусмотрена часть для общих кусков. Может быть, и в пакете она предусмотрена? |
|
 |
ulge Участник со стажем
Вступление в Клуб: 02.11.2015
|
Ср Ноя 11, 2015 13:50   |
|
Полезность: Нет оценки
|
Мы на днях в банке выводили своим отчетом в OOXML оборотно-сальдовую ведомость по всем счетам банка - проверяющие заказали в виде файла Excel. Получилось 840 тыс. счетов и 13 колонок (самая широкая колонка - наименование счета). Файл сформировался за 15 минут, включая время вычисления остатков и оборотов. Во время формирования процесс занимал максимум 10 Гб PGA. Причем форматирование делалось построчно по образцу строки из деталей из шаблона. Так что строчки получились с границами и числа правильно выравнены. А где может понадобиться 100 колонок??? |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Ср Ноя 11, 2015 13:58   |
|
Полезность: Нет оценки
|
ulge пишет: | Мы на днях в банке выводили своим отчетом в OOXML оборотно-сальдовую ведомость по всем счетам банка - проверяющие заказали в виде файла Excel. Получилось 840 тыс. счетов и 13 колонок (самая широкая колонка - наименование счета). Файл сформировался за 15 минут, включая время вычисления остатков и оборотов. Во время формирования процесс занимал максимум 10 Гб PGA. Причем форматирование делалось построчно по образцу строки из деталей из шаблона. Так что строчки получились с границами и числа правильно выравнены. А где может понадобиться 100 колонок??? |
Отчет сервисера по кредитам - Расшифровка за отчетный период, в текущем варианте 105 колонок, там практически полная информация... от закладной до страховки по кредитам
Ходовая вещь |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Ноя 11, 2015 14:04   |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: |
Отчет сервисера по кредитам - Расшифровка за отчетный период, в текущем варианте 105 колонок, там практически полная информация... от закладной до страховки по кредитам
Ходовая вещь |
я такой делал лет 5 назад, то ли 137, то ли 147 колонок в представлении (оттуда потом excel печатали)  |
|
 |
|