Skip to content

DataguardBroker emits pre-23ai DGMGRL syntax (ADD DATABASE ... MAINTAINED AS PHYSICAL) so the standby is never added on 23ai #243

Description

@AgnosticDBA

Environment

  • OraOperator: v2.1.0
  • Kubernetes: k3s v1.35.5 (single node), containerd
  • Database image: Oracle Database 23ai (23.26.1) Enterprise Edition

Summary

When configuring the Data Guard broker on a 23ai database, the operator issues a DGMGRL
ADD DATABASE ... MAINTAINED AS PHYSICAL command. The MAINTAINED AS PHYSICAL clause was removed in
23ai, so the command fails with a syntax error and the standby is never added to the broker
configuration — leaving a single-member config (ORA-16627).

Steps to reproduce

  1. Primary + physical-standby SIDB pair on a 23ai EE image.
  2. Create the DataguardBroker and watch the reconcile exec output.

Actual

Verbatim from the reconcile exec output:

ADD DATABASE ORCLSTBY AS CONNECT IDENTIFIER IS gold-standby:1521/ORCLSTBY MAINTAINED AS PHYSICAL;
                                                                          ^
Syntax error before or at "MAINTAINED"

The controller continues regardless (Object "orclstby" was not found, then sets protection mode and
"enables" FSFO), leaving a single-member configuration with ORA-16627.

A second, related gap observed at the same time: the operator sets dg_broker_start=TRUE only on the
primary, not the standby — so even the manual ADD DATABASE fails until the standby's
dg_broker_start is enabled.

Expected

On 23ai, issue ADD DATABASE <name> AS CONNECT IDENTIFIER IS '<descriptor>'; (no
MAINTAINED AS PHYSICAL), and ensure dg_broker_start=TRUE on both databases before broker
configuration.

Suggested fix

  • Drop the MAINTAINED AS PHYSICAL clause for 23ai (version-gate the DGMGRL syntax).
  • Set dg_broker_start=TRUE on the standby as well as the primary.

Workaround (one-time, manual)

On the standby: ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH;
On the primary pod via dgmgrl:

ADD DATABASE ORCLSTBY AS CONNECT IDENTIFIER IS 'gold-standby:1521/ORCLSTBY';
EDIT DATABASE ORCLSTBY SET PROPERTY LogXptMode='SYNC';
ENABLE CONFIGURATION;

The operator's later reconciles then see the member present, skip ADD DATABASE, and proceed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions