2017-03-21 98 views
1

Oracleディレクトリに外部テーブルを設定しました。データベースインスタンスは12.1.0.2.0、オペレーティングシステムはOracle Linuxです。kup-04040外部テーブルへのアクセス時

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が見つかりません

ファイルに「タッチ」して空のファイルから読み取ろうとすると、同じ結果になります。警告:

LOGファイルは03/21/17 22時41分29秒

KUP-05004で開く:選択パラレルではなかったので、イントラ・ソースの同時実行が無効になって

Oracleが含まれているログファイルを作成します要求された。

KUP-04040:見つからない

GENCARPARTS_CSVにbmw.csvファイルこの全体の事は私をエスケープし、ログファイルには、私のためにパスが正しいか、Oracleはディレクトリを書くことができることを意味しています。

のls -l:

[[email protected] 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 
[[email protected] g2]$ 

を確認するには、私は>

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は問題なく成功したUTL_FILEを使用してファイルにアクセスしようとしました。

私には何が欠けていますか?

乾杯

Krisztian

答えて

0

さて、私はそれがそのように動作する理由はわかりませんが、私はrootとして、ディレクトリを再作成

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

su - oracle 

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

多分それはどのように/家とは何かを持っています/オラクルが設定されています。これが本当に奇妙なのは、utl_fileが完璧に動作し、ログファイルが作成されるなどです。

関連する問題