这个错误是在处理很大数据量的时候才产生的, 比如做Physical Inventory Adjustment, 由于EBS 需要庞大的数据, 系统会在 /tmp 目录下使用一个临时文件 *.TMP, 结束后这个临时文件就被删了.
如果数据量实在太大, 就可能报这个错了: FRM-41839: Disk I/O error on temporary record buffer file /tmp/...TMP
报这个错的原因可能是 /tmp 目录分配的空间太小, 磁盘空间不够了. 但是即使这个目录空间足够, 任然有可能发生这个错误, 因为EBS 对这个临时文件的大小有限制, 在patch 14825718 之前, 这个文件的大小被限制在 2G, 打完这个patch 之后, 可以修改配置文件来增加这个临时文件的大小限制.
可以参考 Most Common Solutions to FRM-41839 and .tmp Files Not Being Deleted (Doc ID 435437.1) 第13 点.
具体操作步骤:
0. shut down EBS
1. download patch (Solaris):https://updates.oracle.com/download/14825718.html
2. upload the patch to DIR: /var/tmp
3. unzip p14825718_xxx.zip (depends on Ct‘s system)
4. cd 14825718
5. export PATH=$PATH:/var/tmp/14825718
6. use command: opatch apply
7. after patch applied, then go to $ORA_CONFIG_HOME/10.1.2/forms/server, find file default.env, find FORMS_SCROLL_ALL_BUT_ONE in the file, and add
following in the next line:
FORMS_RECMGR_RECSIZE_POWER=4
this would allow .tmp file size up to 32Gb.
8. Then bounce EBS and retest.
这个是个框架的patch, 打完这个patch 之后, 需要重新生成 form 和 jar 文件, 使用 adadmin 命令. 不然form 可能会打不开.