Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

SQL*Loader実行時にエラーが発生する。

概要

SQL*Loaderを利用してクライアントからリモートサーバにデータを読み込ませようとすると

SQL*Loader-704: 内部エラー: ulconnect: OCIServerAttach [0] ORA-12504: TNS: リスナーはCONNECT_DATAのSERVICE_NAMEを取得できませんでした。

的なエラーが発生します。SqlPlusとかでは接続できてテーブル参照できるのに。不思議。

環境

  • SQL*Loaderが入っているInstant Client 12.2

原因と対策

結局のところ

TNS_ADMIN=C:/app/instantclient_12_2

として、指定したディレクトリにtnsnames.oraを用意してやればOKでした。

tnsnames.ora

ちなみに、tnsnames.oraは

net_service_name=
 (DESCRIPTION=
   (ADDRESS=
      (ENBLE=BROKEN)
      (PROTOCOL=TCP)
      (HOST=host_name)
      (PROT=1521)
   )
   (CONNECT_DATA=
     (SERVICE_NAME=service_name)))

的な感じでOKです。

まとめ

エラーの内容に「どうすればよいか」まで書かれていると嬉しいです。