JDBC连接Oracle报错:ORA-12505,TNS:监听器当前不知道连接描述符中给出的SID
ORA-12505,TNS:listener does not currently know of SID given in connect descriptor
1、首先区分下SID和服务名
SID:一个数据库可以有多个Oracle实例(Oracle Instance),SID用以标识每个Oracle实例的名称,可以类比为公司部门下的某为员工的名字
service_name:Oracle数据库对外宣称的名称,PL/SQL连接数据库时需要在连接客户端处写上service_name,可以类比为公司的部门名称
2、JDBC连接Oracle有两种方式
- 通过SID连接,SID为JFZL
db.url=jdbc:oracle:thin:@192.168.8.***:1521:JZFL
- 通过服务名连接,service_name为ADMIN
db.url=jdbc:oracle:thin:@192.168.8.***:1521/ADMIN
3、SID和服务名的获取方法
/*SID*/
select INSTANCE_NAME from v$instance;
/*service_name*/
select name from v$database;
4、:后接的是SID、/ 后接的是service_name,正确填写查询到的内容即可。