Oracle SQLPLUS错误: ORA-12504: TNS:listener在CONNECT_DATA中未给出SERVICE_NAME

解决方案

解决ORA-12504错误需要操作以下步骤:

1. 检查监听器配置

首先,我们需要验证监听器的配置是否正确。可以通过以下命令查看监听器的状态:

lsnrctl status

如果监听器未处于正在运行的状态,则需要启动监听器:

lsnrctl start

如果监听器运行正常,而ORA-12504错误仍然存在,请继续以下步骤。

 

2. 使用SERVICE_NAME参数连接到数据库

ORA-12504错误表明我们在CONNECT_DATA中未提供SERVICE_NAME参数。为了解决这个问题,我们需要修改连接命令,使用SERVICE_NAME参数连接到数据库。

以SQLPLUS为例,修改连接命令如下:

sqlplus username/password@hostname:port/service_name

其中,username和password是正确的数据库凭据,hostname是数据库所在的主机名或IP地址,port是数据库监听器的端口号,service_name是要连接的数据库实例的SERVICE_NAME。

 

以下是一个示例连接到ORCL数据库实例的命令:

sqlplus username/password@localhost:1521/ORCL

3. 使用tnsnames.ora文件连接到数据库

还可以使用tnsnames.ora文件来配置数据库连接信息。tnsnames.ora文件通常位于$ORACLE_HOME/network/admin目录下。

打开tnsnames.ora文件,并添加一个新的连接别名,指定正确的连接信息。以下是一个示例的tnsnames.ora配置:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

然后,我们可以使用以下命令连接到ORCL数据库实例:

sqlplus username/password@ORCL

4. 检查数据库服务名

最后,我们还应该验证数据库服务名是否正确。可以通过以下命令查看Oracle实例的服务名:

SELECT name FROM v$database;

确保在连接命令中使用的SERVICE_NAME与数据库实例的服务名一致。

posted on   数据派  阅读(21)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示