概述
问题:使用XML Publish方式进行报表输出,输出的结果为Excel或者PDF格式,使用中遇到的主要问题是,当要生成的报表文件太大时,EBS无法形成所需的文件,并且会导致其他请求也都出现无法输出,查看java日志可见出现outofmemory错误。
方案:
安装补丁patch 7306874。
同时为了避免XML输出文件太大导致FNDCPOPP内存溢出,建议减小输出文件大小:
1、 建议缩短XML TAG的大小(按经验,通常XML文件中TAG占其中三分之二内容左右)。
2、 将报表拆解多个,然后压缩成zip文件,提供给用户下载。
1) 创建Shell脚本
#!/bin/ksh
header_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.nn"
printf "$usagenn"
exit 1;
fi
#
# arguments appear in the order:
<output file name> <ConcRequestID1[:ConcRequestID2]>
#
RETURN_FILE=$5
ARG=$6
EXT=$7
# 1.Delete files 7 days ago
find $OA_HTML/out -name "*" -ctime +7 | xargs rm -f
# 2.Disassembly parameter acquisition list
REQ_LIST=`echo $ARG|sed '1,$ s/:/ /g'`
# 3.Switch to directory
cd $LOG_HOME/appl/conc/out/
# 4. Circular list, find files and compress
for r in $REQ_LIST
do
zip -q -A $OA_HTML/out/$RETURN_FILE.exe *$r*$EXT
done
注:
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 |
6) 在程序中用fnd_request.submit_request调用
创建子请求:XML文件处理
创建父请求:请求个数拆分,并循环调用子请求,最后调用压缩请求
最后
以上就是痴情板栗为你收集整理的oracle EBS 报表outofmemory错误及解决方案(压缩下载)的全部内容,希望文章能够帮你解决oracle EBS 报表outofmemory错误及解决方案(压缩下载)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复