Package oracle.jdbc.datasource.impl

## Class OracleDataSource

- java.lang.Object
- - oracle.jdbc.datasource.impl.OracleDataSource

All Implemented Interfaces:
  `Serializable`, `Wrapper`, `Referenceable`, `CommonDataSource`, `DataSource`, `OracleCommonDataSource`, `OracleDataSource`, `oracle.jdbc.internal.Monitor`, `oracle.jdbc.replay.internal.OracleDataSource`, `OracleDataSource`

Direct Known Subclasses:
  `OracleConnectionPoolDataSource`, `OracleDataSource`, `OracleDataSourceImpl`

    public class OracleDataSource
    extends Object
    implements OracleDataSource, oracle.jdbc.replay.internal.OracleDataSource, Serializable, Referenceable, oracle.jdbc.internal.Monitor

A `DataSource` object is a factory for `Connection` objects. An object that implements the `DataSource` interface will typically be registered with a JNDI service provider. A JDBC driver that is accessed via the `DataSource` API does not automatically register itself with the `DriverManager`.

This data Source supports Application Continuity (AC) and transparent JDBC operation replay upon a failover. To disable such feature, set `"oracle.jdbc.enableACSupport"` to false either as a Java system property, or as a connection property on this data source.

The following example illustrates the use of this data source to create a JDBC connection:

        oracle.jdbc.datasource.OracleDataSource ods =
          new oracle.jdbc.datasource.impl.OracleDataSource();
        ods.setURL("jdbc:oracle:thin:@//dbhost:dbport/dbservice");
        ods.setUser("User");
        ods.setPassword("Passwd");
        ods.setConnectionProperty("connProp1", "value1");
        ods.setConnectionProperty("connProp2", "value2");

        Connection conn = ods.getConnection();

The following example illustrates the use of a connection obtained from this data source for Application Continuity protection:

        oracle.jdbc.OracleConnection conn =
          (oracle.jdbc.OracleConnection) ods.getConnection();
        conn.beginRequest();
        ...... // JDBC calls protected by AC
        conn.endRequest();

Since:
  20c
See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from interface oracle.jdbc.internal.Monitor

`oracle.jdbc.internal.Monitor.CloseableLock, oracle.jdbc.internal.Monitor.WaitableMonitor`

### Field Summary

Fields
`protected static String` `CHECKSUM_PROPERTY`
`protected String` `clientChecksum11203x`
`protected String` `clientChecksum12x`
`protected Properties` `connectionProperties`
`protected String` `databaseName`
`protected String` `dataSourceName`
`protected static String` `DEFAULT_SERVICE_NAME`
`protected String` `description`
`protected AtomicBoolean` `doneDumpOnMemoryPressure`
`protected oracle.jdbc.driver.OracleDriver` `driver`
`protected String` `driverType`
`protected static String` `ENABLE_AC_SUPPORT_PROPERTY`
`protected boolean` `explicitCachingEnabled`
`protected boolean` `explicitCachingEnabledSet`
`protected static int` `FAILOVER_RESTORE_AUTO`
`protected static int` `FAILOVER_RESTORE_LEVEL1`
`protected static int` `FAILOVER_RESTORE_LEVEL2`
`protected static int` `FAILOVER_RESTORE_NONE`
`protected static String` `FAILOVER_RESTORE_PROPERTY`
`protected static int` `FAILOVER_TYPE_AUTO`
`protected static String` `FAILOVER_TYPE_PROPERTY`
`protected static int` `FAILOVER_TYPE_TRANSACTION`
`protected static String` `IGNORE_AC_CONTEXT_PROPERTY`
`protected boolean` `implicitCachingEnabled`
`protected boolean` `implicitCachingEnabledSet`
`protected static String` `INITIATION_TIMEOUT_PROPERTY`
`protected boolean` `isAutoACEnabled`
`protected AtomicBoolean` `isFirstConnection`
`boolean` `isOracleDataSource`
`protected boolean` `isReplayInDynamicMode`
`protected boolean` `isStateRestorationAuto`
`protected boolean` `isTransactionReplayEnabled`
`protected int` `loginTimeout`
`protected PrintWriter` `logWriter`
`protected int` `maxStatements`
`protected boolean` `maxStatementsSet`
`protected String` `networkProtocol`
`protected oracle.jdbc.internal.OpaqueString` `password`
`protected int` `portNumber`
`protected static String` `RECONNECT_DELAY_PROPERTY`
`protected static String` `RECONNECT_RETRIES_PROPERTY`
`protected int` `reconnectDelay`
`protected int` `reconnectRetries`
`protected int` `replayInitiationTimeout`
`protected static String` `REQUEST_SIZE_LIMIT_PROPERTY`
`protected String` `serverName`
`protected String` `serviceName`
`protected static int` `SESSION_STATE_CONSISTENCY_STATIC`
`protected static String` `SESSION_STATE_PROPERTY`
`protected oracle.jdbc.replay.internal.ReplayableConnection.StateRestorationType` `stateRestorationType`
`protected String` `tnsEntry`
`static boolean` `TRACE`
`protected String` `url`
`protected String` `user`

### Fields inherited from interface oracle.jdbc.replay.OracleDataSource

`CONNECTION_PROPERTIES, DATA_SOURCE_NAME, DATABASE_NAME, DESCRIPTION, EXPLICIT_CACHING_ENABLED, IMPLICIT_CACHING_ENABLED, MAX_STATEMENTS, NETWORK_PROTOCOL, PASSWORD, PORT_NUMBER, ROLE_NAME, SERVER_NAME, URL, USER`

### Constructor Summary

Constructors
`OracleDataSource()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`protected void` `addRefProperties​(Reference ref)`
`static void` `cleanup()`
`void` `clearDoneDumpOnMemoryPressure()`
`void` `clearReplayStatistics()` Clears replay statistics accumulated so far on all connection created by this data source.
`OracleConnectionBuilderImpl` `createConnectionBuilder()` Creates a new instance
`protected void` `debug​(Logger logger, Level level, Executable method, String msg)` AC specifc
`protected Connection` `enableACAndProxifyIfNecessary​(Connection conn, OracleConnectionBuilderImpl connBuilder)`
`Connection` `getConnection()` Attempt to establish a database connection.
`Connection` `getConnection​(String user, String password)` Attempt to establish a database connection.
`protected Connection` `getConnection​(String _user, oracle.jdbc.internal.OpaqueString _passwd)` Attempt to establish a database connection.
`protected Connection` `getConnection​(OracleConnectionBuilderImpl builder)` Attempt to establish a database connection.
`protected oracle.jdbc.internal.OracleConnection` `getConnectionDuringExceptionHandling()`
`oracle.jdbc.replay.internal.ConnectionInitializationCallback` `getConnectionInitializationCallback()` Obtains the registered connection initialization callback, if any.
`Connection` `getConnectionNoProxy​(OracleConnectionBuilderImpl connBuilder)`
`Properties` `getConnectionProperties()` Gets the connection properties that are set on this data source object.
`String` `getConnectionProperty​(String propertyName)` Gets the specified connection property that is set on this data source.
`String` `getDatabaseName()` Get the name of the database set on this DataSource instance.
`String` `getDataSourceName()` Get the datasource name for this instance if set.
`String` `getDescription()` Get the Desciption of this data source.
`String` `getDriverType()` Get the Oracle JDBC driver type set for this datasource instance
`boolean` `getExplicitCachingEnabled()` getExplicitCachingEnabled Returns the current value of the explicitCachingEnabled property.
`boolean` `getImplicitCachingEnabled()` getImplicitCachingEnabled Returns the current value of the implicitCachingEnabled property.
`int` `getLoginTimeout()` Gets the maximum time in seconds that this data source can wait while attempting to connect to a database.
`PrintWriter` `getLogWriter()` Get the log writer for this data source.
`int` `getMaxStatements()` getMaxStatements Returns the current value of the maxStatements property.
`oracle.jdbc.internal.Monitor.CloseableLock` `getMonitorLock()`
`String` `getNetworkProtocol()` Get the network protocol set.
`Logger` `getParentLogger()`
`protected oracle.jdbc.internal.OpaqueString` `getPassword()`
`protected Connection` `getPhysicalConnection​(Properties prop, oracle.jdbc.internal.AbstractConnectionBuilder builder)` Get a connection to the database specified by this datasource.
`int` `getPortNumber()` Get the port number on which server is listening for requests.
`oracle.jdbc.proxy.ProxyFactory` `getProxyFactory()`
`Reference` `getReference()`
`ReplayStatistics` `getReplayStatistics()` Obtains replay statistics accumulated so far.
`String` `getReplayStatisticsString()`
`int` `getRequestSizeLimit()`
`String` `getRoleName()` Gets the datasource role name.
`String` `getServerName()` Get the name of the server on which database is running.
`String` `getServiceName()` Get the service_name To distinguish services from instances, a new URL using service_name is added, existing url with SID will be supported, but deprecated.
`protected static String` `getSystemProperty​(String property, String defaultValue)`
`String` `getTNSEntryName()` Get the TNS entry name for this instance if set.
`String` `getURL()` Get the URL for this datasource.
`String` `getUser()` Get the user name for this datasource.
`boolean` `isWrapperFor​(Class<?> iface)` Since this class is not a wrapper, just check to see if this implements the requested interface.
`protected void` `makeURL()`
`void` `registerConnectionInitializationCallback​(oracle.jdbc.replay.internal.ConnectionInitializationCallback cbk)` Registers a ConnectionInitializationCallback with the data source.
`static void` `registerMBean()`
`void` `setConnectionProperties​(Properties properties)` Sets the Connection Properties for the datasource
`void` `setConnectionProperty​(String name, String value)` Sets a connection property on the data source.
`void` `setDatabaseName​(String dbname)` Set the name of a particular database on a server.
`void` `setDataSourceName​(String dsname)` Set the DataSourceName.
`void` `setDescription​(String des)` Set the Desciption for this data source instance.
`void` `setDriverType​(String dt)` Set the JDBC driver type.
`void` `setExplicitCachingEnabled​(boolean cache)` setExplicitCachingEnabled Sets the value of the explicitCachingEnabled property, which enables or disables the explicit cache.
`void` `setHostnameResolver​(OracleHostnameResolver hostnameResolver)` Sets a custom hostname resolver implementing `OracleHostnameResolver` used to provide a custom DNS name resolution strategy to locate the database host.
`void` `setImplicitCachingEnabled​(boolean cache)` setImplicitCachingEnabled Sets the value of the implicitCachingEnabled property, which enables or disables the implicit cache.
`void` `setLoginTimeout​(int timeout)` Sets the maximum time in seconds that this data source will wait while attempting to connect to a database.
`void` `setLogWriter​(PrintWriter pw)` Set the log writer for this data source.
`void` `setMaxStatements​(int max)` Deprecated.
`void` `setNetworkProtocol​(String np)` Set the network protocol for the connections.
`void` `setPassword​(String pd)` Set the password with which connections have to be obtained.
`void` `setPortNumber​(int pn)` Set the port number where a server is listening for requests.
`void` `setRoleName​(String roleName)` Sets the datasource role name.
`void` `setServerName​(String sn)` Set the name of the Server on which database is running.
`void` `setServiceName​(String svcname)` Set the service_name of a database on a server.
`void` `setSingleShardTransactionSupport​(boolean allow)` Sets single shard transaction support in auto commit OFF mode.
`void` `setSSLContext​(SSLContext sslContext)` Specifies a `SSLContext` to use as a factory for SSLEngine objects that carry out the TLS protocol.
`void` `setTNSEntryName​(String dbname)` Set the TNS entry name.
`void` `setTokenSupplier​(java.util.function.Supplier<? extends AccessToken> tokenSupplier)` Sets a supplier function that generates an access token when creating a connection with this `DataSource`.
`protected void` `setupACSpecificProperties​(boolean useProxy)`
`void` `setURL​(String url)` Set the URL from which connections have to be obtained.
`void` `setUser​(String userName)` Set the user name with which connections have to be obtained.
`protected void` `trace​(String s)`
`void` `unregisterConnectionInitializationCallback​(oracle.jdbc.replay.internal.ConnectionInitializationCallback cbk)` Removes the ConnectionInitializationCallback registered with the data source, if any.
`static void` `unregisterMBean()`
`<T> T` `unwrap​(Class<T> iface)` Since this class is not a wrapper, just check to see if this implements the requested interface.
`void` `updateReplayStatistics​(oracle.jdbc.replay.internal.ReplayStatistics newStats)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface oracle.jdbc.internal.Monitor

`acquireCloseableLock, acquireLock, newDefaultLock, releaseLock`

### Methods inherited from interface oracle.jdbc.datasource.OracleCommonDataSource

`createShardingKeyBuilder`

### Field Detail

#### DEFAULT_SERVICE_NAME

    protected static final String DEFAULT_SERVICE_NAME

See Also:
  Constant Field Values

#### logWriter

    protected PrintWriter logWriter

#### loginTimeout

    protected int loginTimeout

#### databaseName

    protected String databaseName

#### serviceName

    protected String serviceName

#### dataSourceName

    protected String dataSourceName

#### description

    protected String description

#### networkProtocol

    protected String networkProtocol

#### portNumber

    protected int portNumber

#### user

    protected String user

#### password

    protected oracle.jdbc.internal.OpaqueString password

#### serverName

    protected String serverName

#### url

    protected String url

#### driverType

    protected String driverType

#### tnsEntry

    protected String tnsEntry

#### maxStatements

    protected int maxStatements

#### implicitCachingEnabled

    protected boolean implicitCachingEnabled

#### explicitCachingEnabled

    protected boolean explicitCachingEnabled

#### maxStatementsSet

    protected boolean maxStatementsSet

#### implicitCachingEnabledSet

    protected boolean implicitCachingEnabledSet

#### explicitCachingEnabledSet

    protected boolean explicitCachingEnabledSet

#### connectionProperties

    protected Properties connectionProperties

#### isOracleDataSource

    public boolean isOracleDataSource

#### driver

    protected transient oracle.jdbc.driver.OracleDriver driver

#### isFirstConnection

    protected AtomicBoolean isFirstConnection

#### RECONNECT_DELAY_PROPERTY

    protected static final String RECONNECT_DELAY_PROPERTY

See Also:
  Constant Field Values

#### RECONNECT_RETRIES_PROPERTY

    protected static final String RECONNECT_RETRIES_PROPERTY

See Also:
  Constant Field Values

#### reconnectDelay

    protected int reconnectDelay

#### reconnectRetries

    protected int reconnectRetries

#### FAILOVER_TYPE_PROPERTY

    protected static final String FAILOVER_TYPE_PROPERTY

See Also:
  Constant Field Values

#### FAILOVER_TYPE_TRANSACTION

    protected static final int FAILOVER_TYPE_TRANSACTION

See Also:
  Constant Field Values

#### SESSION_STATE_CONSISTENCY_STATIC

    protected static final int SESSION_STATE_CONSISTENCY_STATIC

See Also:
  Constant Field Values

#### FAILOVER_TYPE_AUTO

    protected static final int FAILOVER_TYPE_AUTO

See Also:
  Constant Field Values

#### isTransactionReplayEnabled

    protected boolean isTransactionReplayEnabled

#### isAutoACEnabled

    protected boolean isAutoACEnabled

#### SESSION_STATE_PROPERTY

    protected static final String SESSION_STATE_PROPERTY

See Also:
  Constant Field Values

#### isReplayInDynamicMode

    protected boolean isReplayInDynamicMode

#### FAILOVER_RESTORE_PROPERTY

    protected static final String FAILOVER_RESTORE_PROPERTY

See Also:
  Constant Field Values

#### FAILOVER_RESTORE_NONE

    protected static final int FAILOVER_RESTORE_NONE

See Also:
  Constant Field Values

#### FAILOVER_RESTORE_LEVEL1

    protected static final int FAILOVER_RESTORE_LEVEL1

See Also:
  Constant Field Values

#### FAILOVER_RESTORE_LEVEL2

    protected static final int FAILOVER_RESTORE_LEVEL2

See Also:
  Constant Field Values

#### FAILOVER_RESTORE_AUTO

    protected static final int FAILOVER_RESTORE_AUTO

See Also:
  Constant Field Values

#### stateRestorationType

    protected oracle.jdbc.replay.internal.ReplayableConnection.StateRestorationType stateRestorationType

#### isStateRestorationAuto

    protected boolean isStateRestorationAuto

#### INITIATION_TIMEOUT_PROPERTY

    protected static final String INITIATION_TIMEOUT_PROPERTY

See Also:
  Constant Field Values

#### replayInitiationTimeout

    protected int replayInitiationTimeout

#### CHECKSUM_PROPERTY

    protected static final String CHECKSUM_PROPERTY

See Also:
  Constant Field Values

#### clientChecksum12x

    protected final String clientChecksum12x

#### clientChecksum11203x

    protected final String clientChecksum11203x

#### IGNORE_AC_CONTEXT_PROPERTY

    protected static final String IGNORE_AC_CONTEXT_PROPERTY

See Also:
  Constant Field Values

#### ENABLE_AC_SUPPORT_PROPERTY

    protected static final String ENABLE_AC_SUPPORT_PROPERTY

See Also:
  Constant Field Values

#### REQUEST_SIZE_LIMIT_PROPERTY

    protected static final String REQUEST_SIZE_LIMIT_PROPERTY

See Also:
  Constant Field Values

#### doneDumpOnMemoryPressure

    protected AtomicBoolean doneDumpOnMemoryPressure

#### TRACE

    public static final boolean TRACE

See Also:
  Constant Field Values

### Constructor Detail

#### OracleDataSource

    public OracleDataSource()
                     throws SQLException

Throws:
  `SQLException`

### Method Detail

#### getConnection

    public Connection getConnection()
                             throws SQLException

Attempt to establish a database connection.

Specified by:
  `getConnection` in interface `DataSource`
Returns:
  a Connection to the database
Throws:
  `SQLException` - if a database-access error occurs.

#### getConnection

    public Connection getConnection​(String user,
                                    String password)
                             throws SQLException

Attempt to establish a database connection.

Specified by:
  `getConnection` in interface `DataSource`
Parameters:
  `user` - the database user on whose behalf the Connection is being made
  `password` - the user's password
Returns:
  a Connection to the database
Throws:
  `SQLException` - if a database-access error occurs.

#### getConnection

    protected Connection getConnection​(String _user,
                                       oracle.jdbc.internal.OpaqueString _passwd)
                                throws SQLException

Attempt to establish a database connection.

Parameters:
  `_user` - the database user on whose behalf the Connection is being made
  `_passwd` - the user's password
Returns:
  a Connection to the database
Throws:
  `SQLException` - if a database-access error occurs.

#### getConnection

    protected Connection getConnection​(OracleConnectionBuilderImpl builder)
                                throws SQLException

Attempt to establish a database connection.

Parameters:
  `builder` - Builder which has the required properties set for building the connection
Returns:
  a Connection to the database
Throws:
  `SQLException` - if a database-access error occurs.

#### getPhysicalConnection

    protected Connection getPhysicalConnection​(Properties prop,
                                               oracle.jdbc.internal.AbstractConnectionBuilder builder)
                                        throws SQLException

Get a connection to the database specified by this datasource.

Parameters:
  `prop` - Connection properties specified on this datasource.
  `builder` - The builder object used to create the connection. May be null if a builder was not used to create the connection.
Returns:
  A database connection
Throws:
  `SQLException`

#### getLoginTimeout

    public int getLoginTimeout()

Gets the maximum time in seconds that this data source can wait while attempting to connect to a database. A value of zero means that the timeout is the default system timeout if there is one; otherwise it means that there is no timeout. When a DataSource object is created the login timeout is initially zero.

Specified by:
  `getLoginTimeout` in interface `CommonDataSource`
Specified by:
  `getLoginTimeout` in interface `DataSource`
Returns:
  the data source login time limit
Throws:
  `SQLException` - if a database access error occurs.

#### setLoginTimeout

    public void setLoginTimeout​(int timeout)

Sets the maximum time in seconds that this data source will wait while attempting to connect to a database. A value of zero specifies that the timeout is the default system timeout if there is one; otherwise it specifies that there is no timeout. When a DataSource object is created the login timeout is initially zero.

Specified by:
  `setLoginTimeout` in interface `CommonDataSource`
Specified by:
  `setLoginTimeout` in interface `DataSource`
Parameters:
  `seconds` - the data source login time limit
Throws:
  `SQLException` - if a database access error occurs.

#### setLogWriter

    public void setLogWriter​(PrintWriter pw)

Set the log writer for this data source.

The log writer is a character output stream to which all logging and tracing messages for this data source object instance will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data source specific log writer are not printed to the log writer associated with the java.sql.Drivermanager class. When a DataSource object is created the log writer is initially null, in other words, logging is disabled.

Specified by:
  `setLogWriter` in interface `CommonDataSource`
Specified by:
  `setLogWriter` in interface `DataSource`
Parameters:
  `out` - the new log writer; to disable, set to null
Throws:
  `SQLException` - if a database-access error occurs.

#### getLogWriter

    public PrintWriter getLogWriter()

Get the log writer for this data source.

The log writer is a character output stream to which all logging and tracing messages for this data source object instance will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data source specific log writer are not printed to the log writer associated with the java.sql.Drivermanager class. When a DataSource object is created the log writer is initially null, in other words, logging is disabled.

Specified by:
  `getLogWriter` in interface `CommonDataSource`
Specified by:
  `getLogWriter` in interface `DataSource`
Returns:
  the log writer for this data source, null if disabled
Throws:
  `SQLException` - if a database-access error occurs.

#### setTNSEntryName

    public void setTNSEntryName​(String dbname)

Set the TNS entry name. Works only for JDBC OCI driver. Assumed that client side Oracle in installed and TNS_ADMIN env variable is set. If URL is set, this property will be ignored.

Parameters:
  `dbname` - tns entry name

#### getTNSEntryName

    public String getTNSEntryName()

Get the TNS entry name for this instance if set. Returns null if not set.

Returns:
  TNS entry name

#### setDataSourceName

    public void setDataSourceName​(String dsname)

Set the DataSourceName. Users need not set this as it will be set set automatically depending upon the instance created. Returns OracleDataSource for an OracleDataSource instance. Returns OracleXADataSource for an OracleXADataSource instance.

Specified by:
  `setDataSourceName` in interface `OracleCommonDataSource`
Parameters:
  `dsname` - DataSource Name to be set.

#### getDataSourceName

    public String getDataSourceName()

Get the datasource name for this instance if set. Returns null if not set.

Specified by:
  `getDataSourceName` in interface `OracleCommonDataSource`
Returns:
  DaraSource name

#### getDatabaseName

    public String getDatabaseName()

Get the name of the database set on this DataSource instance.

Specified by:
  `getDatabaseName` in interface `OracleCommonDataSource`
Returns:
  database name set on this instance or null if not set.

#### setDatabaseName

    public void setDatabaseName​(String dbname)

Set the name of a particular database on a server. In Oracle's jargon this is called SID (System Identifier).

If URL is set, this property will be ignored.

Specified by:
  `setDatabaseName` in interface `OracleCommonDataSource`
Parameters:
  `dsname` - database name to be set.

#### setServiceName

    public void setServiceName​(String svcname)

Set the service_name of a database on a server. If URL is set, this property will be ignored. To distinguish services from instances, a new URL using service_name is added, existing url with SID will be supported, but deprecated.

Parameters:
  `svcname` - service_name to be set.

#### getServiceName

    public String getServiceName()

Get the service_name To distinguish services from instances, a new URL using service_name is added, existing url with SID will be supported, but deprecated.

Returns:
  service_name assiciated with the instance or null if not set.

#### setServerName

    public void setServerName​(String sn)

Set the name of the Server on which database is running. If URL is set, this property will be ignored.

Specified by:
  `setServerName` in interface `OracleCommonDataSource`
Parameters:
  `sn` - server/host name to be set.

#### getServerName

    public String getServerName()

Get the name of the server on which database is running.

Specified by:
  `getServerName` in interface `OracleCommonDataSource`
Returns:
  server name set on this instance or null if not set.

#### setURL

    public void setURL​(String url)

Set the URL from which connections have to be obtained. If URL is set all other properties like databasename, servername, portNumber, network protocol, tnsentry, and driver Type will be ignored.

Specified by:
  `setURL` in interface `OracleCommonDataSource`
Parameters:
  `url` - URL to be set.

#### getURL

    public String getURL()
                  throws SQLException

Get the URL for this datasource. Will return the default value "jdbc:oracle:oci8:@" if not set before.

Specified by:
  `getURL` in interface `OracleCommonDataSource`
Throws:
  `SQLException`

#### setUser

    public void setUser​(String userName)

Set the user name with which connections have to be obtained.

Specified by:
  `setUser` in interface `OracleCommonDataSource`
Parameters:
  `user` - Username to be set.

#### getUser

    public String getUser()

Get the user name for this datasource. Will return the default value ("scott") if not set before.

Specified by:
  `getUser` in interface `OracleCommonDataSource`

#### setPassword

    public void setPassword​(String pd)

Set the password with which connections have to be obtained. The default value is "tiger".

Specified by:
  `setPassword` in interface `OracleCommonDataSource`
Parameters:
  `pd` - Passowrd to be set.

#### getPassword

    protected oracle.jdbc.internal.OpaqueString getPassword()

#### getDescription

    public String getDescription()

Get the Desciption of this data source.

Specified by:
  `getDescription` in interface `OracleCommonDataSource`
Returns:
  Description that was set or will return null if not set.

#### setDescription

    public void setDescription​(String des)

Set the Desciption for this data source instance.

Specified by:
  `setDescription` in interface `OracleCommonDataSource`
Parameters:
  `des` - Desciption to be set.

#### getDriverType

    public String getDriverType()

Get the Oracle JDBC driver type set for this datasource instance

Returns:
  Driver Type that was set or null if not set.

#### setDriverType

    public void setDriverType​(String dt)

Set the JDBC driver type. Possible values are thin, oci8, and kprb. If URL is set, this property will be ignored.

If set to kprb, nothing else is needed to open a connection. This is meant for Server side JDBC driver when running inside server.

If set to thin, serverName, portNumber and databaseName are need to open a connection.

If set to oci, and network protocol is set to IPC or TNSEntryName is set then nothing else is needed. If not, serverName, portNumber and databaseName have to be provided.

Parameters:
  `dt` - Driver Type tp be set.

#### getNetworkProtocol

    public String getNetworkProtocol()

Get the network protocol set.

Specified by:
  `getNetworkProtocol` in interface `OracleCommonDataSource`
Returns:
  network protocol that was set or null if not.

#### setNetworkProtocol

    public void setNetworkProtocol​(String np)
                            throws SQLException

Set the network protocol for the connections. Default is "tcp". Can be set to all possible protocols Net8 supports. Only needed for JDBC OCI driver.

Specified by:
  `setNetworkProtocol` in interface `OracleCommonDataSource`
Parameters:
  `np` - set the network protocol to be used.
Throws:
  `SQLException`

#### setPortNumber

    public void setPortNumber​(int pn)

Set the port number where a server is listening for requests. Not required when URL is set.

Specified by:
  `setPortNumber` in interface `OracleCommonDataSource`
Parameters:
  `pn` - port number on which server is listening

#### getPortNumber

    public int getPortNumber()

Get the port number on which server is listening for requests.

Specified by:
  `getPortNumber` in interface `OracleCommonDataSource`
Returns:
  port number if set or null if not set.

#### getReference

    public Reference getReference()
                           throws NamingException

Specified by:
  `getReference` in interface `Referenceable`
Throws:
  `NamingException`

#### addRefProperties

    protected void addRefProperties​(Reference ref)

#### makeURL

    protected void makeURL()
                    throws SQLException

Throws:
  `SQLException`

#### trace

    protected void trace​(String s)

#### setMaxStatements

    public void setMaxStatements​(int max)
                          throws SQLException

Deprecated.
setMaxStatements Specifies the value of the maxStatements property. This will be the size of the application cache (which will be used by both implicit and explicit caching). This value does not apply to the statement cache size of connections created by ImplicitStatementCache for which the cache size is set through java.util.Properties object.

Specified by:
  `setMaxStatements` in interface `OracleCommonDataSource`
Specified by:
  `setMaxStatements` in interface `OracleDataSource`
Parameters:
  `max` - Requested size of the cache. If the existing cache size is less than max, statements will be purged to reduce the size.
Throws:
  `SQLException` - if max < 0

#### getMaxStatements

    public int getMaxStatements()
                         throws SQLException

getMaxStatements Returns the current value of the maxStatements property.

Specified by:
  `getMaxStatements` in interface `OracleCommonDataSource`
Specified by:
  `getMaxStatements` in interface `OracleDataSource`
Throws:
  `SQLException`

#### setImplicitCachingEnabled

    public void setImplicitCachingEnabled​(boolean cache)
                                   throws SQLException

setImplicitCachingEnabled Sets the value of the implicitCachingEnabled property, which enables or disables the implicit cache. Note that this is independent of the cache size, set with setMaxStatements().

Specified by:
  `setImplicitCachingEnabled` in interface `OracleCommonDataSource`
Specified by:
  `setImplicitCachingEnabled` in interface `OracleDataSource`
Parameters:
  `cache` - If true, then implicit caching will be enabled. If false, then any existing statements will be purged and the implicit cache will be disabled.
Throws:
  `SQLException`

#### getImplicitCachingEnabled

    public boolean getImplicitCachingEnabled()
                                      throws SQLException

getImplicitCachingEnabled Returns the current value of the implicitCachingEnabled property.

Specified by:
  `getImplicitCachingEnabled` in interface `OracleCommonDataSource`
Specified by:
  `getImplicitCachingEnabled` in interface `OracleDataSource`
Throws:
  `SQLException`

#### setExplicitCachingEnabled

    public void setExplicitCachingEnabled​(boolean cache)
                                   throws SQLException

setExplicitCachingEnabled Sets the value of the explicitCachingEnabled property, which enables or disables the explicit cache. Note that this is independent of the cache size, set with setMaxStatements().

Specified by:
  `setExplicitCachingEnabled` in interface `OracleCommonDataSource`
Specified by:
  `setExplicitCachingEnabled` in interface `OracleDataSource`
Parameters:
  `cache` - If true, then explicit caching will be enabled. If false, then any existing statements will be purged and the explicit cache will be disabled.
Throws:
  `SQLException` - if called on a logical connection.

#### getExplicitCachingEnabled

    public boolean getExplicitCachingEnabled()
                                      throws SQLException

getExplicitCachingEnabled Returns the current value of the explicitCachingEnabled property.

Specified by:
  `getExplicitCachingEnabled` in interface `OracleCommonDataSource`
Specified by:
  `getExplicitCachingEnabled` in interface `OracleDataSource`
Throws:
  `SQLException`

#### setConnectionProperties

    public void setConnectionProperties​(Properties properties)
                                 throws SQLException

Sets the Connection Properties for the datasource

The argument to this method is a Properties object. This properties object is used to create the connections returned by the receiver. The keys and values are Strings. The keys, values, and their meanings are defined in oracle.jdbc.OracleConnection.

Specified by:
  `setConnectionProperties` in interface `OracleCommonDataSource`
Parameters:
  `properties` - a Properties object with the desired connection property names and values.
Throws:
  `SQLException`
See Also:
  `OracleConnection`

#### setRoleName

    public void setRoleName​(String roleName)
                     throws SQLException

Sets the datasource role name.

Specified by:
  `setRoleName` in interface `OracleCommonDataSource`
Specified by:
  `setRoleName` in interface `OracleDataSource`
Parameters:
  `roleName` - datasource role name to be set.
Throws:
  `SQLException`

#### getRoleName

    public String getRoleName()

Gets the datasource role name.

Specified by:
  `getRoleName` in interface `OracleCommonDataSource`
Specified by:
  `getRoleName` in interface `OracleDataSource`
Returns:
  datasource role name.

#### getConnectionProperties

    public Properties getConnectionProperties()
                                       throws SQLException

Gets the connection properties that are set on this data source object. These exclude any sensitive property with "password" in its name (case-insensitive); for example, "password", "oracle.net.websocketPassword", etc.

Specified by:
  `getConnectionProperties` in interface `OracleCommonDataSource`
Returns:
  A java.util.Properties object containing all the connection properties set on this data source object, excluding all sensitive properties described above. Null if there are no such connection properties set.
Throws:
  `SQLException` - If any exception occurs while getting the connection properties.

#### getConnectionProperty

    public String getConnectionProperty​(String propertyName)
                                 throws SQLException

Gets the specified connection property that is set on this data source. Any sensitive property with "password" in its name (case-insensitive, for example, "password", "oracle.net.websocketPassword", etc.) is treated as if that property were not set.

Specified by:
  `getConnectionProperty` in interface `OracleCommonDataSource`
Parameters:
  `propertyName` - The name of the specified connection property.
Returns:
  The String value of the specified connection property. Null if there is no such connection property set, or the specified connection property has "password" in its name.
Throws:
  `SQLException` - If any exception occurs while getting the connection property.

#### setConnectionProperty

    public void setConnectionProperty​(String name,
                                      String value)
                               throws SQLException

Sets a connection property on the data source.

Specified by:
  `setConnectionProperty` in interface `OracleCommonDataSource`
Parameters:
  `name` - The name of the connection property to be set.
  `value` - The value of the connection property to be set.
Throws:
  `SQLException` - If any exception occurred while setting the connection property.
See Also:
  `setConnectionProperties(java.util.Properties)`

#### isWrapperFor

    public boolean isWrapperFor​(Class<?> iface)
                         throws SQLException

Since this class is not a wrapper, just check to see if this implements the requested interface.

Specified by:
  `isWrapperFor` in interface `Wrapper`
Parameters:
  `iface` - requested interface
Returns:
  true iff this implements the requested interface
Throws:
  `SQLException` - if the arg is not an interface
Since:
  JDBC 4.0

#### unwrap

    public <T> T unwrap​(Class<T> iface)
                 throws SQLException

Since this class is not a wrapper, just check to see if this implements the requested interface. If it does return this.

Specified by:
  `unwrap` in interface `Wrapper`
Parameters:
  `iface` - requested interface
Returns:
  this iff this implements the requested interface
Throws:
  `SQLException` - if this does not implement the arg or the arg is not an interface
Since:
  JDBC 4.0

#### getParentLogger

    public Logger getParentLogger()
                           throws SQLFeatureNotSupportedException

Specified by:
  `getParentLogger` in interface `CommonDataSource`
Throws:
  `SQLFeatureNotSupportedException`

#### setSSLContext

    public final void setSSLContext​(SSLContext sslContext)

Description copied from interface: `OracleCommonDataSource`
Specifies a `SSLContext` to use as a factory for SSLEngine objects that carry out the TLS protocol.

The SSLContext must be initialized before establishing a connection to the data source. The certificates specified by that initialization will be used in place of any connection properties that would otherwise have specified certificates, such as key store and trust store property values.

Specifying a null value will clear any non-null value that may have been set previously, causing this data source to behave as if this method had never been called at all.

Specified by:
  `setSSLContext` in interface `OracleCommonDataSource`
Parameters:
  `sslContext` - An SSLContext to use as an SSLEngine factory.

#### setSingleShardTransactionSupport

    public void setSingleShardTransactionSupport​(boolean allow)
                                          throws SQLException

Description copied from interface: `OracleCommonDataSource`
Sets single shard transaction support in auto commit OFF mode. Default value is false. Only used for the sharding driver.

Specified by:
  `setSingleShardTransactionSupport` in interface `OracleCommonDataSource`
Throws:
  `SQLException`

#### setHostnameResolver

    public void setHostnameResolver​(OracleHostnameResolver hostnameResolver)

Description copied from interface: `OracleCommonDataSource`
Sets a custom hostname resolver implementing `OracleHostnameResolver` used to provide a custom DNS name resolution strategy to locate the database host.

Specified by:
  `setHostnameResolver` in interface `OracleCommonDataSource`
Parameters:
  `hostnameResolver` - an OracleHostnameResolver to use when resolving the datasource hostname

#### getConnectionDuringExceptionHandling

    protected oracle.jdbc.internal.OracleConnection getConnectionDuringExceptionHandling()

#### createConnectionBuilder

    public OracleConnectionBuilderImpl createConnectionBuilder()

Creates a new instance

Specified by:
  `createConnectionBuilder` in interface `DataSource`
Specified by:
  `createConnectionBuilder` in interface `OracleDataSource`
Returns:
  The OracleConnectionBuilder instance that was created

#### getConnectionNoProxy

    public Connection getConnectionNoProxy​(OracleConnectionBuilderImpl connBuilder)
                                    throws SQLException

Specified by:
  `getConnectionNoProxy` in interface `oracle.jdbc.replay.internal.OracleDataSource`
Throws:
  `SQLException`

#### setupACSpecificProperties

    protected void setupACSpecificProperties​(boolean useProxy)
                                      throws SQLException

Throws:
  `SQLException`

#### enableACAndProxifyIfNecessary

    protected Connection enableACAndProxifyIfNecessary​(Connection conn,
                                                       OracleConnectionBuilderImpl connBuilder)
                                                throws SQLException

Throws:
  `SQLException`

#### registerConnectionInitializationCallback

    public void registerConnectionInitializationCallback​(oracle.jdbc.replay.internal.ConnectionInitializationCallback cbk)
                                                  throws SQLException

Registers a ConnectionInitializationCallback with the data source.

Specified by:
  `registerConnectionInitializationCallback` in interface `OracleDataSource`
Parameters:
  `cbk` - The ConnectionInitializationCallback to be registered.
Throws:
  `SQLException` - If the argument is null or callback registration fails.

#### unregisterConnectionInitializationCallback

    public void unregisterConnectionInitializationCallback​(oracle.jdbc.replay.internal.ConnectionInitializationCallback cbk)
                                                    throws SQLException

Removes the ConnectionInitializationCallback registered with the data source, if any.

Specified by:
  `unregisterConnectionInitializationCallback` in interface `OracleDataSource`
Parameters:
  `cbk` - The `ConnectionInitializationCallback` object to be unregistered.
Throws:
  `SQLException` - If callback removal fails.

#### getConnectionInitializationCallback

    public oracle.jdbc.replay.internal.ConnectionInitializationCallback getConnectionInitializationCallback()

Description copied from interface: `OracleDataSource`
Obtains the registered connection initialization callback, if any.

Specified by:
  `getConnectionInitializationCallback` in interface `OracleDataSource`
Returns:
  The registered `ConnectionInitializationCallback`, or null if there is no callback registered.

#### getReplayStatistics

    public ReplayStatistics getReplayStatistics()

Description copied from interface: `OracleDataSource`
Obtains replay statistics accumulated so far. These reflect replay actions across all the connections created by this data source. It is recommended that this call be made when the connections are quiescent and there are few new connections being opened.

Specified by:
  `getReplayStatistics` in interface `OracleDataSource`
Returns:
  A replay statistics object containing all the metrics.

#### clearDoneDumpOnMemoryPressure

    public void clearDoneDumpOnMemoryPressure()

Specified by:
  `clearDoneDumpOnMemoryPressure` in interface `oracle.jdbc.replay.internal.OracleDataSource`

#### getReplayStatisticsString

    public String getReplayStatisticsString()

Specified by:
  `getReplayStatisticsString` in interface `oracle.jdbc.replay.internal.OracleDataSource`

#### clearReplayStatistics

    public void clearReplayStatistics()

Description copied from interface: `OracleDataSource`
Clears replay statistics accumulated so far on all connection created by this data source. It is recommended that this call be made when the connections are quiescent and there are few new connections being opened.

Specified by:
  `clearReplayStatistics` in interface `OracleDataSource`

#### updateReplayStatistics

    public void updateReplayStatistics​(oracle.jdbc.replay.internal.ReplayStatistics newStats)

Specified by:
  `updateReplayStatistics` in interface `oracle.jdbc.replay.internal.OracleDataSource`

#### getSystemProperty

    protected static String getSystemProperty​(String property,
                                              String defaultValue)

#### getRequestSizeLimit

    public int getRequestSizeLimit()
                            throws SQLException

Specified by:
  `getRequestSizeLimit` in interface `oracle.jdbc.replay.internal.OracleDataSource`
Throws:
  `SQLException`

#### getProxyFactory

    public oracle.jdbc.proxy.ProxyFactory getProxyFactory()
                                                   throws SQLException

Specified by:
  `getProxyFactory` in interface `oracle.jdbc.replay.internal.OracleDataSource`
Throws:
  `SQLException`

#### registerMBean

    public static void registerMBean()

#### unregisterMBean

    public static void unregisterMBean()

#### cleanup

    public static void cleanup()

#### debug

    protected void debug​(Logger logger,
                         Level level,
                         Executable method,
                         String msg)

AC specifc

#### getMonitorLock

    public final oracle.jdbc.internal.Monitor.CloseableLock getMonitorLock()

Specified by:
  `getMonitorLock` in interface `oracle.jdbc.internal.Monitor`

#### setTokenSupplier

    public final void setTokenSupplier​(java.util.function.Supplier<? extends AccessToken> tokenSupplier)

Description copied from interface: `OracleCommonDataSource`

Sets a supplier function that generates an access token when creating a connection with this `DataSource`. The supplier function is invoked each time this `DataSource` creates a connection. Instances of `AccessToken` that are output by the supplier must represent a token type that is supported by Oracle Database for client authentication. The supplier must be thread safe.

It is invalid to configure this `DataSource` with both a token supplier and with a user name or password. If invocations of `OracleCommonDataSource.setUser(String)`, `OracleCommonDataSource.setPassword(String)`, `OracleCommonDataSource.setConnectionProperties(java.util.Properties)`, or `OracleCommonDataSource.setConnectionProperty(String, String)` have configured this `DataSource` with a user name or password, and an invocation of this method has also configured a token supplier, then a `SQLException` indicating an invalid configuration is thrown when creating a connection with this datasource.

Note that `AccessToken.createJsonWebTokenCache(Supplier)` can be called to create a thread safe `Supplier` that caches tokens from a user defined `Supplier`.

Specified by:
  `setTokenSupplier` in interface `OracleCommonDataSource`
Parameters:
  `tokenSupplier` - Token supplying function. Not `null`.