Я пытаюсь прочитать одну и ту же внешнюю таблицу 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;
На одной группе db-серверов эта процедура pl / sql работает правильно. Но на другой группе db-серверов вызов этой процедуры pl / sql на шаге 2 (процедуры java) вызывает ошибку:
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