使用plsql连接本地的oracle显示TNS: no listener
问题如图:使用plsql连接本地的oracle库,出现 TNS: no listener 错误。原因listener服务没启动
在运行中输入services.msc,打开win7系统上的服务面板,看到本地数据库的listener服务没启动。
手动启动tnslistener服务(该服务要想能启动,必须在系统变量中设置ORACLE_HOME变量,并指向oracle服务端的路径)。再用tnsping orcl,发现正常了。
在系统变量中添加TNS_ADMIN变量,目的是为了指定使用哪个路径下的配置文件(数据源文件),如果想要使用客户端下的数据源文件,路径为%oracle客户端安装路径%\NETWORK\ADMIN,如:F:\app\bin\product\11.2.0\instantclient_11_2\NETWORK\ADMIN
如果在CMD下输入tnsping出现命令未找到,那就是系统变量path里面并没有oracle服务端的bin路径。
因为没设置成自动启动,再启动TNSListener后,用PLSQL连接,出现了
ORA-12514: TNS:listener does not currently know of service requested in connect descripter
在oracle的服务端路径下对listener.ora添加以下内容:(参考http://blog.itpub.net/22741583/viewspace-684149/)
再把oracle相关的服务重启了遍,这时出现了以下的错误
在CMD下输入
lsnrctl status
监听已经启动了,进入cmd,输入
> sqlplus /nolog
SQL> connect sys/Oracle11g as sysdba (采用系统dba用户登录,Oracle11g是安装的时候创建的密码)
SQL> startup
出现错误:
ORA-00119和ORA-00132。附图:(后面的启动成功是修改了pfile文件的路径)
参考:http://blog.****.net/xb12369/article/details/26720275,知道是oracle的实例没有启动导致的。
说修改init.ora文件(其实就是pfile,用来启动oracle的)就可以了。定位到init.ora.9212015175959(每个人的数字都不一样)。
我的路径是这个:(不同版本的路径不一样)
用文本编辑器打开,并修改里面的local_listener=的值
然后回到CMD下,按照上面的命令,启动oracle实例,就可以用plsql连接数据库了。
上面的连接说还可以复制pfile到spfile也能解决,没尝试过。命令如下:
SQL> create spfile from pfile='%pfile文件的路径%'
SQL> startup