| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Ну ... я уже писал обходы массивов автоматические инлайн подстановки кода поиск по ключу. Вообще Оракле не очень любит открывать свои секреты. Это не выправляет кривизну рук и постановок -). 
 
Ну я рад что вам это помогло. | 
			 
		  | 
	
	
		  | 
	
	
		 |