jdbc连接数据库使用sid和service_name的区别

转载 2016年08月26日 10:06:45
最近使用jdbc连接oracle时报错: 
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: 
10.12.162.84:1521:xxxx 

登陆oracle数据发现在network/admin/文件夹下的tnsnames.ora中配置的是:SERVICE_NAME =xxxx。经过查询发现,是jdbc中的连接串使用的不正确。Java JDBC Thin Driver 连接 Oracle有三种方法,如下: 

格式一: Oracle JDBC Thin using a ServiceName: 
jdbc:oracle:thin:@//<host>:<port>/<service_name> 
Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE 
注意这里的格式,@后面有//, 这是与使用SID的主要区别。 
这种格式是Oracle 推荐的格式,因为对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。 

格式二: Oracle JDBC Thin using an SID: 
jdbc:oracle:thin:@<host>:<port>:<SID> 
Example: jdbc:oracle:thin:@192.168.2.1:1521:X01A 
Note: 
Support for SID is being phased out. Oracle recommends that users switch over to usingservice names. 

格式三:Oracle JDBC Thin using a TNSName: 
jdbc:oracle:thin:@<TNSName> 
Example: jdbc:oracle:thin:@GL 
Note: 
Support for TNSNames was added in the driver release 10.2.0.1 

linux下查询sid的方法: 
在配置oracle环境变量的情况可以使用 echo $ORACLE_SID,如果没有可以使用ps -ef |grep oracle 来查询: 
oracle    2548     1  0 Aug17 ?        00:00:00 ora_pmon_xxxx 
后面的xxxx就是对应的sid。 

在windows环境下,oracle是以后台服务的方式被管理的,所以看"控制面板->管理工具->服务 里面的名称:"OracleServiceORCL",则ORCL就是sid; 

service_name 和sid的区别: 
Service_name:该参数是由oracle8i引进的。在8i以前,使用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样 
sid是数据库实例的名字,每个实例各不相同。 

相关文章推荐

jdbc连接数据库使用sid和service_name的区别

最近使用jdbc连接oracle时报错: ORA-12505, TNS:listener does not currently know of SID given in connect descri...

jdbc连接数据库使用sid和service_name的区别

 最近使用jdbc连接oracle时报错: ORA-12505, TNS:listener does not currently know of SID given in connect d...

jdbc连接数据库使用sid和service_name的区别 ?

问题描述: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connec...

jdbc sid 与 service name 使用方法及区别

最近使用jdbc连接oracle时报错:  ORA-12505, TNS:listener does not currently know of SID given in connect descri...

jdbc连接数据使用sid与server_name的区别

Java JDBC Thin Driver 连接 Oracle有三种方法 格式一: Oracle JDBC Thin using a ServiceName: jdbc:oracle:thin:@/...
  • yaksok
  • yaksok
  • 2016年08月05日 16:15
  • 786

ORACLE中SID和SERVICE_NAME的区别

在讲解SID和SERVICE_NAME之前,先说一下实例。实例是操作系统中访问数据库所需要的一系列的进程和内存的集合。没有任何数据文件,实例也可以启动。但是要想访问数据库,必须把数据库文件加载进实例中...

Oracle 实例名/服务名(SID/Service_Name)的区别

转载原因:六月份在给客户部署项目的过程中,客户那边的数据库有专门的团队负责维护,维护人员给了我数据库连接地址、用户名和密码,让我远程连接数据库进行操作。问题出在了连接地址上,维护人员给地址是是:IP:...

Oracle 中的service_name,sid的作用和区别

在init.ora中有db_name,instance_name,service_name 在操作系统中需要配置oracle_sid 在listener.ora中有SID_NAME,GLOBAL_...

ORACLE中SID和SERVICE_NAME的区别

先来讲一个小故事,2015年6月份,有个客户迁移了数据库,由单实例数据库变成了RAC。JAVA应用程序出现了无法连接数据库的情况,但是PL/SQL能连接上数据库。由于项目比较庞大,虽然在半夜切换的,但...
  • zjliwhf
  • zjliwhf
  • 2016年11月28日 14:46
  • 173

Service Name和SID的区别

数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)  在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(ins...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jdbc连接数据库使用sid和service_name的区别
举报原因:
原因补充:

(最多只允许输入30个字)