oracle - 访问外部表时出现 kup-04040

标签 oracle plsql

我在 Oracle 目录中设置了一个外部表。数据库实例是12.1.0.2.0,操作系统是Oracle Linux。

我以oracle用户在/home/oracle下创建了物理目录。我将 Oracle 目录创建为 sys,并将目录中的所有内容授予模式用户。然后我将文件“bmw.csv”复制到该目录,该文件归oracle用户所有。

表格代码:

create table ext_csv_arlista (
    Parts_number varchar2(50),
    New_Parts_number varchar2(50),
    Description varchar2(100),
    DE_List_price number(8,2),
    Discount_Group varchar2(10),
    Purchase_price number(8,2),
    BE_sales_price  number(8,2)
    )
    organization external 
    (
         default directory GENCARPARTS_CSV 
            access parameters
         (
             records delimited by newline
                BADFILE 'ext_csv_arlista.bad'
                DISCARDFILE 'ext_csv_arlista.discard'
                LOGFILE 'ext_csv_arlista.log'
             skip 1
             fields terminated by ';'         )
         location ('bmw.csv')
     );

当我尝试从表中选择时:

select * from ext_csv_arlista

我明白了

ORA-29913:执行 ODCIEXTTABLEOPEN 标注时出错 ORA-29400: 数据盒带错误 KUP-04040:未找到 GENCARPARTS_CSV 中的文件 bmw.csv

如果我“触摸”一个文件并尝试从空文件中读取,我会得到相同的结果。

Oracle 创建日志文件,其中包含:

日志文件于 03/21/17 22:41:29 打开

KUP-05004:警告:内部源并发已禁用,因为未请求并行选择。

KUP-04040:在 GENCARPARTS_CSV 中找不到文件 bmw.csv

这整件事让我逃脱了,日志文件在那里,对我来说这意味着路径是正确的,oracle 可以写入目录。

ls -l:

[oracle@csuka g2]$ ls -l
total 25884
-rw-r--r--. 1 oracle oinstall 26499791 Mar 21 16:17 bmw.csv
-rw-r--r--. 1 oracle dba          1940 Mar 21 22:41 ext_csv_arlista.log
[oracle@csuka g2]$

为了验证我尝试使用 utl_file 访问该文件>

declare
    v_h utl_file.file_type;
    v_l varchar2(600);
begin
    v_h:=utl_file.fopen(LOCATION => 'GENCARPARTS_CSV', FILENAME => 'bmw.csv', OPEN_MODE => 'r');
    for v_i in 1..5
    loop
        utl_file.get_line (v_h,v_l);
        dbms_output.put_line (v_l);
    end loop;
    utl_file.fclose(v_h);
end;  

utl_file 成功,没有问题。

我错过了什么?

干杯

克里斯蒂安

最佳答案

好吧,我不知道为什么会这样,但我以根目录重新创建了目录

mkdir /g2
chwown oracle:dba /g2
chmod 777 /g2

su - oracle

cp /home/oracle/g2/bmw.csv /g2

可能与/home/oracle 的设置方式有关。真正奇怪的是 utl_file 完美运行,可以创建日志文件,等等....

关于oracle - 访问外部表时出现 kup-04040,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42938852/

相关文章:

sql - 如何对数据集进行密集排名

java - java.lang.ClassCastException : oracle. xdb.XMLType 与 oracle.sql.OPAQUE 不兼容的任何建议解决方案

将主机结构数组转换为表

oracle - 单次迭代后立即将内容写入 UTL_FILE

sql - PL/SQL 函数中的 OUT/IN OUT 参数

sql - MS SQL Server 2008 "linked server"到 Oracle : schema not showing

oracle - 进行 HASH JOIN 时什么是 HASH TABLE?

Oracle 游标的返回类型

json - Oracle PL/SQL 是否提供了 JSON 模式验证器?

c# - 正则表达式获取 C# 中模式的所有可能匹配项