ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-04-01 09:31:43  阅读:251  来源: 互联网

标签:服务 端口 telnet 名未 ORCL 1521 SID Oracle 监听


场景: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

标签:服务,端口,telnet,名未,ORCL,1521,SID,Oracle,监听
来源: https://www.cnblogs.com/niaobulashi/p/16085240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有