现象
已知windows操作系统的本地安装有oracle server软件
问题排查
- 原因1:windows上的oracle服务未启动
通过services.msc来确定服务是否启动
services.msc
如果没有启动,先启动这个服务。注意:oracle服务和oracle实例是两个东西,也就是服务启动后,实例不一定启动,必须先启动服务然后才能启动实例。
通过sc命令来确定服务是否启动
sc query state= all|findstr SERVICE_NAME|findstr Oracle*
sc query OracleServiceorcl
如果未启动,可以通过下面的命令来启动
net start OracleServiceorcl
可以通过vmic命令来确定是否启动
wmic service list brief|findstr Oracle
- 原因2:在安装有多个oracle家目录的情况下,有可能sqlplus走的是client的而不是server端的sqlplus
尝试用非本地的连接串来连接
检查监听状态信息
lsnrctl status
sqlplus system/oracle@172.16.0.1:1521/orcl
在windows上既有ORACLE server也有ORACLE client的时候,这个sqlplus可能调用的是client的sqlplus也会导致这个报错
echo %PATH% 确定是否有多个sqlplus位置
从上面的结果中可以看出只有1个ORACLE server
可以通过where sqlplus 来确定是否来源于哪个文件
通过调整PATH中的命令先后顺序来实现
sysdm.cpl
通过绝对路径来实现
C:\Users\Administrator>D:\app\dbhome_1\bin\sqlplus / as sysdba
- 原因3:如果本地有多个实例,未设置环境变量
通过临时设置ORACLE_SID和ORACLE_HOME环境变量
set ORACLE_SID=orcl
set ORACLE_HOME=D:\app\dbhome_1
echo %ORACLE_SID%
echo %ORACLE_HOME%