环境:
本机
oracle 11g,instantclient_11_2, pl/sql Developer11.1
instantclient的tnsnames.ora配置如下:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
现象:
安装之后,pl/sql和sqlplus都可以连上(scott用户),第二天打开电脑,发现pl/sql正常,
sqlplus无法连接,提示:
ORA-12154: TNS: 无法解析指定的连接标识符
原因:
密码中含有“@”符号
解决方法:
1、修改密码,不含特殊字符;
2、将密码加上引号
解决过程:
网上搜索说tnsnames.ora配置不正确,检查后发现没有问题,而且pl/sql连接正常(虽然pl/sql用的是instantclient的
tnsnames文件,sqlplus用的是oracle的tnanames,但我是拷贝的,这两个里面的ORCL的配置是一样的,并且前面没有
空格(别名前如有空格,也无法正常连接)),所以排除tnsnames文件的问题。再检查oracle相关的服务是否都已正常启动:
没有问题,服务正常。是不是用户的问题,我用system用户连接试试,发现可以正常连接,这说明就是scott用户的问题了。
从网上看到登录oracle数据库一般是: username/password@数据库实例,看到@时才想起我的密码里含有@字符,是不是这个问题?
搜了一下,网上说密码中含特殊字符的话,可以加引号,再次登录,密码加上双引号,连接成功。