最后几天我面对一个奇怪的oracle问题。我在tnnames .ora中定义了数据库。已安装Oracle客户端,并已将client和client/bin添加到PATH中。
Ping
工作,tnsping
工作,我可以通过telnet通过数据库端口连接主机。
当我尝试运行应用程序试图连接到数据库时,我得到
ORA-12543: TNS:目标主机不可达
当我尝试通过sqlplus
连接时也是同样的情况sqlplus用户名/password@TNSNAME
这种情况只发生在一个工作站上,一般情况下它应该可以工作。
WS是windows 7 64位。
数据库:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
我有同样的问题,我通过更改密码和删除"@"字符来解决它。
@是告诉SQL plus我们想要连接哪个连接标识符(服务名/sid)。总之,避免在密码中使用此字符。
我也遇到了同样的问题ORA-12543: TNS:目标主机不可达
i resolve it in this way
开放sqlplus 连接enter user-name:system输入密码:HHHHH@2014
则引发以下错误
问题是我的密码包含@符号
通过将我的密码输入"HHHHHH@2014"
我也得到ORA-12543:TNS:目标主机不可达。但对我来说,问题出在密码上。
解决方案:需要从现有密码as中删除"@"@定义sqlPlus中用于连接的连接标识符。
要更新密码,请执行以下步骤:登录到窗口cmd,然后输入"sqlplus/nolog"然后"connect/as sysdba"。连接上后,将SYS密码更改为不带@的密码:"ALTER USER sys IDENTIFIED BY new_password;"
(以sys dba身份登录)
sql>conn/as sysdba
(然后修改用户)
sql>alter user username identified by newuserName
sql>提交
(现在再次尝试使用相同密码的新用户登录,它将工作)点击1查看截图——[1]
最近,我为了测试安装了Oracle 11g,安装完成后,用系统和Pravin@01密码在浏览器上启动了Database 11g Express Edition,连接成功。在我尝试使用SQL开发工具后,它也工作得很好,但当我试图使用SQL PLUS命令行工具连接时,它突然给了我一个错误,
ORA-12543: TNS:目标主机不可达
然后经过一个小时的研究,我得到了一个解决方案,Oracle将密码中的@字符视为'
所以这个问题的解决方案是使用 从密码中删除@字符
service name or sid
ALTER USER system IDENTIFIED BY '这是你的新密码,应该包含字符和数字只尝试消除特殊字符';
我想这篇文章可能对你有帮助。
我在Windows 2016环境下使用Oracle 18c 64位进行了测试
当尝试使用密码中的"@"登录时,请使用以下转义字符序列。
用户:斯科特密码:scott@test
sqlplus scott/”scott@test”@TEST_DB
为了避免这种烦恼,在登录到sqlplus后,使用以下命令更改不带@字符的密码。
alter user scott identified by "newpassword"
使用URL编码在您的密码中使用特殊字符,而不是通过终端连接时使用原始的特殊字符
: -
- sqlplus system/Password@12345@oracle as sysdba; 然后可接受的连接url将是:- sqlplus system/Password%4012345@oracle as sysdba;。这里%40是@的URL Encoding,因此将所有特殊字符替换为各自的URL Encoding并在终端中执行连接命令
您的当前密码必须包含"@"符号,这就是问题所在。所以,只需重置密码,不要在新密码中使用此符号。