关于连接Oracle数据库时出现的“ORA-12541:TNS 无监听程序”和“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”的解决办法

本文详细介绍了如何解决Oracle数据库出现的'ORA-12541:TNS无监听程序'和'ORA-12514:TNS监听程序当前无法识别连接描述符中请求服务'这两个错误。通过关闭并重启Oracle服务,修改listener.ora和tnsnames.ora文件,以及重新配置监听器等步骤,帮助用户成功修复问题,恢复正常数据库连接。

目录

问题一:“ORA-12541:TNS 无监听程序”。

问题2:“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”


问题一:“ORA-12541:TNS 无监听程序”。

① 关闭所有Oracle服务

win+r:输入SERVICES.MSC

主要是这三个:

②修改文件:

路径: D:\app\YanhongLiu\product\11.2.0\dbhome_2\NETWORK\ADMIN

改画圈的这两个:

修改:

③打开所有Oracle服务

 win+r:输入SERVICES.MSC

上面关掉的这三个重新打开:

 ④重新配置监听器

开始菜单找到Oracle文件下的Net Configuration Assistant

过程: 

 

 

 

 

 

 

 

 完成后打开数据库就能使用了,如果还是不行或者出现“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”这种错误,请看下面的解决办法。

问题2:“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”

 ① 关闭所有Oracle服务

win+r:输入SERVICES.MSC

主要是这三个:

②修改文件:

路径: D:\app\YanhongLiu\product\11.2.0\dbhome_2\NETWORK\ADMIN

修改文件listener.ora,实例名可根据自己所需进行修改。 

 

 文件打不开可以使用编译器打开并编辑: 

 我的内部文件是这样的:

③ 保存完后,再重新打开Oracle服务。

 win+r:输入SERVICES.MSC

上面关掉的这三个重新打开:

 然后,重复问题1的第④步重新配置监听器即可。

再次打开就能运行程序了:

 

当在连接 Oracle 数据库出现 “ORA - 12541: TNS:监听程序” 错误,可尝试以下解决方法: ### 检查监听服务状态 要保证 Oracle 监听服务已启动。在 Windows 系统下,可通过以下步骤操作: 1. 打开“服务”窗口(可通过在“运行”中输入 `services.msc` 来打开)。 2. 找到 Oracle 监听服务(通常名为 `OracleOraDb19Home1TNSListener`,版本号可能不同)。 3. 若服务处于停止状态,右键点击该服务,选择“启动”。 在 Linux 系统中,可使用以下命令来启动监听服务: ```bash lsnrctl start ``` ### 检查监听配置文件 监听配置文件 `listener.ora` 可能存在配置错误。该文件一般位于 `$ORACLE_HOME/network/admin` 目录下。 检查 `listener.ora` 文件内容是否正确,一个基本的 `listener.ora` 示例如下: ```plaintext SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:/u01/app/oracle/product/19.3.0/dbhome_1/lib/libextproc.so") ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1) (SID_NAME = orcl) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ``` 要确保 `HOST` 为正确的主机名或 IP 地址,`PORT` 为监听端口(默认是 1521)。修改后,重启监听服务: ```bash lsnrctl stop lsnrctl start ``` ### 检查防火墙设置 防火墙可能会阻止对监听端口(通常是 1521)的访问。 在 Windows 系统中,需在防火墙入站规则中添加允许 1521 端口的规则。 在 Linux 系统中,可使用以下命令开放 1521 端口: ```bash # 对于 firewalld firewall-cmd --zone=public --add-port=1521/tcp --permanent firewall-cmd --reload # 对于 iptables iptables -A INPUT -p tcp --dport 1521 -j ACCEPT service iptables save ``` ### 检查 TNSNAMES.ORA 文件 `TNSNAMES.ORA` 文件用于配置客户端连接信息,位于 `$ORACLE_HOME/network/admin` 目录下。确保其中的连接信息正确,示例如下: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` 要保证 `HOST` `PORT` 与 `listener.ora` 中的配置一致。 ### 检查主机名解析 确保主机名能正确解析为 IP 地址。可通过 `ping` 命令来测试: ```bash ping your_hostname ``` 若无法解析,可检查 `/etc/hosts` 文件(Linux)或 `C:\Windows\System32\drivers\etc\hosts` 文件(Windows),添加相应的主机名 IP 地址映射。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码骑士

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值