解決Oracle服務端1521端口無法telnet,服務名未開啟監聽問題


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM