`

oracle - jdbc连接oracle时sid和server_name区别

 
阅读更多

最近使用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是数据库实例的名字,每个实例各不相同。

http://java-xp.iteye.com/blog/1639607

分享到:
评论

相关推荐

    oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时客户端; 1.2 使用rpm -ivh [包名] 进行安装, 如:rpm -ivh oracle-instantclient11.2-basic-11.2....

    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm sqlplus安装包集合

    (SERVICE_NAME = *SID*) ) ) 1.5 配置环境变量 #vim ~/.bashrc --根目录下为全局使用,为限制用户权限,可只修改某一用户的环境变量 export ORACLE_HOME=/usr/lib/oracle/11.2/client64 export TNS_ADMIN=$...

    oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时客户端; 1.2 使用rpm -ivh [包名] 进行安装, 如:rpm -ivh oracle-instantclient11.2-basic-11.2....

    JDBC连接orcal,sql_server_,mysql_数据库字符串资料总结

    除了上述提到的Oracle、SQL Server和MySQL之外,还有很多其他的数据库管理系统也支持JDBC连接,下面简单列举几个: 1. **DB2数据库**: ```java Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); String url = ...

    可用于oracle19c的jdbc驱动

    - **连接字符串**:连接Oracle 19c数据库时,需要一个包含服务器地址、端口、服务名或SID的URL。例如:"jdbc:oracle:thin:@//hostname:port/service_name"。 - **认证信息**:驱动还需要数据库用户名和密码来建立...

    Oracle JDBC连接字符串

    连接Oracle数据库时,需要正确配置JDBC连接字符串以及其他相关信息。下面是对给定示例中的关键部分进行的详细解析: 1. **加载驱动** ```java String driver = "oracle.jdbc.driver.OracleDriver"; Class.for...

    jdbc连接oracle三种方式

    在测试JDBC连接时,需要确保Oracle监听器(Listener)和相关配置文件(如listener.ora和tnsnames.ora)设置正确。例如: 在`listener.ora`中,配置如下: ```text SID_LIST_LISTENER = (SID_LIST = (SID_DESC =...

    JDBC连接Oracle时出现驱动能加载无法连接到数据库问题

    JDBC连接数据库时候,需要使用数据库的sid_name,而不是数据库的service_name,而使用plsql连接数据库的时候,只需要数据库的service_name

    oracle JDBC连接jar文件

    Oracle JDBC(Java Database Connectivity)是Oracle公司提供的Java应用程序与Oracle数据库之间进行通信的接口。它遵循JDBC标准,使得开发者可以使用Java语言编写数据库应用程序,适用于Oracle 10g、11g以及更高版本...

    用jdbc测试oracle连接

    在Java编程环境中,Oracle数据库是...总的来说,通过JDBC与Oracle数据库交互涉及多个步骤,包括加载驱动、建立连接、执行SQL和关闭资源。正确设置这些步骤,你的Java应用程序就能成功地与Oracle数据库进行测试连接。

    常用_JDBC_驱动名字和_URL_列表

    连接字符串为`jdbc:oracle:thin:@&lt;host&gt;:&lt;port&gt;:&lt;service_name&gt;`,其中`&lt;service_name&gt;`对应于Oracle服务名或SID。 ### Sybase Sybase数据库曾是企业级应用的首选之一。JDBC驱动`jconn2.jar`用于连接Sybase数据库...

    JDBC 连接 各种数据库

    在上述内容中,列举了使用JDBC连接不同数据库的方式,包括Oracle、DB2、SQL Server、Sybase、Informix、MySQL和PostgreSQL。 1. **Oracle数据库**: - JDBC驱动类:`oracle.jdbc.driver.OracleDriver` - URL模板...

    java jdbc连接Oracle的小例子

    URL(Uniform Resource Locator)参数需要根据你的Oracle实例进行调整,包括主机名、端口号和服务名(SID或服务名,这里使用的是服务名"ORCL")。 连接成功后,你可以执行SQL查询、插入、更新或删除操作。在完成...

    JDBC连接各种数据库字符串大全

    在Java中使用JDBC连接Oracle数据库时,通常采用的是thin模式。这种方式直接通过JDBC驱动与Oracle数据库进行交互,不需要额外的中间层软件。 **示例代码:** ```java Class.forName("oracle.jdbc.driver.Oracle...

    JDBC连接字符串.doc

    每个数据库驱动都有其特定的URL格式,例如,`jdbc:mysql:`前缀表示连接到MySQL,而`jdbc:sqlserver:`表示连接到SQL Server。`jdbc:oracle:thin:`是Oracle数据库的“瘦”驱动,它不依赖本地Oracle客户端库。 在实际...

    java-connect-oracle.zip_java 连接oracle_oracle_oracle connect java

    在Java编程中,连接Oracle数据库是一项基础且重要的任务。...总的来说,Java连接Oracle数据库主要依赖于JDBC驱动和正确的连接信息。通过理解这些基本概念和步骤,开发者可以轻松地在Java应用中集成Oracle数据库功能。

    kettle连接oracle所需jar包

    Kettle连接Oracle时,主要依赖的是Oracle的JDBC驱动,通常称为ojdbc.jar。这个驱动程序包含在Oracle的客户端软件中,或者可以直接从Oracle官方网站下载单独的JDBC驱动包。 2. **JAR文件的种类**: - ojdbc6.jar:...

    jdbc连接oracle9.2

    总结,通过JDBC连接Oracle 9.2数据库主要涉及加载JDBC驱动、建立连接、执行SQL和处理结果集等步骤。在实际开发中,可能还需要考虑连接池管理、事务控制、异常处理等高级特性。理解这些基本概念对于任何Java开发者来...

    如何连接MySQL-Oracle数据库

    本文将详细介绍如何通过Java Database Connectivity (JDBC) 连接 MySQL 和 Oracle 数据库的方法。 #### JDBC 的基本概念 JDBC(Java Database Connectivity)是一种用于执行 SQL 语句的 Java API,可以为多种关系...

Global site tag (gtag.js) - Google Analytics