gpt4 book ai didi

oracle - 使用不同的底层文件内容多次读取同一个 Oracle 外部表会引发错误 KUP-05011 : Size of file has changed

转载 作者:行者123 更新时间:2023-12-05 07:09:30 29 4
gpt4 key购买 nike

我尝试使用不同的底层文件内容多次读取同一个 Oracle 外部表。

我使用带有如下代码片段的 java 应用程序:

int sptepn = 1;
for (File file: files) {
log_step(stepn++);
copy_file_to_oracle_directory(file); // copy myfileN.txt to myfile.txt
call_oracle_sp_read_file();
}

在 pl/sql 过程中,我使用如下代码片段:

procedure read_file() is
cursor ext_cu is
select * from ext_table;
begin
for ext_rec in ext_cu loop
-- do something with ext_rec.*
end loop;
end read_file;

在一组数据库服务器上,这个 pl/sql 过程正常工作。但是在另一组数据库服务器上,在(java 过程的)步骤 2 中调用此 pl/sql 过程会引发错误:

29913-ORA-29913: error in executing ODCIEXTTABLEFETCH callout: ORA-29400: data cartridge error: KUP-05011: Size of file myfile.txt in directory /mydir has changed from 12345 to 67890.

其中 myfile1.txt 的大小为 12345,myfile2.txt 的大小为 67890。

问题是什么?

受影响的服务器版本为:

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
"CORE 12.2.0.1.0 Production"
TNS for IBM/AIX RISC System/6000: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

最佳答案

如何告诉 Oracle 您已经更改了文件?我不会将 myfileN.txt 复制到 myfile.txt,而是尝试将数字保留在文件名中并更改外部表:

ALTER TABLE ext_table LOCATION ("MYDIR":'myfile1.txt');
read_file();

ALTER TABLE ext_table LOCATION ("MYDIR":'myfile2.txt');
read_file();
...

关于oracle - 使用不同的底层文件内容多次读取同一个 Oracle 外部表会引发错误 KUP-05011 : Size of file has changed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61526071/

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