Sorry, late to the party, again!
I suspect the problem is caused by the fact that Oracle doesn't allow an exclamation mark in a password. Ok, that's not strictly true, because obviously it does, so what's going on here?
Oracle allows three special characters in passwords and only three:
- A hash/pound/number sign, '#';
- A dollar sign, '$';
- An underscore, '_'
Those three will be accepted without quotes in a password on the command line, in SQL*Plus, in scripts to connect to the database etc. You can
connect username/password@some_database without quotes.
Many other characters are acceptable to Oracle, provided they are in double quotes. many of my own passwords are unacceptable to Oracle, unless I quote them when connecting. I even do this on Toad's connection screen by default.
The exclamation mark is one I occasionally use, and I always have to quote it. On the Linux command line, on the servers, I even have to use single quotes to stop the shell reading the exclamation mark and acting upon it immediately:
Even double quotes give an error with an exclamation mark.
Just some background info, in case it helps.