Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Ср Фев 24, 2016 15:05  OOXML или XLS (выписка для налоговой) |
|
Полезность: Нет оценки
|
Столкнулись со следующей проблемой. На основе старой ЦФТ-операции (которая выводила в EXCEL)сделали выписку для налоговой, т.к. логика работы несколько не устраивала. Все бы хорошо, но при количестве больше 7-8 тысяч записей начинались жуткие тормоза с выоводом в Эксель. В одном из соседних разделов посоветовали пользоваться OOXML . Попробовал дистрибутив - новая выписка для ФНС. 5480 записей формировала 1 час 10 минут. Тот же объем, но в эксель - 15 секунд, но если чуть больше 7-8 тысяч может висеть несколько часов. Кто как решал проблему выписок с большим количеством записей, по какому пути идти? Спасибо. |
|
 |
Pauls Участник со стажем
Вступление в Клуб: 16.11.2011
|
Чт Фев 25, 2016 21:21   |
|
Полезность: Нет оценки
|
Было нечто похожее именно при работе с библиотекой EXCEL. Помогло использован вместо excel.write =>excel.put+ excel.print_array. Как у вас организован вывод? Используются ли операции форматирования ( border, pastespecial и т.п.) |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пт Фев 26, 2016 03:36   |
|
Полезность: Нет оценки
|
Да я уже отвечал, что просто почаще сделать excel.print_array. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пт Фев 26, 2016 09:58   |
|
Полезность: Нет оценки
|
Pauls пишет: | Было нечто похожее именно при работе с библиотекой EXCEL. Помогло использован вместо excel.write =>excel.put+ excel.print_array. Как у вас организован вывод? Используются ли операции форматирования ( border, pastespecial и т.п.) |
Да именно excel.put |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пт Фев 26, 2016 09:59   |
|
Полезность: Нет оценки
|
Alkov пишет: | Да я уже отвечал, что просто почаще сделать excel.print_array. |
делал через каждые 500 записей - не помогло. |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Пн Фев 29, 2016 08:52   |
|
Полезность: 1
|
День добрый!
Проверите версию оптимизатора PL/SQL должно быть 2 для пакетов из класса OOXML. Значения ячеек в OOXML PLSQL таблица, это значить память если ее мало будет тормозить. Хотя 15 сек и 4200 это перебор. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Фев 29, 2016 09:59   |
|
Полезность: Нет оценки
|
teac1212 пишет: | День добрый!
Проверите версию оптимизатора PL/SQL должно быть 2 для пакетов из класса OOXML. Значения ячеек в OOXML PLSQL таблица, это значить память если ее мало будет тормозить. Хотя 15 сек и 4200 это перебор. |
Не совсем понял что проверить и где? Спасибо. |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Пн Фев 29, 2016 13:18   |
|
Полезность: Нет оценки
|
Проверить вот так:
SELECT (case
when a.PLSQL_OPTIMIZE_LEVEL < 2 then 'плохо'
else 'отлично'
end)
,a.* FROM USER_PLSQL_OBJECT_SETTINGS a
WHERE TYPE = 'PACKAGE BODY' and NAME like 'Z%OOXML%';
Изменить вот так
alter package XXXX compile body PLSQL_OPTIMIZE_LEVEL=2;
Вообщем поясню зачем это нужно это нужно для ускорения обхода PL\SQL табличек там сейчас построено все на этом в Excel. Для Word мы делаем точечные инъекции на XQuery. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Фев 29, 2016 18:03   |
|
Полезность: Нет оценки
|
у нас вообще в user_plsql_object_settings нет записи с OOXML |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Вт Мар 01, 2016 06:55   |
|
Полезность: 1
|
Версия Oracle какая? Ну и смотреть надо под пользователем владельцем.
Ну или за место user смотреть из представления ALL
SELECT (case
when a.PLSQL_OPTIMIZE_LEVEL < 2 then 'плохо'
else 'отлично'
end)
,a.* FROM ALL_PLSQL_OBJECT_SETTINGS a
WHERE TYPE = 'PACKAGE BODY' and NAME like 'Z%OOXML%'; |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Вт Мар 01, 2016 08:49   |
|
Полезность: Нет оценки
|
teac1212 пишет: | Версия Oracle какая? Ну и смотреть надо под пользователем владельцем.
Ну или за место user смотреть из представления ALL
SELECT (case
when a.PLSQL_OPTIMIZE_LEVEL < 2 then 'плохо'
else 'отлично'
end)
,a.* FROM ALL_PLSQL_OBJECT_SETTINGS a
WHERE TYPE = 'PACKAGE BODY' and NAME like 'Z%OOXML%'; |
Да, не посмотрел , что там контекст. Спасибо. А почему сразу не ставят равно 2? |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Вт Мар 01, 2016 09:58   |
|
Полезность: 1
|
Ну это связано с переходом на 10 (там были проблемы) вообще сейчас только 5 пактов должны быть 0:
'PLP$PARSER','PLIB','PLP2PLSQL','PLP2JAVA','DICT_MGR' ну для 2MCA еще
'PLP2JAVA'.
Ну и параметр нужно смотреть в ORA.ini.
Просто все так сказать ... не заморачиваются.
Это же признак поведения компилятора инстанса. |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Вт Мар 01, 2016 10:29   |
|
Полезность: 1
|
Ну и отпишитесь о результате если не трудно мне с полей не часто новости приходят. А обыдно писать в корзину. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Вт Мар 01, 2016 10:48   |
|
Полезность: Нет оценки
|
teac1212 пишет: | Ну это связано с переходом на 10 (там были проблемы) вообще сейчас только 5 пактов должны быть 0:
'PLP$PARSER','PLIB','PLP2PLSQL','PLP2JAVA','DICT_MGR' ну для 2MCA еще
'PLP2JAVA'.
Ну и параметр нужно смотреть в ORA.ini.
Просто все так сказать ... не заморачиваются.
Это же признак поведения компилятора инстанса. |
Круто, на медленной тестовой базе через ООХМЛ теперь формирует 12 000 записей за 6 секунд. А через эту настройку для пакетов можно еще что то ускорить?) |
|
 |
teac1212 Участник
Вступление в Клуб: 29.02.2016
|
Вт Мар 01, 2016 12:49   |
|
Полезность: Нет оценки
|
Ну ... я уже писал обходы массивов автоматические инлайн подстановки кода поиск по ключу. Вообще Оракле не очень любит открывать свои секреты. Это не выправляет кривизну рук и постановок -).
Ну я рад что вам это помогло. |
|
 |
|