🕵️ SicherheitslückenHak5: Hackers Just Poisoned the Rust Supply Chain | Threat Wire(01.09.2026 um 14:00 Uhr)
🕵️ SicherheitslückenHak5: Hackers Found a Way Into Humanoid Robots | Threat Wire(04.09.2026 um 15:04 Uhr)
🔧 AI Nachrichten Bits und so #1021 (Passwort für Laufwerk)(31.08.2026 um 22:15 Uhr)
🔧 AI Nachrichten Bits und so #1022 (Wie Weißbier)(06.09.2026 um 20:39 Uhr)
🍏 iOS / Mac OSHue-App 6.0 ist da: das sind die Neuerungen(07.09.2026 um 17:21 Uhr)
🕵️ SicherheitslückenHak5: Hackers Just Poisoned the Rust Supply Chain | Threat Wire(01.09.2026 um 14:00 Uhr)
🕵️ SicherheitslückenHak5: Hackers Found a Way Into Humanoid Robots | Threat Wire(04.09.2026 um 15:04 Uhr)
🔧 AI Nachrichten Bits und so #1021 (Passwort für Laufwerk)(31.08.2026 um 22:15 Uhr)
🔧 AI Nachrichten Bits und so #1022 (Wie Weißbier)(06.09.2026 um 20:39 Uhr)
🍏 iOS / Mac OSHue-App 6.0 ist da: das sind die Neuerungen(07.09.2026 um 17:21 Uhr)

🔧 Programmierung 🕛 kürzlich 29 Min Lesezeit
0

The Oracle HA Decision Tree: RAC vs Data Guard vs Both

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht

"We have RAC, so we're covered for DR." It's one of the most expensive sentences in Oracle operations,

and I've watched variations of it play out more than once. Real Application Clusters (RAC) and Data

Guard both live under the "high availability" umbrella, so it's easy to assume they're interchangeable

— or that having one means you don't need the other. They are not interchangeable. They solve

different failures, and the cost of confusing them is usually discovered at the worst possible time.



This is the long version of how I think about the choice. We'll start where every good HA design

starts — not with a feature, but with the failure you're trying to survive — then work through what RAC

and Data Guard each actually do, what they cost (in licensing and in complexity), how to reason about

RTO and RPO, and finally a decision tree you can apply to a real system. Everything here targets

Oracle 19c, the enterprise workhorse, with notes on where the newer releases — 23ai and the

current 26ai — change the picture. It's written from general industry practice and lab work — your

environment will differ, so test before you trust.




The short version. RAC keeps you running through a node failure — but it's one copy of your

data on shared storage, so it is not disaster recovery. Data Guard keeps you running through

site loss and corruption by maintaining an independent standby you fail over to. Neither saves

you from a bad DELETE — only backups and Flashback do. Set RTO and RPO with the business, then

buy the cheapest combination that meets them.






Start with the failure, not the feature



Before you evaluate any technology, write down the failure modes you actually need to survive. There

are four that matter for an Oracle database, and they are genuinely different problems:





  • Instance or node failure — a database instance crashes, or the server it runs on dies.


  • Site or region loss — a data center, availability zone, or whole region becomes unavailable.


  • Data corruption — physical block corruption (bad storage, lost writes) or logical corruption.


  • Human error — an accidental DROP TABLE, a bad deploy, a DELETE without a WHERE clause.



No single feature covers all four. That is the entire reason this article exists. Here is the map we'll

spend the rest of the post justifying:






































Failure mode RAC Data Guard Backups + Flashback
Instance / node failure Yes Partial (failover) No
Site / region loss No Yes Partial (slow, if offsite)
Block corruption No Yes Yes
Human / logical error No No Yes


Notice that the bottom row — human error — is covered by neither RAC nor Data Guard. Hold that

thought; it's the mistake I see most often.





What RAC actually solves



RAC runs multiple database instances on multiple servers (nodes) against one shared copy of the

database
. The instances coordinate through Oracle Grid Infrastructure (Clusterware) and a private

interconnect, using Cache Fusion to ship blocks between node memories. Clients connect through the SCAN

listener and node VIPs, so a failed node's sessions are redirected to survivors.



What that buys you:





  • Instance and node resilience. If a node dies, the surviving instances keep serving the same
    database. There's no "restore" and no "fail over to a copy" — the data was already open on the other
    nodes.


  • Online scale-out for reads and writes. Add a node, add capacity, without re-architecting.


  • Rolling maintenance. Patch or relocate one node at a time while the service stays up.


  • Brownout masking. With application services and Application Continuity / TAF, in-flight work can
    be replayed or transparently redirected during a node loss.



You check on it with Clusterware and srvctl:




CODE
# Cluster resource overview
crsctl status resource -t

# Is the database up, and on which instances?
srvctl status database -d ORCLCDB

# Service placement (services are how you steer connections across nodes)
srvctl status service -d ORCLCDB






Now the part that the "RAC is our DR" crowd misses: every RAC instance points at the same storage.

There is exactly one copy of your data. A storage array failure, a site outage, or a corrupt block is

seen identically by all nodes. RAC gives you redundancy of compute, not redundancy of data.




A composite scenario (illustrative). Picture a shop running a healthy 3-node RAC cluster. Uptime

dashboards are green for two years; leadership is told the database is "fully redundant." Then a SAN

controller pushes bad firmware and the shared LUNs go offline. All three nodes go down at once,

because all three were reading the same storage. The cluster did exactly what it was designed to do —

it just was never designed for that failure. That's not a RAC flaw; it's a design gap.






Licensing and complexity (the honest cost)



RAC is a separately licensed option on top of Oracle Database Enterprise Edition, priced per

processor (or in the cloud, baked into certain shapes/editions). On top of license cost you're taking

on real operational weight: Clusterware, a redundant private interconnect, shared storage (typically

ASM), and the skills to run all of it. That complexity is itself a source of outages if the team isn't

staffed for it — a .





Troubleshooting the usual suspects



When Data Guard misbehaves, it's almost always one of a handful of patterns. The Broker surfaces these as

ORA-16xxx messages — always read the Broker's StatusReport for the specific code and its recommended

action rather than guessing:




CODE
DGMGRL> SHOW CONFIGURATION;                 -- look for WARNING/ERROR
DGMGRL> SHOW DATABASE 'ORCLCDB_STBY' StatusReport;















































Symptom Likely cause Where to look Typical fix
Apply lag climbing, sequence stuck
Archive gap — a missing redo sequence

v$archive_gap, gv$archived_log
Broker/FAL usually auto-resolves; if not, ship the missing logs and re-register
Standby block corruption after a bulk load
NOLOGGING operation on the primary
alert log, v$database.force_logging

ALTER DATABASE FORCE LOGGING; restore affected datafile from primary
Transport lag grows under load Network throughput < redo rate
v$dataguard_stats, redo generation rate
Tune TCP/socket buffers, enable redo transport compression, or use Far Sync
Real-time apply won't start Standby redo logs missing/undersized v$standby_log Add standby redo logs (one more group than online, same size)
Apply stopped after a failover test
Flashback off, can't reinstate
v$database.flashback_on Enable Flashback Database; reinstate via the Broker


The meta-lesson: most "Data Guard is broken" tickets are really forcing logging wasn't set, standby

redo logs were never created
, or the network can't keep up with peak redo. Get those three right at

build time and you'll prevent the majority of incidents.





Test it for real: a DR game-day



A standby you have never failed over to is a hope, not a plan — so put it on a schedule. A practical

cadence is a switchover every quarter (it's lossless and reversible) and a full failover drill at

least annually
. To exercise the application against standby data without disturbing replication, use

a snapshot standby: it opens read-write for testing, then discards its changes and catches back up.




CODE
-- Open the standby read-write for application testing
DGMGRL> CONVERT DATABASE 'ORCLCDB_STBY' TO SNAPSHOT STANDBY;
-- ... run your app test suite against it ...
-- Roll it back and resume keeping pace with the primary
DGMGRL> CONVERT DATABASE 'ORCLCDB_STBY' TO PHYSICAL STANDBY;






A repeatable game-day runbook:





  1. Announce the window and the rollback plan.


  2. Pre-check with VALIDATE DATABASE (Ready for Switchover = Yes).


  3. Execute the switchover (or failover, for the annual drill).


  4. Verify the application actually reconnects through your role-based service — this is the test, not
    the database role itself.


  5. Measure the real RTO and RPO and compare them to target. Numbers, not vibes.


  6. Switch back and confirm the configuration returns to SUCCESS.


  7. Report: measured RTO/RPO, every gap you hit, and the owner/date for each fix.



That report is also the artifact that turns "I think we're covered" into something leadership can

actually rely on — and it's how you find the decommissioned-host-in-the-runbook problem in a drill

instead of during a real outage.





Patching and upgrading without downtime



Here's the payoff most teams undersell: the biggest day-to-day return on HA isn't surviving disasters

— it's making planned maintenance nearly invisible. The same building blocks let you patch and

upgrade with little or no downtime, and that benefit cashes in every single patch cycle.





  • Rolling patches with RAC. Most quarterly Release Updates are RAC-rolling: you patch one node at
    a time while the others keep serving the database. Connections drain off the node you're working on
    (via services with a drain timeout, or Application Continuity) and return when it rejoins. No outage,
    just a brief capacity dip.


  • Standby-first patching. For patches that aren't RAC-rolling, Data Guard gives you another route:
    apply the patch to the standby first, verify it there, switch over to the patched standby, then
    patch the old primary. The application sees one short switchover instead of a maintenance window.
    (Oracle marks which patches are "Standby-First Installable.")


  • Major upgrades with DBMS_ROLLING. A full release upgrade (say 19c → 23ai) normally means real
    downtime. DBMS_ROLLING converts your physical standby into a transient logical standby, upgrades
    it while the primary keeps running, and then switches over — so the application's downtime collapses
    to a single switchover rather than the whole upgrade window:



CODE
-- sketch of a DBMS_ROLLING upgrade, driven from the primary
EXEC DBMS_ROLLING.INIT_PLAN(future_primary => 'ORCLCDB_STBY');
EXEC DBMS_ROLLING.BUILD_PLAN;
EXEC DBMS_ROLLING.START_PLAN; -- standby becomes a transient logical standby
-- ... upgrade the transient logical standby to the new release ...
EXEC DBMS_ROLLING.SWITCHOVER; -- the application flips to the upgraded database
EXEC DBMS_ROLLING.FINISH_PLAN;





The thread tying all three together: planned downtime is a choice, not a law of physics. If your

SLA can't spare a maintenance window, the HA you built for disasters quietly pays for itself every time

you patch.





Try it yourself: a runnable lab



Reading about recovery is one thing; doing it is what builds the reflex. I put together a small lab

you can run on a laptop with nothing but Docker — no Oracle account required — so you can feel the most

important lessons here first-hand. It uses the community Oracle Database Free image and runs

every command inside the container, so you don't even need a local Oracle client.



A quick honesty note about scope, because it maps exactly to this article:





  • RAC isn't something you can meaningfully run on a single laptop. It needs shared storage, a private
    interconnect, and clusterware across nodes — a real cluster, not a container trick. So the lab doesn't
    pretend to.


  • Data Guard is an Enterprise Edition feature, and the zero-login Free image doesn't include it. So
    the no-setup lab focuses on the failure modes you can reproduce — and which this post argues are the
    most commonly mishandled: human error, media loss, and corruption. A separate, opt-in Enterprise
    Edition module covers a real primary/standby switchover and failover for when you want to rehearse
    those too.



Getting started is three commands:




CODE
./run.sh up        # pulls the image and creates the database (first run takes a few minutes)
./run.sh setup # enables archivelog and creates a small demo schema
./run.sh all # runs all three drills end to end






The three drills, and the lesson each one drives home:





  1. Human-error recovery. The lab deletes every row (committed) and then drops the table — two
    perfectly valid statements a standby would have replicated in milliseconds — and recovers both
    locally with Flashback Query and Flashback Table. This is the "replication is not a backup" point
    you can now prove to yourself (and to a skeptical colleague) in thirty seconds.


  2. RMAN backup & restore. Take a backup, take a datafile offline and delete it from disk to simulate
    media failure, then restore and recover just that file while the rest of the database stays open.
    That's the restore-drill muscle this post keeps insisting you build.


  3. Block-corruption detection & recovery. Write garbage into a single on-disk block, detect it with
    RMAN VALIDATE CHECK LOGICAL, and repair it with block media recovery — no full restore needed.



The full lab — the docker compose file, the run.sh driver, every drill script, and the optional

Enterprise Edition Data Guard module — is the ha/ lab in

.

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
Hackers Just Poisoned the Rust Supply Chain | Threat Wire
1 Quelle
Hackers Found a Way Into Humanoid Robots | Threat Wire
1 Quelle
Bits und so #1021 (Passwort für Laufwerk)
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten The Oracle HA Decision Tree: RAC vs Data Guard vs Both

Thematisch verwandte Begriffe: Oracle, Decision, Tree, Data · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...