High Availability
About High Availability in OCI GoldenGate
High Availability is a system's ability to remain operational and accessible at a high percentage of time. To achieve High Availability with OCI GoldenGate, you can create a peer deployment in the same region as your primary deployment (local standby) or a different region (cross-region standby). This set up ensures that the recovery point objective (RPO), which is the maximum amount of data lost before OCI GoldenGate is restored in the standby Availability Domain (AD), is zero. The recovery time objective (RTO), which is the maximum amount of time to restore OCI GoldenGate in a standby AD, depends on the amount of data stored on the deployment. The higher the storage utilization is, the longer the RTO will be.
Consider selecting the same standby regions as your source and target instances. For example, if your Autonomous AI Database standby is in Frankfurt, select Frankfurt for your OCI GoldenGate deployment standby as well.
Note:
Peer deployments are billed at the same rate as your primary deployment. Learn more about OCPU management and billing.Concepts
The following concepts are essential for working on OCI GoldenGate High Availability:
- Primary deployment: The main data replication deployment that you first create.
- Peer deployment: A standby deployment that you can switch to in the event of a disaster or service disruption.
- Local peer: A peer deployment that resides in the same region as the primary deployment, but in a different Availability or Fault domain.
- Remote peer: A peer deployment that resides in a different region.
- Recovery point objective (RPO): The maximum amount of data that could be lost before OCI GoldenGate is restored. For OCI GoldenGate, the RPO is zero.
- Recovery time objective (RTO): The maximum amount of time to restore GoldenGate. The RTO depends on the amount of data stored on the deployment. The higher the storage utilization, the longer the RTO.
Data Guard enabled Base Database connections
If using Data Guard enabled Base databases for your OCI GoldenGate source or target, you must ensure the service name in the database connection string is identical across peers when implementing your high availability solution.
When you create an OCI GoldenGate connection to a Data Guard enabled Oracle Base Database system (Container Database (CDB) or Pluggable Database (PDB), OCI GoldenGate retrieves the database's default connection strings and generates a merged Oracle Net connect descriptor suitable for Data Guard environments. For example:
(DESCRIPTION=
(FAILOVER=ON)(LOAD_BALANCE=OFF)(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=primary-or-scan.example.fqdn)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=standby-or-scan.example.fqdn)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=default-service-name-of-the-selected-db))
)OCI GoldenGate generates one DESCRIPTION with an ADDRESS_LIST containing the peer endpoints (primary and standby) and a single SERVICE_NAME for CONNECT_DATA. OCI GoldenGate's high availability solution requires all peers (primary and standby) to use the same service name. Role-based services with identical names on each peer is mandatory.
The default CDB service name typically differs among peers, because they often include each database's unique name. OCI GoldenGate uses the default service name of the selected database as the SERVICE_NAME in the merged descriptor. Therefore, you must rename the PRIMARY role-based service name on each peer to match the default service name.
Tip:
- Use role-based services. Define a read/write service that runs only on PRIMARY (and optionally a read-only service on PHYSICAL_STANDBY when using Data Guard).
- Avoid static listener entries for application services. Use dynamic registration so that services are advertised only when the database is in the correct role.
- If you change the CDB or PDB service names with srvctl, ensure that you create a manually managed connection in OCI GoldenGate (select Enter database information in the Create connection screen), and update the connection string to match.