外部テーブルを使用して、システム内のフォルダーからファイルを読み取ります。
ファイルを読み取った後、読み取ったファイルをアーカイブに移動しようとすると、FILE IN USEエラーが発生します。
外部テーブルのファイルまたは何かを閉じるメカニズムはありますか。
外部テーブルを使用して、システム内のフォルダーからファイルを読み取ります。
ファイルを読み取った後、読み取ったファイルをアーカイブに移動しようとすると、FILE IN USEエラーが発生します。
外部テーブルのファイルまたは何かを閉じるメカニズムはありますか。
あなたの経験を再現することはできません。オペレーティング システムなどの関連する詳細や、番号を含む完全な Oracle エラー メッセージを含む、より詳細なテスト ケースを提供してください。
OSディレクトリへの読み取り/書き込みアクセスが与えられた...
SQL> select * from all_directories
2 where directory_name like 'DATA%'
3 /
OWNER DIRECTORY_NAME DIRECTORY_PATH
------ --------------- ------------------------
SYS DATA_DROP /home/oracle/drop_zone
SQL>
... このテーブルを作成します ...
create table t42_ext (
field1 number,
field2 varchar2(20)
)
organization external
(
type oracle_loader
default directory data_drop
access parameters
(
records delimited by newline
fields terminated by ','
missing field values are null
)
location ('data20140923.txt')
)
reject limit unlimited;
...クエリできます:
SQL> select * from t42_ext;
FIELD1 FIELD2
---------- --------------------
23 'some data'
SQL>
次に、別の OS セッションでファイルを移動します。
[oracle@localhost ~]$ cd drop_zone
[oracle@localhost drop_zone]$ ls
data20140923.txt T42_EXT_3295.log
[oracle@localhost drop_zone]$ mv data20140923.txt ../data_archive
[oracle@localhost drop_zone]$ ls
T42_EXT_3295.log
[oracle@localhost drop_zone]$
データベースに戻ると、テーブルにクエリを実行できなくなりました。
SQL> r
1* select * from t42_ext
select * from t42_ext
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file data20140923.txt in DATA_DROP not found
SQL>
別のシナリオ、データベース内からのファイル操作、まだ再現されていません。
リセット:
SQL> select * from t42_ext;
FIELD1 FIELD2
---------- --------------------
23 'some data'
SQL> begin
utl_file.frename(
src_location => 'DATA_DROP',
src_filename => 'data20140923.txt',
dest_location => 'DATA_ARCH',
dest_filename => 'data20140923.txt',
overwrite => FALSE);
end;
/
2 3 4 5 6 7 8 9
PL/SQL procedure successfully completed.
SQL> select * from t42_ext;
select * from t42_ext
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file data20140923.txt in DATA_DROP not found
SQL>