Source: http://www.askmaclean.com/archives/password-symbol.html
Purpose: To supplement the http://www.cnblogs.com/AlbertCQY/archive/2013/03/29/2989764.html
When managing Oracle user password security, we always use various tools to generate password issues with special symbols, such as &, *, #, and $, however, when using the above special password, you may encounter various errors, such:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0-production with the partitioning, automatic storage management, OLAP, data mining and real application testing options
SQL> create user maclean_password identified by # $ % ^ &*!; Create user maclean_password identified by # $ % ^ &*! * Error at line 1: ORA-00911: Invalid character
[Oracle @ database ~] $ Oerr ora 1, 911
00911,000 00, "invalid character "//
* Cause: identifiers may not start with any ASCII character other //
Letters and numbers. $ # _ are also allowed after the first //
Character. Identifiers enclosed by doublequotes may contain //
Any character other than a doublequote. Alternative quotes //
(Q '#... # ') Cannot use spaces, tabs, or carriage returns //
Delimiters. For all other contexts, consult the SQL language //
Reference manual .//
* Action:
Note that the password of an Oracle user must start with a letter or number (letters and numbers), otherwise a ORA-00911 error will occur
If an error still persists when it starts with a letter or number, use double quotation marks to enclose the password. Do not use double quotation marks for Chinese input !!
SQL> create user maclean_password identified by 1 # $ % ^ &*!;
Create user maclean_password identified by 1 # $ % ^ &*! *
Error at line 1: ORA-00911: Invalid character
SQL> create user maclean_password identified by "1 # $ % ^ &*!";
User Created.
SQL> grant connect to maclean_password 2;
Grant succeeded.
SQL> conn maclean_password/"1 # $ % ^ &*!" Connected.
Another possibility is that when the & (and) symbol exists in sqlplus or other ide (such as PL/SQL developer), the client regards & as a variable, such:
SQL> create user maclean_password1 identified by "0000 & A"; enter value for:
In this case, you only need to change define to a non-& symbol, for example:
SQL> set define +
SQL> show define "+" (hex 2b)
SQL> create user maclean_password1 identified by "0000 & ";
User Created.
SQL> grant connect to maclean_password1;
Grant succeeded.
SQL> conn maclean_password1/"0000 & A" connected.