2013-02-18 4 views
-1

Я создал следующую внешнюю таблицу для Oracle 10G.Ошибка внешней таблицы Oracle 10G

connect system/password as SYSDBA 
create or replace directory ext_tab as 'C:\Suman\External_Tables'; 
CREATE TABLE emp_ext_3( 
    empno NUMBER(4), first_name CHAR(20), last_name CHAR(20), dob  CHAR(10)) 
    ORGANIZATION EXTERNAL( 
    TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab 
    ACCESS PARAMETERS 
    ( 
    RECORDS DELIMITED BY NEWLINE 
    NOBADFILE 
    NOLOGFILE 
    SKIP 1  
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LRTRIM 
    MISSING FIELD VALUES ARE NULL 
    REJECT ROWS WITH ALL NULL FIELDS 
    (empno INTEGER EXTERNAL (4), 
    first_name CHAR(20), 
    last_name CHAR(20), 
    dob CHAR(10) DATE_FORMAT DATE MASK "dd/mm/yyyy") 
    ) 
    LOCATION ('employee1.dat') 
    ) 
    PARALLEL 
    REJECT LIMIT 0; 

Теперь, если я попытаюсь выполнить команду select, я получаю следующую ошибку.

SQL> select * from "SYSTEM"."EMP_EXT_3"; 
select * from "SYSTEM"."EMP_EXT_3" 
* 
ERROR at line 1: 
ORA-29913: error in executing ODCIEXTTABLEOPEN callout 
ORA-29400: data cartridge error 
KUP-04040: file employee1.dat in EXT_TAB not found 
ORA-06512: at "SYS.ORACLE_LOADER", line 19 

Но у меня есть файл «employee1.dat» в «C: \ Suman \ External_Tables». Может кто-то, пожалуйста, помогите мне, почему я получаю эту ошибку?

+0

В Windows случается: Не могли бы вы проверить, что имя файла не employee1.dat.txt, а окна скрывают расширение? –

+3

В качестве примечания: для пользователя sys/system необходимо создать только каталог. Внешняя таблица и запросы на нее должны выполняться с обычным пользователем. –

+0

Я проверил. Имя файла - employee1.dat, а не employee1.dat.txt – user2032118

ответ

0

Сервер Oracle ищет файл в следующем месте: 'C: \ Suman \ External_Tables'. Этот каталог находится на сервере Oracle, а не на локальной клиентской машине Windows.

+0

Я установил Oracle Server на свою локальную машину. Так что это не должно быть проблемой? – user2032118

+0

Это проблема, связанная с разрешением на чтение/запись? – user2032118

+0

@ user2032118 - возможно; Oracle должен иметь доступ к файлу на уровне O/S, не имеет значения, можете ли вы получить к нему доступ самостоятельно. Это часть модели безопасности вокруг [каталогов] (http://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm#i1009094). –