欢迎投稿

今日深度:

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

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


目录
  • 场景
  • 问题1:使用虚拟机telnet我本地oracle1521端口,不通
  • 问题2:使用sqlplus登录报错,ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
  • 总结

场景

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。 

您可能感兴趣的文章:
  • 修改Oracle监听默认端口号1521的方法
  • Oracle监听注册的实现
  • Oracle监听启动时由“监听程序不支持服务”遇到的一系列问题
  • 处理Oracle监听程序当前无法识别连接描述符中请求的服务异常(ORA-12514)

www.htsjk.Com true http://www.htsjk.com/oracle/47647.html NewsArticle Oracle服务端1521端口无法telnet,服务名未开启监听的解决, 目录 场景 问题1:使用虚拟机telnet我本地oracle1521端口,不通 问题2:使用sqlplus登录报错,ORA-12514: TNS: 监听程序当前无法识别连...
评论暂时关闭