oracle EBS 报表outofmemory错误及解决方案(压缩下载)

来源:互联网 发布:access数据库能仓库 编辑:程序博客网 时间:2024/04/30 15:41

问题:使用XML Publish方式进行报表输出,输出的结果为Excel或者PDF格式,使用中遇到的主要问题是,当要生成的报表文件太大时,EBS无法形成所需的文件,并且会导致其他请求也都出现无法输出,查看java日志可见出现outofmemory错误。

方案:

安装补丁patch 7306874。

同时为了避免XML输出文件太大导致FNDCPOPP内存溢出,建议减小输出文件大小:

1、  建议缩短XML TAG的大小(按经验,通常XML文件中TAG占其中三分之二内容左右)。

2、  将报表拆解多个,然后压缩成zip文件,提供给用户下载。


1) 创建Shell脚本

 #!/bin/kshheader_string="$Header: zip_conc_out.sh_V1.0 by ACS SC 2013-8-14  $"prog_version=`echo "$header_string" | awk '{print $2}'`program=`basename $0`usage="\t$program <OutputFile> <ConcReqID1[:ConcReqID2]>"if [ $# -lt 2 ];then   printf "\n$program: too few arguments specified.\n\n"   printf "$usage\n\n"   exit 1;fi ## arguments appear in the order:  <output file name> <ConcRequestID1[:ConcRequestID2]>#RETURN_FILE=$5ARG=$6EXT=$7# 1.Delete files 7 days agofind $OA_HTML/out -name "*" -ctime +7 | xargs rm -f# 2.Disassembly parameter acquisition listREQ_LIST=`echo $ARG|sed '1,$ s/:/ /g'`# 3.Switch to directorycd $LOG_HOME/appl/conc/out/ # 4. Circular list, find files and compressfor r in $REQ_LISTdo zip -q -A $OA_HTML/out/$RETURN_FILE.exe *$r*$EXTdone
 
注:
1、 压缩文件必须为exe,不然无法下载
2、 如创建新文件,操作系统必须与服务器系统一致,否则会报如系统错误
(可从服务器上复制一份类似文件进行修改)
 

 
2) 将zip_conc_out.prog上传到$FND_TOP/bin,并设置执行(权限)属性; 
如8005环境:/d01/T01/apps_st/appl/fnd/12.0.0/bin
 
权限设置命令:
注:必须是在系统管理员权限下设置
$ chmod 7777 $FND_TOP/bin/zip_conc_out.prog


 
3) 在$FND_TOP/bin目录建立一个名为zip_conc_out的link如下
Linux命令:
ln –f -s $FND_TOP/bin/fndcpesr $FND_TOP/bin/zip_conc_out
 
如报错,去掉-f再试试
得到结果:


 
注:环境克隆后,该Link需重新生成
4) 在应用服务器$OA_HTML目录下建立out目录
 
 
5) 配置压缩请求
可执行: 


并发请求:
 
 
其中:并发请求中参数与zip_conc_out.prog中变量一一对应
并发请求(ZIP_CONC_OUT)参数 zip_conc_out.prog变量

并发请求(ZIP_CONC_OUT)参数

zip_conc_out.prog变量

zip_file_name

RETURN_FILE=$5

req_ids

ARG=$6

file_ext

EXT=$7

注:file_ext:该参数值需以服务器(/d01/T01/inst/apps/T01_efana/logs/appl/conc/out)上文件后缀为准
 
6) 在程序中用fnd_request.submit_request调用
创建子请求:XML文件处理
 
创建父请求:请求个数拆分,并循环调用子请求,最后调用压缩请求
 
 

     

0 0
原创粉丝点击