Active Data Guard (also known as "ADG") allows you to open a Standby Database in Read Only mode and query it while Media Recovery (i.e. Redo Apply from the Primary) is concurrently running.
Caveat : ADG requires purchase of additional licences to use this feature on a Standby Database.
If you issue the commands from sqlplus and not from dgmrl, you must first stop Media Recovery before you OPEN the database and then re-enable it on the Standby :
SQL> select FORCE_LOGGING, FLASHBACK_ON,DATABASE_ROLE,PROTECTION_MODE, PROTECTION_LEVEL, OPEN_MODE 2 from v$database; FORCE_LOGGING FLASHBACK_ON DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL --------------------------------------- ------------------ ---------------- -------------------- -------------------- OPEN_MODE -------------------- YES NO PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE MOUNTED SQL> alter database open read only; alter database open read only * ERROR at line 1: ORA-10456: cannot open standby database; media recovery session may be in progress SQL> alter database recover managed standby database cancel; Database altered. SQL> alter database open read only; Database altered. SQL> select FORCE_LOGGING, FLASHBACK_ON,DATABASE_ROLE,PROTECTION_MODE, PROTECTION_LEVEL, OPEN_MODE 2 from v$database; FORCE_LOGGING FLASHBACK_ON DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL --------------------------------------- ------------------ ---------------- -------------------- -------------------- OPEN_MODE -------------------- YES NO PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE READ ONLY SQL> SQL> alter pluggable database orclpdb1 open read only; Pluggable database altered. SQL> SQL> alter database recover managed standby database disconnect from session; Database altered. SQL>
Thereafter, you would be able to query the Standby Database. DML (INSERT, UPDATE, DELETE) and DDL (CREATE, DROP, ALTER etc) are *not* allowed by default.
19c does have a DML Redirection feature ADG_REDIRECT_DML which I demonstrate below :
The actual execution of the DML will take some time as Oracle has to actually push it to the Primary database for execution and then wait for the Redo Apply to replicate back to the Standby.
SQL> connect hemant/hemant@stdbypdb1 Connected. SQL> select * from x; D - X SQL> delete x; delete x * ERROR at line 1: ORA-16000: database or pluggable database open for read-only access SQL> ALTER SESSION ENABLE ADG_REDIRECT_DML; Session altered. SQL> delete x; 1 row deleted. SQL> commit; Commit complete. SQL>
The actual execution of the DML will take some time as Oracle has to actually push it to the Primary database for execution and then wait for the Redo Apply to replicate back to the Standby.
PLSQL also can be executed with ADG_REDIRECT_PLSQL which I am not demonstrating here.
Note : According to Oracle's documentation the DML Redirect feature is for "read-mostly applications, which occasionally execute DMLs, on the standby database." . I wouldn't advise trying this for all sessions at the Instance ("alter system") level but only to be used occasionally at session level.
4 comments:
Nice post. Oracle has added lot of wonderful feature in Active Dataguard with 19c. You have demonstrated the feature in a very simple way. Please continue doing it for us
I need some help on this topic
Does anyone know if Active Dataguard as a license is included in the Oracle GoldenGate license or is it separate.
Steve
www.1place1cloud.com
Steve,
Quoting from https://docs.oracle.com/en/database/oracle/oracle-database/19/haovw/ha-features.html#GUID-FFD1679E-2C5D-41C6-ADA5-D66D4A24FBB0 :
Oracle Active Data Guard is licensed separately as a database option license for Oracle Database Enterprise Edition. All Oracle Active Data Guard capabilities are also included in an Oracle Golden Gate license for Oracle Enterprise Edition. This provides customers with the choice of a standalone license for Oracle Active Data Guard, or licensing Oracle GoldenGate to acquire access to all advanced Oracle replication capabilities.
Post a Comment