oracle 19c ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
时间: 2025-04-27 09:31:21 浏览: 34
### 解决 Oracle 19c 中 ORA-12514 错误的方法
当遇到 `ORA-12514` 错误时,通常意味着 TNS 监听器未能找到与连接描述符匹配的服务名称。这可能是由于配置文件中的设置不正确或监听器未正确注册服务。
#### 检查并修改 `listener.ora`
确保 `listener.ora` 文件中定义了正确的监听地址和服务名称。此文件位于 Oracle 安装目录下网络配置文件夹中。对于某些工具如 Navicat,可能会读取解压目录而非安装目录下的 `listener.ora`[^2]:
```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 = orclpdb)
(ORACLE_HOME = /path/to/oracle_home)
(SID_NAME = orcl)
)
)
```
#### 修改 `tnsnames.ora`
同样重要的是确认 `tnsnames.ora` 的内容指向有效的数据库实例和服务名。该文件也应放置于相同的路径下,并且应当包含如下条目来指定目标数据库的连接字符串[^4]:
```plaintext
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb.your_domain.com)
)
)
```
#### 验证服务状态并重启监听器
完成上述更改后,验证监听器的状态以及它是否已成功加载新的配置。如果必要的话,在 Windows 上可以通过任务管理器内的服务选项卡停止再启动名为 `Oracle<sid>_Listener` 的进程;而在 Linux/Unix 平台上则通过命令行执行相应操作[^3]。
#### 使用 PL/SQL 开发者或其他客户端测试连接
最后一步是在应用程序或者像 PL/SQL Developer 这样的专用 IDE 中尝试建立到数据库的新会话,以检验问题是否得到解决[^1]。
```python
import cx_Oracle
connection = None
try:
connection = cx_Oracle.connect(
user="your_username",
password="your_password",
dsn="localhost:1521/ORCLPDB"
)
except Exception as e:
print(e)
if connection is not None:
cursor = connection.cursor()
cursor.execute('SELECT * FROM dual')
result = cursor.fetchone()
print(result)
cursor.close()
connection.close()
```
阅读全文
相关推荐
















