# Oracle Data Guard

The software which Oracle Corporation markets as Oracle Data Guard forms an extension to the Oracle relational database management system (RDBMS). It aids in establishing and maintaining secondary standby databases as alternative/supplementary repositories to production primary databases.
Oracle provides both graphical user interface (GUI) and command-line (CLI) tools for managing Data Guard configurations.
Data Guard supports both physical standby and logical standby sites. Oracle Corporation makes Data Guard available only as a bundled feature included within its "Enterprise Edition" of the Oracle RDBMS.
With appropriately set-up Data Guard operations, DBAs can facilitate failovers or switchovers to alternative hosts in the same or alternative locations.

## Configurations

For the purposes of Data Guard, each Oracle database functions either in a primary database role or in a standby database role - with the ability to transition from one role to the other.

### Physical standby (Redo Apply)

A physical standby database replicates the exact contents of its primary database across the Oracle Net network layer. While the relative physical storage locations can differ, the data in the database will be exactly the same as in the primary database. Physical standby databases can function either in managed-recovery mode or in read-only mode, but not in both modes at the same time (unless the databases are at Oracle Database 11.1 or higher and the Active Data Guard option is licensed - see below). The standby makes use of "Redo Apply" technology.
Physical standby databases have the same DBID identifiers as their primary equivalents.

### Logical standby (SQL Apply)

Logical standby databases convert the redo generated at the primary database into data and SQL and then re-apply those SQL transactions on the logical standby. Thus, physical structures and organization will be different from the primary database. Users can read from logical standby databases while the changes are being applied and, if the GUARD is set to STANDBY (ALTER DATABASE GUARD STANDBY;), write to tables in the logical standby database that are not being maintained by SQL Apply.
Unfortunately there are a number of unsupported objects (e.g. tables or sequences owned by SYS, tables that use table compression, tables that underlie a materialized view or Global temporary tables (GTTs)) and unsupported data types (i.e.: datatypes BFILE, ROWID, and UROWID, user-defined TYPEs, multimedia data types like Oracle Spatial, ORDDICOM, and Oracle Text Collections (e.g. nested tables, VARRAYs), SecureFile LOBs, OBJECT RELATIONAL XMLTypes and BINARY XML). Logical standby may not be appropriate in such a case.

### Active Data Guard

The "Oracle Active Data Guard" option, an extra-cost facility, extends Oracle Data Guard functionality in Oracle 11g configurations. It allows read-only access on the Physical standby node at the same time as applying archived transactions from the primary node. Also it features Automatic Block Repair and Fast Incremental Backup on Physical Standby,

## Operation
### Server-side functionality

LNS (log-write network-server) and ARCH (archiver) processes running on the primary database select archived redo logs and send them to the standby-database host, where the RFS (remote file server) background process within the Oracle instance performs the task of receiving archived redo logs originating from the primary database and writing them to a standby redo log (SRL).
Alternatively, a supplementary mechanism may transfer the archived redo logs. On the standby database a Fetch Archive Log (FAL) client monitors for gaps in the sequence of received logs. If it finds a gap, it may invoke one or more Fetch Archive Log (FAL) servers to run on the primary database to forward the missing item(s).
Once the archived redo logs have arrived on the standby host, other processes - such as an ARCH (archiver process), an MRP (Managed Recovery Process), and/or an LSP (Logical Standby Process) - may set about applying the log contents to the standby database.
The use of standby redo logs can speed up the application of changes to a standby database with real-time apply.
The Data Guard Connection process (DRCX) plays a role in transferring data between databases.

### Client-side access

The Data Guard Broker subsystem can aid in the setup, management and monitoring of Data Guard configurations.

## Advantages

Data Guard provides high availability for a database system. It can also reduce the human intervention required to switch between databases at disaster-recovery ("failover") or upgrade/maintenance ("switchover") time.
Through the use of standby redo log files, Data Guard can minimize data loss.
It supports heterogeneous configurations in which the primary and standby systems may have different CPU architectures, operating systems (for example, Microsoft Windows and Linux), operating-system binaries (32-bit/64-bit), or Oracle database binaries (32-bit/64-bit).

## Disadvantages

If the network link connecting primary and standby is over-subscribed, the redo logs are not shipped in chronological order, which can result in large gaps appearing in the available redo at the standby. Such a condition results in the standby being behind the primary. This can be overcome, using Oracle’ Active Data Guard Farsync technology.
The same release of Oracle Database Enterprise Edition must be installed on the primary database and all standby databases, except during rolling database upgrades using logical standby databases.
Oracle Data Guard is available only as a feature of Oracle Database Enterprise Edition.