gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:14:22 41 4
gpt4 key购买 nike

我有一个 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;

结果证明 400 错误对应于以下 ORA-22288 错误:
file or LOB operation FILEOPEN failed
The program issued a command but the command length is incorrect

我的问题是,为什么该操作会突然和反复地开始出错,以前可以在没有问题的情况下打开相同的文件?底层文件永远不会更改,并且只会以只读权限以编程方式打开。

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

任何帮助是极大的赞赏。

最佳答案

我不确定这是否正是您正在运行的代码,或者您是否已将其简化为 SO。你的 bfile 基本上是一个指针,所以我不确定如果在你建立指针后在磁盘上修改文件会发生什么。我也不确定像这样的匿名块是否以与 SQL 语句相同的方式被解析和缓存。长话短说,试试这个:

declare
bl_blob blob;
bf_file bfile;
begin
bf_file := bfilename(<directory that totally exists>, <file that totally exists>);
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;

关于oracle - 间歇性 ORA-22288 错误 - 命令长度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25913032/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com