Good Day
Environment:
Oracle 12.1.0.2 EE on Exadata Linux
Client environment is Windows 7
We have some security software that we are required to invoke that passes back the needed user, password and connect string to connect to the desired database.
This process works very well when invoking SQL*Plus but doesn't seem to work invoking SQLLDR.
We are using Windows batch scripts. :-(
My command inside the Windows command file is:
sqlldr userid^=%user%/%pass%@%dbsrvc% silent^=ALL control^=%DATA%%fileNm%.ctl log^=%DATA%%fileNm%.log data^=%DATA%%fullFileName%
All the variables are defined correctly.
The translated command looks like this with 'user' and 'pass' redacted:
sqlldr userid=<user>/<pass>@"(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 'serverXYZ')(PORT = 1525)))(CONNECT_DATA = (SERVICE_NAME = DADR_FEPCSSD_SRVC)(SERVER = DEDICATED)))" silent=ALL control=H:\batch\<input_file>.ctl log=H:\batch\<input_file>.log data=H:\batch\<input_file>.dat
I've redacted some of the sensitive stuff but the connect string, "(DESCRIPTION = ....." is intact other than the server name and is what we're receiving back from the security software. It is what it is and we can't change it at the moment, i.e. no TNS aliases.
When this command is invoked I get:
LRM-00116: syntax error at '<user>/<pass>@' following '='
Again the user and pass are redacted.
I've tried different forms of escaping some of the characters but that should be taken care of already in the batch command file.
I've seen many other threads in other discussion web sites about this issue but have yet to see a solution.
If it works with SQL*Plus, why not with SQLLDR?
Any suggestions are most welcome!!
Thanks very much!!
-gary