Updating Database table from another machine I am trying to update my database using a batch file. Batch file is located on machine say ABC which should pick a text file from the local directory on ABC and upload that file to DATABASE located on say XYZ machine.

I am getting an error as 

If you are using a remote database server, verify it has access to remote_basedir.

ERROR&gt;:   Error is: [Oracle][ODBC][Ora]ORA-29913: error in executing    ODCIEXTTABLEOPEN callout
ERROR&gt;: ORA-29400: data cartridge error
ERROR&gt;: KUP-04040: file testfile.txt in TEST_9F86D0818 not found


I am calling schedules created in NAVICAT to upload .txt files to DATABASE.
There is an Oracle Support Note ORA-29913: Error in Executing ODCIEXTTABLEOPEN Callout (Doc ID 458620.1)  related to your errormessages. You have an external table (ORGANIZATION EXTERNAL) with data in the file 'testfile.txt'  in the Oracle directory "TEST_9F86D0818".

The support note says that this will happen if your os directories that contain the file testfile.txt does not have the appropriate permissions.

So let's check if this file does not exist or if there are problems with the os permissions on the file or the os directories where it resides.


Find out the path of the Oracle directory "TEST_9F86D0818"

select directory_path
from all_directories
where directory_name='TEST_9F86D0818';

Assume the directory_path retrieve in 1 is '/u01/app/oracle/data' or 'C:\u01\app\oracle\data' if you are on a Windows system. Then login to the database server and check if '/u01/app/oracle/data/testfile.txt' (C:\u01\app\oracle\data\testfile.txt) exists.
Let's assume the user that runs your Oracle Software on your database server is oracle. Usually this is the case on a Linux server. Then check if this user can read testfile.txt:

head /u01/app/oracle/data/testfile.txt &gt; /dev/null


or

type C:\u01\app\oracle\data\testfile.txt &gt; NUL


if you are on a Windows system.
If this generates an error message then this is the reason for your problem that you have to eliminate. 
With a user that has access to directory and can execute th UTIL_FILE package (e.g. a dba user) connect to the databae with sqlplus and execute the following 
command:

DECLARE 
  V1 VARCHAR2(32767); 
  F1 UTL_FILE.FILE_TYPE; 
BEGIN 
  F1 := UTL_FILE.FOPEN('TEST_9F86D0818','testfile.txt','R'); 
  UTL_FILE.GET_LINE(F1,V1); 
  UTL_FILE.FCLOSE(F1);
exception 
  when others then
    dbms_output.put_line('ERROR: ' || SQLCODE 
      || ' - ' || SQLERRM);
    raise;
END;
/


If an error is rased, this is the reason for your problem that you have to eliminate. If no error is raised show us the create statement of your external table.