起因是这样的:我是在虚拟机上安装的Oracle,然后每次通过本机的dbeaver去连,刚开始连的时候没问题,过了两天之后,就出现了:
Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
监听器监听不到服务,我以为是监听器的问题,就去看 C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 目录下的 listener.ora 文件
将里面的host配置成虚拟机计算机名,或者IP地址也行
结果还是报ORA-12514这样的错,后来我就在虚拟机上登录登录Oracle,发现居然登不上去,一直让我输入用户名和密码,然后还报这样的错:ORA-01034: ORACLE not available ORA-27101:shared memory realm does not exist
原来问题在这里,而不是ORA-12514
解决办法:
打开 C:\oracle\product\10.2.0\admin\orcl\pfile 目录下的 init.ora.816202319487 文件
找到local_listener,如果没有,就自己加
打开 C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 目录下的 tnsnames.ora 文件,找到红框这一行数据:ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.10)(PORT = 1521)
赋值粘贴到 local_listener 中:
local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))"
最后在dos窗口中执行命令:
-->sqlplus sys/system as sysdba
-->startup pfile='C:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.816202319487'
注:C:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.816202319487
就是 init.ora.816202319487 文件的全路径
打印出“数据库装载完毕,数据库已经打开”,这个时候再在虚拟机上登录oracle就能成功了,在本机的dbeaver上也能登录成功
问题解决