您的位置:

了解ORA-12162错误

一、错误背景

ORA-12162错误通常表示数据库连接失败,错误消息为:

ORA-12162: TNS:net service name is incorrectly specified

该错误是由于Oracle客户端未正确识别TNS服务名造成的,它可能出现在多种环境下。

二、解决方法

针对ORA-12162错误,以下是一些有效的解决方法:

1、确认TNS服务名是否正确

ORA-12162错误通常表示TNS服务名无效,需要确认TNS服务名是否存在、是否正确。

[oracle@test ~]$ tnsping service

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 13-JUN-2022 9:18:29

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:
/opt/oracle/product/11.2.0/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = service)))
OK (0 msec)

如果TNS服务名正确,那么tnsping将显示“OK”,否则将会给出TNS服务名无效的提示信息。

2、检查Oracle客户端版本是否正确

ORA-12162错误还可能是由于Oracle客户端版本不兼容引起的。您需要安装适合您的数据库版本的Oracle客户端。

3、检查Oracle数据库的监听器是否运行

在Oracle数据库连接网络中,监听器充当了服务器上的一个主机进程,监视客户端连接请求。如果监听器未运行,将无法连接到数据库。

可以使用lsnrctl命令检查监听器的状态。

[oracle@test ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 13-JUN-2022 9:18:54

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                13-JUN-2022 09:17:05
Uptime                    0 days 0 hr. 1 min. 49 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/test/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.200.11)(PORT=1521)))
The listener supports no services
The command completed successfully

4、检查防火墙配置是否正确

ORA-12162错误还可能是由于防火墙配置引起的。如果您的计算机上启用了防火墙,您需要在防火墙上开放Oracle数据库所需的端口。

三、总结

ORA-12162错误通常表示数据库连接失败,很可能是由于TNS服务名无效、Oracle客户端版本不兼容、监听器未运行或防火墙配置等多种原因造成的。您可以通过确认TNS服务名是否正确、检查Oracle客户端版本是否正确、检查Oracle数据库监听器是否运行、检查防火墙配置是否正确等解决方法解决该错误。