今天在使用PLSQL远程连接ORACLE数据库的时候,突然报错,无监听程序,出现这个错误 我首先第一反应是打开 服务 看了一下 Oracle常用的几个服务是否正常启动,监听服务是否启动,打开发现ORACLE的 所必须开的的服务 都已经正常运行, 然后我又尝试连接了一下本地的Oracle数据库,怪了 ,本地的数据库可以正常连接,没有任何问题,
既然这样我想那应该不是数据库程序的错误,本地数据库也没问题, 那有可能是网络问题,我又ping了一下 我要连接的数据库的主机的IP OK!可以ping通 而且没有任何问题,
我在网上找了半天关于与此有关的问题 有的改这,有的改那,但是问题依然解决不了,估计环境也不太一样,后来我尝试着去修改 oracle的连接配置文件E:\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora 和
E:\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora 这两个文件,listener.ora这个文件是监听程序的配置文件,在这里可以配置主机的监听程序的信息,tnsnames.ora 这个文件是远程连接的配置信息通过修改这些配置文件,问题解决了,下面我具体说明一下我的解决流程。
首先打开这个两个配置文件如果安装客户端程序的不要打开客户端里面的listener.ora 文件,因为监听程序搜寻的配置文件是E:\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora这个路径下的,SO打开这个配置文件,我的配置文件如下:
# listener.ora Network Configuration File: E:\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 = E:\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = E:
我们可以看到 上面文件中HOST = localhost 这句 一般默认的都是localhost,但是如果你需要让别人远程连接你的数据库的时候,这个HOST的值就应该是你的主机名称,不然的话别人远程连接你的数据库的时候会出现 无监听程序 的错误修改如下:
# listener.ora Network Configuration File: E:\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 = E:\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = SXL)(PORT = 1521))
)
)
ADR_BASE_LISTENER = E:
将HOST = localhost 换成 HOST = SXL ,SXL是我的主机名称,修改过后,注意还需要重启服务,先把Oracle的服务都关掉,然后重新启动,关机从启也可以就是太麻烦,
然后再按照以往的方式,打开客户端里的E:\product\instantclient_10_2\tnsnames.ora文件 ,如下:
`# tnsnames.ora Network Configuration File: E:\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCL244 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SXL)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
然后重新启动PLSQL 远程连接oracle数据库成功。