在window 上装了oracle11g,按照常规步骤安装完成后一切OK,如下图所示
C:UsersAdministrator>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期四 3月 9 10:49:26 2017 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn user/password@orcl as sysdba; 已连接。 SQL> select * from dual; DU -- X
查看监听服务,结果如下
C:UsersAdministrator>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 09-3月 -2017 10:5 7:55 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ ction 启动日期 09-3月 -2017 10:38:54 正常运行时间 0 天 0 小时 19 分 5 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:appAdministratorproduct11.2.0dbhome_1 etworka dminlistener.ora 监听程序日志文件 d:appadministratordiag nslsnrWIN-0738SGLLSFVlist eneralertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-0738SGLLSFV)(PORT=1521))) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "gzyl" 包含 1 个实例。 实例 "gzyl", 状态 READY, 包含此服务的 1 个处理程序... 服务 "gzylXDB" 包含 1 个实例。 实例 "gzyl", 状态 READY, 包含此服务的 1 个处理程序... 命令执行成功
此时,我做了一个实验,现在停掉监听服务,然后本地登录Oracle报错 ORA-12541: TNS: 无监听程序,没有监听我认为是正常的
但是,我再次启动监听,然后查看监听状态发现监听里面没有我的gzyl的实例了,但是这个时候我的实例是启动状态,只是之后监听重启了,服务没重启
报错如下:
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
解决办法:
net stop OracleServiceGZYL--停掉数据库服务
lsnrctl stop--停掉监听服务
lsnrctl start--启动监听服务
net start OracleServiceGZYL--启动数据库服务
再次查看监听状态。效果如下
C:UsersAdministrator>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 09-3月 -2017 11:0 1:49 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ ction 启动日期 09-3月 -2017 11:01:15 正常运行时间 0 天 0 小时 0 分 37 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:appAdministratorproduct11.2.0dbhome_1 etworka dminlistener.ora 监听程序日志文件 d:appadministratordiag nslsnrWIN-0738SGLLSFVlist eneralertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-0738SGLLSFV)(PORT=1521))) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "gzyl" 包含 1 个实例。 实例 "gzyl", 状态 READY, 包含此服务的 1 个处理程序... 服务 "gzylXDB" 包含 1 个实例。 实例 "gzyl", 状态 READY, 包含此服务的 1 个处理程序... 命令执行成功 C:UsersAdministrator>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期四 3月 9 11:02:54 2017 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn user/password@gzyl as sysdba; 已连接。 SQL> select * from dual;
可以看出,oracle数据库服务和监听服务的顺序是:
监听→数据库
如果要重启监听程序,最好是把数据库服务和监听服务都停掉,然后依次启动监听-数据库服务,个人怀疑是监听只能监听服务器启动的操作,这是本地cmd连接oracle遇到的一种情况