Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

The ORA-26947 error appears when a database isn’t configured to support Oracle GoldenGate replication. It typically appears when starting or registering an Extract or Replicat process. This guide walks through the root causes and how to fix them.

What Causes ORA-26947?

This error occurs when GoldenGate replication is not enabled at the database level, which blocks replication processes from starting or continuing. Common causes include:

  • ENABLE_GOLDENGATE_REPLICATION is set to FALSE. This initialization parameter, introduced in Oracle 11.2.0.4, defaults to FALSE. Until it’s set to TRUE, the database blocks GoldenGate from registering, extracting, or applying data.
  • The parameter was never enabled after setup. Administrators often finish installing GoldenGate and configuring its Manager, Extract, or Replicat parameter files without touching the database’s own initialization settings. The database has no way of knowing GoldenGate is in use until this parameter is switched on.
  • Database preparation is incomplete. Enabling the parameter doesn’t help if other settings are missing, such as incorrect transaction logging or absent supplemental logging. Gaps like these commonly trigger ORA-26947 during process registration.

what causes ORA-26947

Fix ORA-26947 by Enabling Oracle GoldenGate Replication

To resolve the ORA-26947 error, change a database initialization parameter that controls GoldenGate access. The steps below cover connecting to the database, enabling the parameter, and confirming the fix.

Step 1: Connect to Oracle as SYSDBA

Changing this parameter requires SYSDBA privileges. Open SQL*Plus and connect as a user with SYSDBA access:

bash
sqlplus / as sysdba

Step 2: Check the Current Parameter Value

Before making any changes, check the current setting:

bash
SHOW PARAMETER ENABLE_GOLDENGATE_REPLICATION;

If GoldenGate replication is not enabled, the value will show as FALSE.

Step 3: Enable ENABLE_GOLDENGATE_REPLICATION

ENABLE_GOLDENGATE_REPLICATION is a dynamic parameter, so you can enable it without restarting the database:

bash
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;

SCOPE=BOTH applies the change to the running instance immediately and writes it to the server parameter file (spfile), so it persists after a restart.

Note: In a RAC environment, add SID='*' to this command so the change applies across all instances. This is covered in more detail in the RAC section below.

Step 4: Verify That GoldenGate Replication Is Enabled

Run the same check again to confirm the change took effect:

bash
SHOW PARAMETER ENABLE_GOLDENGATE_REPLICATION;

The value should now show as TRUE.

Step 5: Restart the Failed GoldenGate Process

With the parameter enabled, return to GGSCI and start the Extract or Replicat process that originally failed:

bash
GGSCI> START EXTRACT 

Check its status with INFO EXTRACT <extract_name> and confirm it reaches a RUNNING state without further errors.

How to Fix ORA-26947 in Oracle RAC

In an Oracle Real Application Clusters (RAC) environment, all instances need to use the same parameter setting. If it’s only changed on one node, GoldenGate processes connecting to other nodes will keep raising the ORA-26947 error.

To apply the change across the entire cluster, use the SID='*' clause. This updates every instance in memory and writes the setting to the shared server parameter file (spfile). Run this from any active RAC node:

bash
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*';

After running this, confirm the setting on every instance with:

bash
SELECT inst_id, name, value 
FROM gv$parameter 
WHERE name = 'enable_goldengate_replication';

Every row should show TRUE in the VALUE column. If a node still shows FALSE, it likely wasn’t running when the command executed, or it was restarted afterward without picking up the new spfile value. Check that the node is online and apply the command directly on it if needed.

How to Fix ORA-26947 in a CDB or PDB Environment

In a multitenant Oracle environment, container-level rules affect where you can set replication parameters. Applying the setting at the wrong level in a Container Database (CDB) or Pluggable Database (PDB) will keep GoldenGate processes from starting.

Connect to the Correct Container

ENABLE_GOLDENGATE_REPLICATION is set from the root container (CDB$ROOT). Running the command from within a PDB will fail.

bash
ALTER SESSION SET CONTAINER = CDB$ROOT;

Once connected to the root, run the same command used earlier:

bash
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;

Check Whether the Parameter Is Modifiable in a PDB

ENABLE_GOLDENGATE_REPLICATION is not modifiable at the individual PDB level. Attempting to set it while connected to a PDB returns:

bash
ORA-65040: operation not allowed from within a pluggable database

This is expected behavior. The parameter is a CDB-wide setting, so it always needs to be configured from CDB$ROOT, regardless of which PDBs are being replicated.

Verify All Required PDBs Are Open

Enabling the parameter in the root doesn’t help if the target PDB itself is closed or mounted. GoldenGate’s Extract or Replicat processes need the PDB fully open to read from or write to it.

Check the status of each PDB:

bash
SHOW PDBS;

Confirm the target PDB shows READ WRITE under OPEN MODE. If it doesn’t, open it:

bash
ALTER PLUGGABLE DATABASE  OPEN;

ORA-26947 Still Happens After Enabling GoldenGate Replication

Sometimes the ORA-26947 error persists even after the parameter has been updated. When this happens, the next step is to check for environment mismatches or missing logging dependencies.

The Parameter Change Was Not Applied to the Correct Instance

On a server running multiple database instances, it’s easy to update the parameter on the wrong one. This usually comes down to running the SQL commands under the wrong ORACLE_SID environment variable.

Check the instance name alongside the parameter value to confirm you’re on the right database:

bash
SELECT instance_name, status FROM v$instance;
SHOW PARAMETER ENABLE_GOLDENGATE_REPLICATION;

If the instance name doesn’t match the database GoldenGate is configured to capture from, switch the ORACLE_SID environment variable and reapply the fix on the correct instance.

The Parameter Is Enabled but the GoldenGate Process Uses Another Database

GoldenGate’s Extract and Replicat processes connect using credential stores or TNS aliases. If the alias in the DBLOGIN command points to the wrong service, such as a read-only Active Data Guard standby or a different container, the process ends up connecting to a database where the parameter was never enabled.

Check the tnsnames.ora file or the GoldenGate credential store configuration:

bash
GGSCI> DBLOGIN USERIDALIAS ggadmin_prod

Confirm the alias ggadmin_prod routes to the read-write primary database, not a standby or secondary instance.

The Database Is Not in ARCHIVELOG Mode

GoldenGate reads transaction details from the database’s redo logs. In NOARCHIVELOG mode, those logs get overwritten quickly and aren’t preserved on disk, which blocks replication from reading historical change data.

Check the database’s logging mode:

bash
ARCHIVE LOG LIST;

If the output shows “Database log mode: No Archive Mode,” switching to ARCHIVELOG mode needs a brief maintenance window, since the database has to be restarted in mount state:

bash
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

Supplemental Logging Is Missing

By default, Oracle redo logs capture only the minimum needed to recover from a crash. GoldenGate needs more, like primary key and changed-column values, to reconstruct full SQL operations for replication. That’s what supplemental logging provides.

Check and enable minimal supplemental logging at the database level:

bash
SELECT supplemental_log_data_min FROM v$database;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Schema-level or table-level supplemental logging is configured separately, from within GGSCI, before starting replication:

bash
GGSCI> DBLOGIN USERID ggsadmin, PASSWORD password
GGSCI> ADD SCHEMATRANDATA 

FORCE LOGGING Is Not Enabled

Some operations, like direct-path loads or bulk inserts, can use the NOLOGGING clause to skip writing to the redo logs for better performance. Since GoldenGate only replicates what’s written to the redo logs, NOLOGGING transactions get missed entirely, which can cause the Extract process to fail or leave data out of sync.

bash
SELECT force_logging FROM v$database;

If the result is NO, enable FORCE LOGGING to override local NOLOGGING directives across all transactions:

bash
ALTER DATABASE FORCE LOGGING;

Real-Time Oracle Database Replication with i2Stream

The troubleshooting steps above fix ORA-26947, but they don’t address a broader question: how do you keep Oracle databases in sync without depending on GoldenGate licensing or manually tracking parameters like ENABLE_GOLDENGATE_REPLICATION across every RAC node and PDB.

i2Stream is built for this. It replicates Oracle databases in real time through log parsing, without needing an agent installed on the source database. Since it reads directly from the archive and redo logs rather than relying on database-level replication services, there’s no equivalent of ORA-26947 to troubleshoot in the first place.

For teams already dealing with the CDB/PDB and RAC-specific configuration steps covered earlier, i2Stream simplifies the setup:

  • Agentless log-based capture. Data changes are captured by parsing online and archived redo logs, so there’s no impact on the production database and no per-instance parameter to manage.
  • Transaction-level consistency. Replication maintains transaction integrity with conflict resolution for inserts, updates, and deletes, so replicated data stays consistent even under high-concurrency workloads.
  • Point-in-time recovery. Instead of only replicating forward, i2Stream supports recovery from a specified SCN, which is useful when you need to roll back to a known-good state after a replication issue.
  • Flexible topologies. One-to-one, one-to-many, and many-to-one replication modes are supported, so the same setup can extend to migration, disaster recovery, or feeding a data warehouse without reconfiguring from scratch.

If your current setup involves both real-time replication and disaster recovery, i2Availability extends this further with automated failover for the standby database, cutting down manual intervention when the primary instance goes down.

FREE Trial for 60-Day

ORA-26947 Troubleshooting FAQ

Q1: What does ORA-26947 mean?

ORA-26947 means the database has not been configured to allow Oracle GoldenGate replication. It usually appears because the ENABLE_GOLDENGATE_REPLICATION parameter is set to FALSE.

 

Q2: How do I check whether GoldenGate replication is enabled?

Run SHOW PARAMETER ENABLE_GOLDENGATE_REPLICATION in SQL*Plus. A value of TRUE means it’s enabled; FALSE means it isn’t.

 

Q3: Do I need to restart Oracle after enabling GoldenGate replication?

No. ENABLE_GOLDENGATE_REPLICATION is a dynamic parameter, so ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH takes effect immediately without a database restart.

 

Q4: Does ORA-26947 affect Extract or Replicat?

Yes. Both Extract and Replicat processes depend on this parameter being enabled, so either process can fail to start or register while it’s set to FALSE.

 

Q5: Can ORA-26947 occur in Oracle RAC?

Yes. If the parameter is only set on one RAC instance, other nodes still raise ORA-26947. Use SID='*' when setting the parameter so it applies across all instances.

 

Q6: Can I set ENABLE_GOLDENGATE_REPLICATION inside a PDB?

No. The parameter can only be set from the root container (CDB$ROOT). Attempting it from within a PDB returns ORA-65040.

 

Q7: Do I need a GoldenGate license to enable this parameter?

Yes. Oracle requires a valid Oracle GoldenGate license to use the features unlocked by setting ENABLE_GOLDENGATE_REPLICATION to TRUE.

Conclusion

ORA-26947 comes down to one thing: the database hasn’t been told to allow GoldenGate replication. In most cases, setting ENABLE_GOLDENGATE_REPLICATION to TRUE from the root container clears the error right away.

If it persists, the cause is usually somewhere else, like the wrong instance, a misconfigured connection alias, or missing supplemental logging and ARCHIVELOG mode. Working through these one at a time will narrow it down.

For teams that want real-time Oracle replication without managing GoldenGate parameters across RAC nodes and PDBs, Info2soft offers i2Stream as a log-based, agentless alternative.

Emma is the bridge between complex engineering and the people who need it. As a content creator at Info2soft, she spends her days translating "tech-speak" into clear, actionable stories about data resilience. She’s not just documenting software; she's uncovering how data replication and recovery actually change the way businesses run.

More Related Articles

Ready to Enhance Business Data Security?

· Enterprise & Mid-market Customers Worldwide

· Support team available to assist you throughout your trial

· Start a 60-day free trial or view demo to see how Info2Soft protects enterprise data.

Please fill out the form and submit it, our customer service representative will contact you soon.
By submitting this form, I confirm that I have read and agree to the Privacy Notice.
{{ isSubmitting ? 'Submitting...' : 'Submit' }}