plsql连接oracle 11g 本地能连接上,远程连接不上,错误码:ORA-12541 TNS 无监听程序

注意:我本地安装oracle11gR2 64位,桌面类;

  • 我本地安装目录:D:\app\ELONG\

解决办法:

1. 修改D:\app\ELONG\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora,修改host=为你本机的IP地址,远程通过IP访问;

  • 修改前listener.ora,如下:
  • # listener.ora Network Configuration File: D:\app\ELONG\product\11.2.0\dbhome_1\network\admin\listener.ora
    # Generated by Oracle configuration tools.
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = D:\app\ELONG\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:D:\app\ELONG\product\11.2.0\dbhome_1\bin\oraclr11.dll")
        ) 
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
        )
      )
    
    ADR_BASE_LISTENER = D:\app\ELONG
  • 修改后listener.ora
# listener.ora Network Configuration File:  D:\app\ELONG\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\app\ELONG\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\ELONG\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    ) 
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.135)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = D:\app\ELONG

2. 修改D:\app\ELONG\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,修改host=为你本机的IP地址,远程通过IP访问;

  • 修改tnsnames.ora前:
# tnsnames.ora Network Configuration File: D:\app\ELONG\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

SYDJ =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SYDJ)
    )
  )

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

LISTENER_SYDJ =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
  • 修改tnsnames.ora后:
# tnsnames.ora Network Configuration File: D:\app\ELONG\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

SYDJ =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SYDJ)
    )
  )

SYDJ2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.135)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SYDJ)
    )
  )

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

LISTENER_SYDJ =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
LISTENER_SYDJ2=
  (ADDRESs = (PROTOCOL = TCP)(HOST=192.168.27.135)(PORT=1521))

结果:

  • 现在可以通过远程连接到192.168.27.135这台oracle数据库;

注意:

192.168.27.135为本地电脑在局域网中的内网IP,当换成其他网络时,这个IP也便不会存在,此时若前面两个配置文件依旧那么写,则在启动Oracle的监听器服务时,会报错:

本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其它服务或程序使用时将自动停止。

plsql连接oracle 11g 本地能连接上,远程连接不上,错误码:ORA-12541 TNS 无监听程序_第1张图片

解决方法:

将上面两个配置文件恢复原样,即将有关这个内网IP192.168.27.135的部分全部删掉并保存,便可解决问题。

你可能感兴趣的:(plsql连接oracle 11g 本地能连接上,远程连接不上,错误码:ORA-12541 TNS 无监听程序)