很长时间没有用oracle,今天由于学习原因,就去连接了一下数据库,结果报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务这个错误,搞了好久也没找到什么原因,也在网上找了许多的方法,结果都不行,主要解决方法如下:
1.在listener.ora文件中作如下添加操作
在
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = F:\app\bawcwchen\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:F:\app\bawcwchen\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
<!--下面是我添加的->
(SID_DESC =
(GLOBAL_DBNAME =ORCL) --与tnsnames.ora里的ORCL = (DESCRIPTION.....)中的ORCL一样。
(ORACLE_HOME = F:\app\bawcwchen\product\11.2.0\dbhome_1)
(SID_NAME =orcl) --与tnsnames.ora里的service-name一样,是数据库名,通常情况下就是实例名。
)
通常情况下是不用在listener.ora里这么配置的,因为oracle会自动与找默认监听,但有时还是会失效,所以我们就得主动出击,在listerner.ora中配置自己数据库的监听。
记住,配置完后一定要启动oracleserviceORCL和oraclehome1tnslistener这两个服务。
我在配置完后,由于之前已经启动了这两个,结果我一直启动,都说已启动,结果还是报错,我直接把电脑重启了,再打开上面两个监听,ok了,原来是一定要重新启动ntslistener,当然,可以先停止,再启动,不用像我这样用最愚蠢的办法。也可以用lsnrctl start来启动监听。
附一些常用命令
cmd->sqlplus /nolog->conn / as sysdba连接到数据库