I find this somewhat astonishing but sql*loader seems to have an upper limit on the length of the username/password@dbname combination you pass in the userid parameter. If I try a combination with 30 characters, I get:

SQL*Loader-951: Error calling once/load initialization
ORA-00604: error occurred at recursive SQL level 1
ORA-00972: identifier is too long

Using a combination with a smaller number of characters and everything else the same works fine. Does anyone know if this is a known bug and if there is a workaround for it ? I've tried userid both on the command line and in a parameter file.