oracledb 26.0.0-beta.1

Lightweight driver for Oracle Database
Documentation
# <a name="highavailability"></a> 14. High Availability with rust-oracledb

Rust-oracledb applications can take advantage of Oracle Database high
availability features by using appropriate database, network, and connection
configuration. These features can help reduce downtime during planned and
unplanned outages, preserve performance, and simplify operational recovery.

## <a name="harecommend"></a> 14.1 General HA Recommendations

General recommendations for creating highly available rust-oracledb programs
are:

- Tune operating system and Oracle Network parameters to avoid long TCP
  timeouts, prevent firewalls killing connections, and avoid connection storms.
- Implement application error handling and recovery.
- Use the most recent version of Oracle Database.
- Use Oracle Database technologies such as [RAC] or standby databases.
- Use a [connection pool]#connpooling because pools can handle database
  events and take proactive and corrective action for draining, run time load
  balancing, and fail over. Set the minimum and maximum pool sizes to the same
  values to avoid connection storms. Remove resource manager or user profiles
  that prematurely close sessions.
- Test all scenarios thoroughly.

## <a name="hanetwork"></a> 14.2 Network Configuration

The operating system TCP and Oracle Net configuration should be configured for
performance and availability.

Rust-oracledb is a Thin driver, so timeout and high availability options should
be configured using supported connect string options, connect descriptors, pool
settings, and application-level error handling.

Options such as connection retries, retry delays, failover, load balancing, and
connection keepalive settings can be explored.

[Oracle Net Services] options may also be useful for high availability and
performance tuning. These are configured in database `listener.ora`
configuration files or connect descriptors. For example, the database's
`listener.ora` file can have [RATE_LIMIT] and [QUEUESIZE] parameters that can
help handle connection storms.

These options are independent of the Rust application code, but they can affect
how quickly rust-oracledb applications can establish connections and recover
during planned or unplanned outages.

[Oracle Net Services]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=NETRF
[QUEUESIZE]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-FF87387C-1779-4CC3-932A-79BB01391C28
[RAC]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=RACAD
[RATE_LIMIT]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-F302BF91-64F2-4CE8-A3C7-9FDB5BA6DCF8