Navicate远程连接Centos-Oracle19c:ORA-12541: TNS: no listener 无监听错误 - tcping 1521端口关闭

1. 问题的产生

这个问题无比奇怪,因为半个月前安装oracle的时候,当场就能使用navicate连接远程的数据库。但是昨天晚上突然就连不上了。一直提示说没有监听,但是我在Centos上可以启动监听,并且连接sqlpus,查看用户修改密码都没有问题。
在这里插入图片描述

2. 问题的思考

我在虚拟机本机tcping 127.0.0.1 1521,端口是open的。但是,从本地主机tcping 192.168.111.133 1521,端口是关闭的。192.168.111.133 为虚拟机ip.

在这里插入图片描述
所以我感觉还是centos上的监听出了问题。

2.1 关于oci.dll文件的问题

问题解决之后,我尝试更换navicate指向的oci.dll文件,由于oci.dll均为相对高级的版本,所以本次错误不是由oci.dll文件引起的。
在这里插入图片描述

2.2 关于HOST值的问题

因为navicate启动起来了,HOST的值我就没有修改回原来的hostname,复查原因…

3. 问题的解决

今天早上接着百度方法,主要在监听文件启动监听程序两个方面进行修正。然后navicate恢复正常。

3.1 监听文件的修改

将两个文件HOST的值由localhost更改为本机ip192.168.111.133

listener.ora

# listener.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora <
### ORA-12541 错误的解决方法 ORA-12541 错误通常表示“TNS:监听程序”,这意味着客户端无法找到目标数据库的监听器。在使用 Navicat 连接 Oracle 数据库时,此问题可能由于监听服务未启动、网络配置错误TNS 配置不正确引起。 #### 检查监听服务是否运行 确保 Oracle 监听服务已经启动。可以通过以下步骤检查: 1. 打开 **Windows 服务管理器**。 2. 查找与 Oracle 相关的服务,例如 `OracleOraDb11g_home1TNSListener` 或类似名称的服务。 3. 确保该服务处于 **运行中** 状态。如果未运行,右键点击并选择 **启动** [^3]。 #### 验证 TNS 配置 检查 `tnsnames.ora` 文件中的配置是否正确。文件路径通常是 `$ORACLE_HOME/network/admin/tnsnames.ora`。确保其中包含正确的数据库连接描述符,例如: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` 如果文件内容缺失或不正确,请根据实际环境修改配置 [^5]。 #### 修改监听器配置 如果监听器配置不完整,也可能导致 ORA-12541 错误。请检查 `listener.ora` 文件,确保其包含必要的 SID 描述信息。例如: ```plaintext SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = D:\ITSoft\oracle\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:D:\ITSoft\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = D:\ITSoft\oracle\product\11.2.0\dbhome_1) (SID_NAME = orcl) ) ) ``` 修改完成后,重启 Oracle 监听服务以使更改生效 [^5]。 #### 网络连通性验证 确保客户端能够通过网络访问数据库服务器。可以使用以下命令测试网络连接: ```bash ping <host> ``` 替换 `<host>` 为数据库服务器的主机名或 IP 地址。此外,尝试使用 `tnsping` 命令验证 TNS 解析是否正常: ```bash tnsping <service_name> ``` 替换 `<service_name>` 为数据库服务名(如 `orcl`)[ ^3 ]。 #### 防火墙设置 检查防火墙是否阻止了 Oracle 监听端口(默认为 1521)。如果防火墙启用,请确保该端口已开放。可以在 Windows 防火墙中添加例外规则允许端口通信 [^3]。 #### 使用 Navicat 测试连接 完成上述配置后,重新启动 Navicat 并尝试再次连接数据库。如果仍然存在问题,请检查 Navicat连接设置是否正确,包括主机名、端口、服务名等字段 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大大枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值