http://java-xp.iteye.com/blog/1639607
——————————————————————————————————————————————————————
Recently using JDBC to connect to Oracle times error:
ORA-12505, Tns:listener does not currently know of SID given in Connect descriptor the Connection descriptor used by the C Lient was:
10.12.162.84:1521:xxxx
Logging in to Oracle Data discovery is configured in Tnsnames.ora under the network/admin/folder: Service_Name =xxxx. The query found that the connection string in JDBC was not used correctly. Java JDBC Thin Driver connects Oracle in three ways, as follows:
Format one: Oracle JDBC Thin using a ServiceName:
Jdbc:oracle:thin:@//Example:jdbc:oracle:thin:@//192.168.2.1:1521/xe
Note The format here, which is followed by//, which is the main difference from using SIDS.
This format is recommended by Oracle because the SID for each node is different for the cluster, but the service_name can contain all nodes.
Format two: Oracle JDBC Thin using an SID:
Jdbc:oracle:thin:@example:jdbc:oracle:thin:@192.168.2.1:1521:x01a
Note:
The support for SID is being phased out. Oracle recommends this users switch over to Usingservice names.
Format three: Oracle JDBC Thin using a tnsname:
Jdbc:oracle:thin:@<tnsname>
Example:jdbc:oracle:thin: @GL
Note:
Support for TNSNames is added in the driver release 10.2.0.1
How to query SIDs under Linux:
In the case of configuring an Oracle environment variable, you can use the Echo $ORACLE _sid if you are not able to query using PS-EF |grep Oracle:
Oracle 2548 1 0 Aug17? 00:00:00 ora_pmon_xxxx
The following xxxx is the corresponding SID.
In the Windows environment, Oracle is managed as a background service, so look at the name: "ORACLESERVICEORCL" in the service, management tools, Control Panel, then ORCL is SID;
The difference between service_name and SID:
SERVICE_NAME: This parameter was introduced by Oracle8i. Before 8i, a SID was used to represent an instance of the identity database, but in Oracle's parallel environment, a database corresponds to multiple instances, which requires multiple network service names and is cumbersome to set up. In order to facilitate the setting in the parallel environment, the SERVICE_NAME parameter is introduced, which corresponds to a database, not an instance, and there are many other benefits to this parameter. The default value for this parameter is db_name. Db_domain is equal to Global_name. A database can correspond to multiple service_name for a more flexible configuration. This parameter is not directly related to the SID, that is, the service name must be the same as the SID
The SID is the name of the DB instance, and each instance is different.
The JDBC Connection database uses the difference between SID and Service_Name