间歇性ORA-22288错误 - 命令长度不正确

JDS*_*JDS 12 oracle file-io plsql

我有一个Web应用程序的间歇性问题,经常需要打开位于数据库服务器上的文件作为常规操作的一部分.在绝大多数情况下,这个功能没有问题,但是,在看似随机的时间,相应的请求开始返回HTTP 400错误.弹出apache服务器可以解决问题一段时间,但它总是在一天或最多一周内返回.

我在相关的pl/sql代码中添加了一些日志记录(不,不要跑掉!回来!),我在下面列出了以供参考:

declare
  bl_blob blob;
  bf_file bfile := bfilename(<directory that totally exists>, <file that totally exists>);
begin
  dbms_lob.createTemporary(bl_blob, true);
  dbms_lob.open(bf_file, dbms_lob.lob_readonly);
  dbms_lob.open(bl_blob, dbms_lob.lob_readwrite);
  dbms_lob.loadfromfile(bl_blob, bf_file, dbms_lob.getLength(bf_file));
  dbms_lob.close(bf_file);
  return bl_blob;
end;
Run Code Online (Sandbox Code Playgroud)

事实证明400错误对应于以下ORA-22288错误:

file or LOB operation FILEOPEN failed
The program issued a command but the command length is incorrect
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么操作会突然而且反复地开始错误输出以前同一个文件可以在没有问题的情况下打开?基础文件永远不会更改,只能以编程方式使用只读权限打开.

到目前为止我所做的所有论坛挖掘都产生了大量的"关闭和开启"解决方案,其中......是的.

任何帮助是极大的赞赏.

小智 0

请尝试使用 ,而不是dbms_lob.getLength(bf_file)使用要加载的金额DBMS_LOB.LOBMAXSIZE。这可能会有所帮助。