当前位置: 代码网 > it编程>数据库>Oracle > Oracle服务端1521端口无法telnet,服务名未开启监听的解决

Oracle服务端1521端口无法telnet,服务名未开启监听的解决

2024年05月18日 Oracle 我要评论
场景oracle服务安装在windows本地,oracle客户端在虚拟机中,使用虚拟机连接windows的oracle数据库。问题1:使用虚拟机telnet我本地oracle1521端口,不通解决思路

场景

oracle服务安装在windows本地,oracle客户端在虚拟机中,使用虚拟机连接windows的oracle数据库。

问题1:使用虚拟机telnet我本地oracle1521端口,不通

解决思路:

关闭虚拟机linux防火墙(这个方法有点粗暴,建议在只需要修改防火墙的端口允许通过即可)

# 1:查看防火状态
systemctl status firewalld
service  iptables status
# 2:暂时关闭防火墙
systemctl stop firewalld
service  iptables stop
# 3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
# 4:重启防火墙
systemctl enable firewalld
service iptables restart  
# 5:永久关闭后重启
chkconfig iptables on

防火墙配置规则 端口 允许得端口

# 查看已打开的端口
netstat -anp
# 添加允许的端口
firewall-cmd --add-port=1521/tcp --permanent
# 若移除端口
firewall-cmd --permanent --remove-port=1521/tcp
# 策略修改完成,请重启: 
systemctl restart firewalld

添加windows防火墙对1521的入站允许规则

1579253672708

问题2:使用sqlplus登录报错,ora-12514: tns: 监听程序当前无法识别连接描述符中请求的服务

解决思路:关键字监听程序

查看监听服务状态

# 关闭监听服务
lsnrctl stop
# 启动监听服务
lsnrctl start
# 查看监听服务状态
lsnrctl stat

查看监听服务如果出现下列问题

1579254533200

说明监听服务没有启动

去启动oracle监听服务,监听服务有两个,这里只做单监听讲,随便启动一个即可。

1579254625812

再通过lsnrctl stat查看监听服务,如果出现下图情况

1579254724154

只看到一个服务名"clrextproc"启动了,而我们想要的是orcl服务名

这是需要修改listener.ora 文件

修改listener.ora 文件

文件路径,我本地的路径是:d:\app\niaobulashi\product\11.2.0\dbhome_1\network\admin

需要添加以下红色部分代码,将服务名为orcl添加到监听配置文件中

1579254216172

贴出来如下:

sid_list_listener =
  (sid_list =
    (sid_desc =
      (sid_name = clrextproc)
      (oracle_home = d:\app\niaobulashi\product\11.2.0\dbhome_1)
      (program = extproc)
      (envs = "extproc_dlls=only:d:\app\niaobulashi\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
	(sid_desc=
	  (sid_name = orcl)
      (oracle_home = d:\app\niaobulashi\product\11.2.0\dbhome_1)
      (program = extproc)
      (envs = "extproc_dlls=only:d:\app\niaobulashi\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )
 
listener =
  (description =
    (address = (protocol = tcp)(host = desktop-nndncei)(port = 1521))
  )
adr_base_listener = d:\app\niaobulashi

再查看监听服务状态,可以看到orcl有了

1579254808269

修改tnsname.orahost为本地主机名

oraclr_connection_data =
  (description =
    (address_list =
      (address = (protocol = ipc)(key = extproc1521))
    )
    (connect_data =
      (sid = clrextproc)
      (presentation = ro)
    )
  )
 
listener_orcl =
  (address = (protocol = tcp)(host = desktop-nndncei)(port = 1521))
 
orcl =
  (description =
    (address_list =
      (address = (protocol = tcp)(host = desktop-nndncei)(port = 1521))
    )
    (connect_data =
      (service_name = orcl)
    )
  )

最后使用虚拟机就可以正常连接本地oracle服务了

1579254894242

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com