How to Connect to Oracle via JDBC

Oracle provides drivers that enable users to make JDBC connections to Oracle databases. The two most common methods of connecting to Oracle databases via JDBC are the Oracle Thin JDBC driver and the Oracle OCI JDBC driver.

The Oracle Thin driver requires no software other than the driver jar file. This driver connects to Oracle databases via TCP/IP.

The Oracle OCI (Oracle Call Interface) driver requires Oracle client software to be installed on the user's machine in order to connect to the database. This driver uses native methods and is platform specific.

The Java classes to connect to Oracle are contained in the Oracle JDBC driver jar file. For recent releases, these are numbered based on the Java version they are compiled for, such as ojdbc14.jar (for Java 1.4), ojdbc15.jar (for Java 1.5), etc. These drivers can be freely downloaded from Oracle's site (free registration is required).

You can tell the Oracle driver which method you wish to use to connect to the database (OCI or Thin) via the JDBC connection URL. Listed below are some example connection URL formats:

 

Oracle JDBC Thin Driver Formats


Oracle JDBC Thin using a Service Name:

jdbc:oracle:thin:@//<host>:<port>/<service_name>

Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE


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 using service 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

 

Oracle JDBC OCI Driver Format


jdbc:oracle:oci:@<database_name>

Example: jdbc:oracle:oci:@HR

The Oracle JDBC driver provides properties that can be specified when connecting to the database. Listed below are some examples of these properties.

To specify properties in the JDBC connection, you can use a Java Properties object, and pass that object into the JDBC getConnection method. For example:

java.util.Properties info = new java.util.Properties();
info.put("internal_logon", "sysdba");
Connection conn = DriverManager.getConnection (url, info);

 

Connection Properties

internal_logon: Use this property to connect as a sysoper or sysdba role. When using this property, the user and password properties must be included in the properties object. For example:

Properties props = new Properties();
props.put("user", "scott");
props.put("password", "tiger");
props.put("internal_logon", "sysoper");
Connection conn = DriverManager.getConnection (url, props);

defaultRowPrefetch: Oracle JDBC drivers allow you to set the number of rows to prefetch from the server while the result set is being populated during a query. Prefetching row data into the client reduces the number of round trips to the server. A typical value for this property is 10.

defaultBatchValue: Oracle JDBC drivers allow you to accumulate inserts and updates of prepared statements and send them to the server in batches once it reaches a specified batch value. This feature reduces round trips to the server. Use the value 1 if you don't want to use this feature.

processEscapes: "false" to disable escape processing for statements (Statement or PreparedStatement) created from this connection. Set this to "false" if you want to avoid many calls to Statement.setEscapeProcessing(false);. This is espcially usefull for PreparedStatement where a call to setEscapeProcessing(false) would have no effect. The default is "true".