都是@惹的祸,要么就别用这个符号作为密码。曾经遇到过就小结一下
先创建一个带@的密码。创建就失败,加双引号成功。
[oracle@test59 ~]$ sqlplus / as sysdba
sys@testa(5634)> alter user test identified by qwer@1234;
alter user test identified by qwer@1234
*
ERROR at line 1:
ORA-00922: missing or invalid option
Elapsed: 00:00:00.01
sys@testa(5634)> alter user test identified by "qwer@1234";
User altered.
Elapsed: 00:00:00.01
连接失败
sys@testa(5634)> conn test/qwer@1234
ERROR:
ORA-12532: TNS:invalid argument
Warning: You are no longer connected to ORACLE.
sys@testa(5634)> exit
加双引号连接成功
[oracle@test59 ~]$ sqlplus / as sysdba
sys@testa(5634)> conn test/"qwer@1234"
Connected.
Session altered.
Elapsed: 00:00:00.00
test@testa(5634)> show user;
USER is "TEST"
test@testa(5634)> exit
直接连接也失败
[oracle@test59 ~]$ sqlplus test/"qwer@1234"@testa
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Enter user-name:
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
ERROR:
ORA-01017: invalid username/password; logon denied
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
正确连接姿势
[oracle@test59 ~]$ sqlplus 'test/"qwer@1234"'@testa
Session altered.
Elapsed: 00:00:00.01
test@testa(9389)> show user;
USER is "TEST"
test@testa(9389)>
总结:@符号是一个特殊的存在,在登陆时@后面通常接的是数据库名称,所以在sqlplus 或 conn 时会有异常,可以通过加双引号的方式将其视为一个字符串。最好的避免方式是不要在密码里出现@符号