我们有一个本地运行的应用程序,我们遇到了以下错误:
ORA-12514: TNS:监听器当前不知道所请求的服务
在连接描述符中
我已经使用正确解决的tnspring测试了连接
我尝试使用SQLPlus进行连接,但失败了,出现了与上面相同的错误。我在SQLPlus中使用了以下语法:
sqlplus username/password@addressname[or host name]
我们已核实:
服务器上的TNS Listener正在运行。
服务器上的Oracle本身正在运行。
我们不知道这个环境发生了什么变化。
还有什么可以测试的吗?
在我的情况下,错误是由于监听器没有注册db的服务。我通过注册服务解决了这个问题。例子:
我在tnsnames.ora中的描述符:
LOCALDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = LOCALDB)
)
)
因此,我继续在侦听器中注册服务。奥拉手动:
SID_LIST_LISTENER =
(SID_DESC =
(GLOBAL_DBNAME = LOCALDB)
(ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
(SID_NAME = LOCALDB)
)
最后,通过命令重新启动监听器:
> lsnrctl stop
> lsnrctl start
完成了!
问题可能在于不正确的URL。
例如,我正在使用Oracle数据库(在VM内部)与Spring框架,并有这个问题。
在我的申请中。属性文件:
spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/orcl12c
但是db版本是不同的:
spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/orclcdb
正确的URL可以在tnsnames中找到。ora文件(这个文件可以在Oracle服务器上找到,所以如果你使用VM,你应该在你的主机VM中寻找这个文件)。
例如,在VirtualBox中查看Oracle文件的命令是:
nano /u01/app/oracle/product/version/db_1/network/admin/tnsnames.ora