ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 的解决办法

本文介绍了解决Oracle登录时出现的ORA-12514错误的方法,包括如何查找ORACLE_SID实例名及正确配置服务名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



错误信息:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

如下图:




以上这个信息是登陆时出现的错误提示信息,登陆如下图:




这个是我以前的 ORACLE_SID ,如果忘记了自己的 ORACLE_SID 可以到 DOS 窗口中进行查询 ,如下图:

第一步:

Ctrl + R 输入 “ cmd ” 回车

第二步:

以超级管理员身份登录到 Oracle 服务,输入 “ sqlplus /nolog ”

第三步:

查询 ORACLE_SID 的实例名,输入 “ select instance_name from V$instance; ”

如下图:



修在登陆会话框中,将 “ orcl ”改为 “ etc ” 即可,如下图:



修改完成后就可以正常登录Oracle服务了,造成这个错误的原因是因为Oracle服务安装完成后,又重新安装了一遍,在安装的时候修改了 ORACLE_SID 的名称,默认为 “ orcl ”,所以一定要注意这个问题,就很好的解决这个问题了。

如果在期间还遇到其它问题,欢迎留言哟!








### 解决 Oracle ORA-12514 TNS Listener 服务未知错误 #### 错误分析 当遇到 `ORA-12514: TNS:listener does not currently know of service requested in connect descriptor` 错误时,通常意味着客户端尝试连接到的服务名或 SID 并未被监听器识别。这可能是由于多种原因引起的,包括但不限于: - 监听器配置不正确。 - 数据库实例未启动。 - 连接字符串中的服务名或 SID 配置有误。 #### 检查监听器状态和服务注册情况 为了确认监听器的状态以及它是否知道所请求的服务,可以执行以下命令来检查监听器的状态: ```bash lsnrctl status ``` 如果监听器运行正常但仍然无法找到所需服务,则可能是因为数据库实例尚未向监听器注册其服务名称。此时应进一步验证数据库实例是否已经成功启动并完成初始化[^1]。 #### 修改 tnsnames.oralistener.ora 文件 确保 `tnsnames.ora` 中定义的服务描述符与实际环境相匹配,并且在 `listener.ora` 中指定了正确的全局数据库名称和本地侦听程序端口。例如,在 Windows 上的标准安装路径下编辑这些文件: 对于 `listener.ora`, 添加如下内容以指定要监听的具体实例(SID): ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = C:\app\administrator\product\11.2.0\dbhome_1) (SID_NAME = ORCL) ) ) ``` 而对于 `tnsnames.ora`, 客户端应用程序应该使用类似下面这样的条目来进行连接: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.example.com) # 或者使用 SID 而不是 SERVICE_NAME ) ) ``` 请注意替换上述模板中的主机名、端口号和其他特定于您系统的参数值[^4]。 #### 启动/重启监听器及数据库实例 有时简单的操作如重新加载监听器配置或将整个监听进程停止再启动也能解决问题。可以通过下列命令实现这一点: ```bash lsnrctl reload # 不中断现有会话的情况下应用更改 # 或者完全停掉后再起来 lsnrctl stop lsnrctl start ``` 另外,假如之前提到过的情况确实存在——即虽然监听工作良好但仍显示“已连接至空闲例程”,那么很可能就是数据库本身还没有真正准备好接受外部访问。这时应当按照标准流程手动启动数据库实例: ```sql sqlplus /nolog conn / as sysdba startup mount; alter database open; -- 如果需要的话打开读写模式 exit; ``` 通过以上步骤一般能够有效处理大多数情况下发生的 ORA-12514 错误。当然也有可能涉及到更复杂的原因比如网络防火墙设置阻止了必要的通信等,这就需要具体情况具体分析了[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechBro华仔

日拱一卒无有尽,功不唐捐终入海

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值