New Data Guard Views in Oracle AI Database 26ai
Plus a new, undocumented behavior
Oracle AI Database 26ai introduces four new fixed views for reporting status and performance in Data Guard environments. Let’s review these changes and see how they can help database administrators better understand and manage Data Guard!
(Demonstrations in this post are from a simple Data Guard configuration named dg26ai, consisting of two Oracle AI Database 26ai databases (version 26.23). The primary database in these examples is orion, and the standby is taurus.)
v$dg_broker_property
This is perhaps the most valuable of the new views, adding long-awaited functionality (previously only available through an unsupported workaround, querying DBMS_DRS). The notable columns in this view are:
- MEMBER: This reports the member a configuration is associated with, which can be a configuration (in my examples, dg26ai) or one of the participating databases.
- INSTANCE: On RAC systems, this shows instance-specific configurations.
- DATAGUARD_ROLE: Indicates what role a member plays in the configuration. In this simple setup, you’ll see CONFIGURATION, PRIMARY, and PHYSICAL STANDBY.
- PROPERTY: The name of the Data Guard property.
- PROPERTY_TYPE: Use this field to distinguish between CONFIGURABLE and MONITORABLE properties.
- VALUE: The current value for the property.
- VALID_ROLE: Indicates the role a property applies to. This adds insight into certain properties. For example, certain properties are only used when a member is the standby.
Sample output from my environment (truncated for brevity):
MEMBER DATAGUARD_ROLE PROPERTY_TYP SCOPE PROPERTY VALUE
---------- ------------------ ------------ --------------- ------------------------------- --------------------
dg26ai CONFIGURATION CONFIGURABLE CONFIGURATION BystandersFollowRoleChange ALL
CommunicationTimeout 180
ConfigurationSimpleName dg26ai
ConfigurationWideServiceName dg26ai_CFG
...
orion PRIMARY CONFIGURABLE INSTANCE StaticConnectIdentifier (DESCRIPTION=(ADDRES
MEMBER AlternateLocation
ApplyInstanceTimeout 0
ApplyInstances 0
ApplyLagThreshold 30
...
MONITORABLE INSTANCE SidName (monitor)
TopWaitEvents (monitor)
MEMBER InconsistentLogXptProps (monitor)
LogXptStatus (monitor)
...
taurus PHYSICAL STANDBY CONFIGURABLE INSTANCE StaticConnectIdentifier (DESCRIPTION=(ADDRES
MEMBER AlternateLocation
ApplyInstanceTimeout 0
ApplyInstances 0
ApplyLagThreshold 30
...
MONITORABLE INSTANCE SidName (monitor)
TopWaitEvents (monitor)
MEMBER InconsistentLogXptProps (monitor)
LogXptStatus (monitor)
When evaluating Data Guard environments, I often see “bespoke reporting,” efforts to extract Data Guard status and state information or mimic the results of Broker output by querying non-Data Guard tables and views. The addition of v$dg_broker_property should help alleviate this practice!
v$dg_broker_role_change
This view compiles Data Guard role changes, switchover and failover, performed in the configuration. Most of the columns should be self-explanatory, but one I’d like to highlight is FS_FAILOVER_REASON. If you’re running Fast-Start Failover (and you should, it’s a requirement for Gold, Platinum, and Diamond reference architectures for mission-critical workloads under Oracle’s latest Maximum Availability Architecture Best Practices), FSFO performs failover automatically. This column identifies the condition FSFO detected that initiated the event.
On my test system, this view shows my two switchover tests:
EVENT STANDBY_TY OLD_PRIMAR NEW_PRIMAR BEGIN_TIME END_TIME
---------- ---------- ---------- ---------- -------------------------------- --------------------------------
Switchover Physical orion taurus 18-DEC-25 03.19.43.000000000 PM 18-DEC-25 03.19.53.000000000 PM
Switchover Physical taurus orion 18-DEC-25 03.24.39.000000000 PM 18-DEC-25 03.24.44.000000000 PM
v$fast_start_failover_config
Like v$dg_broker_property, this addition to the database catalog offers database administrators reporting access for their Fast-Start Failover configuration. One notable thing about this view, in RAC environments, the OBSERVER_PRESENT column reports YES on all member instances if the Observer is connected to any instance.
v$fs_lag_histogram
When Fast-Start Failover is enabled, Data Guard calculates the FSFO lag every minute. Histograms for those lag checks are available here, and you can use this view, together with v$fs_observer_histogram, to establish values for two important FSFO properties: FastStartFailoverLagLimit and FastStartFailoverThreshold, as follows:
After setting up Data Guard, enable Fast-Start Failover in Observe Only mode. In Observe Only mode, FSFO captures information about events that would have triggered a failover event, without actually performing a failover. Importantly, Data Guard still collects latency statistics in Observe Only mode, providing the information you need to understand and adjust to your network conditions.
Run things this way for a representative trial period, then use the contents of these views to determine the ideal failover settings in your environment:
FastStartFailoverThreshold: Set this value based on the WAIT_TIME threshold in v$fs_observer_histogram, using a value greater than the maximum wait between Observer ping failures.FastStartFailoverLagLimit: Set this to a value larger than the maximum LAG_TIME reported from v$fs_lag_histogram.
Setting these limits according to known network throughput allows DBAs to tune their Data Guard environments, preventing false positives.
New Behavior
One change I’ve noticed in Oracle AI Database 26ai Data Guard is a change to Data Guard Broker behavior when adding a database to a configuration. The maintained as physical clause of the add database command was deprecated in 11g, but I wasn't able to find any documentation showing it was desupported.
The command works in 19c but fails in 26ai. (The help output for the add database command is also different.)
Oracle Database 19c
DGMGRL> add database taurus as connect identifier is 'TAURUS:1521/taurus' maintained as physical;
Database "taurus" added
DGMGRL> help add database
Adds a member to the broker configuration
Syntax:
ADD { RECOVERY_APPLIANCE | DATABASE | FAR_SYNC } <object name>
[AS CONNECT IDENTIFIER IS <connect identifier>];
Oracle AI Database 26ai
DGMGRL> add database taurus as connect identifier is 'TAURUS:1521/taurus' maintained as physical;
add database taurus as connect identifier is 'TAURUS:1521/taurus' maintained as physical;
Syntax error before or at "maintained"
DGMGRL> help add database
Adds a member to the broker configuration
Syntax:
ADD CONFIGURATION [<configuration-name>]
CONNECT IDENTIFIER IS <connect-identifier>;
ADD { DATABASE | FAR_SYNC | MEMBER | RECOVERY_APPLIANCE } <db-unique-name>
[AS CONNECT IDENTIFIER IS <connect-identifier>];
ADD PLUGGABLE DATABASE <pdb-name> AT <target-db-unique-name>
SOURCE IS <source-pdb-name> AT <source-db-unique-name>
[PDBFileNameConvert IS <filename-convert-string>]
[<create-pluggable-database-options>];
Yes, I know! I’ve been using a long-deprecated clause for years out of habit, propagating the syntax from one version to the next, and I should know better. Shame on me!
After speaking with Ludovico Caldara, the Data Guard Product Manager, I learned that a desupport notice was probably overlooked in version 12.1, and that the supporting code was removed in 2021.
Happy Holidays! 🎄
Ready to Take Your Oracle Skills to the Next Level?
Join OraPub, Viscosity’s training hub for Oracle professionals, packed with expert-led courses and exclusive paid member benefits.
Check out Viscosity’s event page for upcoming virtual and on-site training opportunities.

SUBMIT YOUR COMMENT