Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
时间: 2025-05-28 22:24:45 浏览: 45
### ORA-12514 错误的根本原因
ORA-12514 错误表示 TNS 监听器无法识别连接描述符中请求的服务名称。这一问题的主要原因是服务名(SERVICE_NAME)在监听器配置文件 `listener.ora` 和数据库初始化参数文件中不一致,或者监听器尚未注册该服务[^2]。
---
### 解决方案详解
#### 一、检查监听器配置文件 `listener.ora`
确保 `listener.ora` 文件中定义的监听器和服务名称与实际需求相符。例如:
```plaintext
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = your_service_name)
(ORACLE_HOME = /path/to/oracle/home)
(SID_NAME = your_sid_name)
)
)
```
其中:
- `your_host_name_or_ip` 替换为服务器的实际主机名或 IP 地址。
- `your_service_name` 应与数据库的 SERVICE_NAME 参数保持一致。
- `your_sid_name` 是数据库实例的 SID 名称。
更新完成后,重启监听器以使更改生效:
```bash
lsnrctl stop
lsnrctl start
```
---
#### 二、验证数据库是否已向监听器注册
通过以下命令检查监听器状态以及其已知的服务列表:
```bash
lsnrctl status
```
输出应显示类似于以下的内容:
```plaintext
Services Summary...
Service "your_service_name" has 1 instance(s).
Instance "your_instance_name", status READY, has 1 handler(s) for this service...
The command completed successfully
```
如果没有看到预期的服务名称,则需要进一步排查。
---
#### 三、检查数据库初始化参数
登录到数据库并查看 `LOCAL_LISTENER` 参数设置是否正确:
```sql
show parameter LOCAL_LISTENER;
```
如果返回为空或指向错误的监听器地址,则可以通过以下方式动态修改参数:
```sql
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=your_host_name_or_ip)(PORT=1521))' SCOPE=BOTH;
```
随后手动触发重新注册:
```sql
ALTER SYSTEM REGISTER;
```
---
#### 四、检查 tnsnames.ora 配置
确保客户端使用的 `tnsnames.ora` 文件中定义的服务名称与监听器和数据库的一致。例如:
```plaintext
YOUR_SERVICE_NAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = your_service_name)
)
)
```
---
#### 五、测试连接
使用 `tnsping` 命令测试网络服务名是否可以成功解析:
```bash
tnsping YOUR_SERVICE_NAME
```
如果解析成功,再尝试通过 SQL*Plus 连接数据库:
```bash
sqlplus username/password@YOUR_SERVICE_NAME
```
---
### 总结
ORA-12514 错误的核心在于服务名称未被监听器正确认识。解决方案包括但不限于校验 `listener.ora` 和 `tnsnames.ora` 配置文件、调整数据库初始化参数 `LOCAL_LISTENER` 并强制重新注册服务[^2]。
---
阅读全文
相关推荐









