0

我正在尝试在 Linux VM 上使用 oracle 11g 运行一个简单的外部表程序。问题是我无法从 .txt 文件中查询任何数据。
这是我的代码:

    CONN / as sysdba;

    CREATE OR REPLACE DIRECTORY DIR1 AS 'home/oracle/TEMP/X/';
    GRANT READ, WRITE ON DIRECTORY DIR1 TO user;

    CONN user/password;

    CREATE TABLE gerada
    (
        field1   INT,
        field2   Varchar2(20)
    )
    ORGANIZATION EXTERNAL
    (
            TYPE ORACLE_LOADER
            DEFAULT DIRECTORY DIR1
            ACCESS PARAMETERS 
            (
                    RECORDS DELIMITED BY NEWLINE
                    FIELDS TERMINATED BY ';'
                    MISSING FIELD VALUES ARE NULL
            )
            LOCATION ('registros.txt')
    )
    REJECT LIMIT UNLIMITED;

    --Error starts here.
    SELECT * FROM gerada;

    DROP TABLE gerada;

    DROP DIRECTORY DIR1;

这是错误消息:

第 1 行出现错误:
ORA-29913:执行 ODCIEXTTABLEOPEN 调用时出错
ORA-29400:数据磁带
错误打开文件 home/oracle/TEMP/X/GERADA_3375.log 时出错

这就是 registros.txt 的样子:

    1234;hello world;

我已经检查了我对 DIR1 的权限,并且我确实具有读/写权限。

有任何想法吗?

4

1 回答 1

2

ORA-29913 和 ORA-29400 意味着您无法访问目录和/或文件。

仔细查看 CREATE DIRECTORY 命令,您使用的路径似乎格式错误。尝试在路径的开头放置一个正斜杠,并在创建目录时删除路径末尾的斜杠 - 例如CREATE OR REPLACE DIRECTORY DIR1 AS '/home/oracle/TEMP/X';.

分享和享受。

于 2013-07-19T11:03:46.403 回答