错误 12545:连接失败,因为尝试连接 sqlplus 时目标主机或对象不存在
Posted
技术标签:
【中文标题】错误 12545:连接失败,因为尝试连接 sqlplus 时目标主机或对象不存在【英文标题】:ERROR 12545 : Connect failed because target host or object doesn't exist while trying to connect sqlplus 【发布时间】:2021-04-11 19:55:55 【问题描述】:我想安装 oracle 即时客户端,但在尝试远程数据库时遇到了问题。我总是收到错误 ORA-12545,但我的 oracle DB 处于活动状态并且工作正常。我已经启动了侦听器并在两侧配置 /etc/host。
这是我在 Oracle 数据库服务器上的 tnsnames.ora 配置:
ROLFSAN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ullabritta)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rolf)
)
)
这是我在 oracle Instant 上的 tnsname.ora 配置:
SVEN = -- i give this name as i wish, there's no sven on oracle database
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ullabritta)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rolf)
)
)
我做错了吗?还是oracle数据库服务器有具体配置??
【问题讨论】:
【参考方案1】:使用 IP 地址,而不是主机名。 Oracle客户端使用DNS解析名称,可能不使用hosts文件。
【讨论】:
您好,谢谢您的回答。我将其更改为 ip 地址它仍然无法正常工作,但如果我使用此 'sqlplus user/password@ipaddress:1521/rolf' 登录,它工作正常。通过任何改变你知道什么是错的吗?因为我需要确保 TNS 侦听器和 Oracle 实例可用于连接,以便通过 zabbix 通过 ODBC 监控 oracle。 您确定系统正在使用您认为的 tnsnames.ora 文件条目吗?使用 Bjarte Brandt 描述的方法,或者将 sqlnet.ora (docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF250) 中的 TRACE_LEVEL_CLIENT 参数设置为“SUPPORT”进行确认。【参考方案2】:您可以将连接描述放在一行中并验证
sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ullabritta)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rolf)))
接下来,确保您的客户端正在使用 strace 获取 tnsnames.ora 文件。 strace 将输出您的客户端正在执行的所有系统调用。
strace sqlplus user/pass@TNS_ALIAS
您可以将 tnsnames.ora 文件放在文件系统上您喜欢的任何位置。环境变量 TNS_ADMIN 会覆盖任何默认位置。
cat > tnsnames.ora <<EOF
MY_ALIAS=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ullabritta)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rolf)))
EOF
export TNS_ADMIN=./
sqlplus user/pass@MY_ALIAS
祝你好运!
【讨论】:
以上是关于错误 12545:连接失败,因为尝试连接 sqlplus 时目标主机或对象不存在的主要内容,如果未能解决你的问题,请参考以下文章
转ora-12545:因目标主机或对象不存在,连接失败的解决办法 .
使用带有 node-oracledb 的 SID 连接到 Oracle DB 失败