HA/DR Field Kit / ReliabilityOps Open the tool →
Offline database triage · built for teamwork

The right information,
in front of you,
when it breaks.

A single-file triage kit for SQL Server, PostgreSQL/RDS and Oracle Data Guard. No install, no network, never touches your database — it turns read-only query output into decisions.

▶ Getting started — how to use it SQL Server · Always On Oracle DG · RAC new PostgreSQL · RDS Incident Command new
↓ scroll to see how it works — or jump straight into a tool above
Why it exists

The problem isn't "nobody knows what to do."

It's that the critical information is scattered — and you're triaging under pressure.

So the kit is one rule: get vetted, decision-grade information in front of the responder at each stage — fast, offline, and safe to run during an incident.

What it is

A decision tree, not a checklist.

01

You decide — it doesn't decide for you

Every branch surfaces the vetted facts you need, then names the dependencies to check and when to escalate.

02

One self-contained HTML file

No backend, no CDN, no install. Runs from a file share, a USB stick, or an email attachment — the same everywhere.

03

It never touches the database

You run read-only queries yourself and paste the output in. It's a smart document, not an agent — so there's nothing to security-review.

Coverage

One pattern, many domains.

SQL Server · Always On

Failover audit, error triage, query library, AG reference, incident log.

SQL Ops Console

Waits, errors, what's-happening-now during an incident.

AG Fundamentals

The teaching layer — how Always On actually works.

PostgreSQL · RDS · Aurora

The same field-kit approach for the Postgres world.

Oracle Data Guard · RAC new

Redo transport, apply lag, gaps, switchover/failover, clusterware.

Applications new

App-layer triage: errors, latency, timeouts, bad deploys — the signal to check and the likely cause.

Dashboards & Metrics new

Per domain: what to measure, what to look for, how to read it, and Dynatrace setup tips.

Incident Command new

Run the outage: phase flow, what to ask each domain, comms, timeline → postmortem. Not just databases.

Step 1 · Collect

Queries — read-only, copy-paste.

Collection is scripts you run yourself; the thinking happens in the browser. Every query is read-only and commented with where to run it and what healthy looks like.

QueriesDetectSeed
-- Oracle: apply & transport lag (run on the standby)
SELECT name, value, unit, time_computed
FROM   v$dataguard_stats
WHERE  name IN ('apply lag','transport lag');

-- SQL Server: is the AG synchronizing / healthy?
SELECT ag.name, drs.synchronization_state_desc,
       drs.synchronization_health_desc
FROM   sys.dm_hadr_database_replica_states drs
JOIN   sys.availability_groups ag ON ag.group_id = drs.group_id;
Step 2 · Classify

Errors — paste the scary line, get the next move.

Drop in an ORA- code or a SQL error (or a whole chunk of the log). The kit classifies it, tells you what it means, and gives the first move — no tribal knowledge required.

QueriesErrorsReference
ORA-16766Redo Apply (MRP) is stoppedAct

Managed recovery stopped applying redo — the standby drifts behind and isn't a valid failover target until apply restarts.

First move: restart apply — broker EDIT DATABASE '<stby>' SET STATE='APPLY-ON'.

18456Login failed for userWatch

The STATE in the errorlog tells you why. Post-DR, states 11/12/38 usually mean the login or its default DB didn't come over.

First move: read the state from the errorlog, then run the Detect login-transfer instead of fixing one by one.

Step 3 · Context

Reference — the stuff you blank on under pressure.

At 2am you don't remember what "healthy" even looks like. So the tool just tells you, in plain words: here's the thing to check, here's normal, here's the alarm. No digging.

Ask yourselfGoodTrouble
Who's the primary?One clear primaryTwo think they're primary → split-brain
Is the standby keeping up?Lag near zeroLag growing → it's falling behind
Is data reaching the standby?Synced / shippingStopped → your DR is cold, not hot
Safe to fail over?Status says readyAnything else → don't switch yet

The tool carries the exact view names and commands behind each of these — this is just the plain-English version so you always know what you're looking at.

Step 4 · Record

It writes your ticket, too.

Work the tree, hit Add to ticket on the outcome, and the triage becomes a paste-ready incident writeup — symptom, root cause, actions taken. The SQL tool's log exports the same way.

# Oracle DG/RAC incident — DRSQL01 ## Symptom Standby falling behind → Redo isn't arriving → Dest shows an error ## Root cause Redo transport authentication / connection error ## Actions taken - Read dest error in v$archive_dest_status (ORA-16191) - Re-copied primary password file to standby, re-enabled the dest - Confirmed apply lag closed in v$dataguard_stats
Built together

Find a gap? You're not filing a complaint — you're contributing.

💬 Feedback

"A check that's missing, a query that's off, a topic you want covered — it goes straight to me." Every tool carries this button, so corrections happen where the knowledge lives.

Add a domain. Extend a branch. Your domain, your triage logic, vetted by you. That's how it goes from one person's kit to the team's resilience layer.

One consistent pattern across every domain — SQL Server, PostgreSQL, Oracle, incidents — so the whole team works the same way, on practices that are already proven instead of reinventing the fix each time. That consistency is the point: shared muscle memory for the moment it counts.

The ask

Let's close the gaps — together.

5domains covered
1framework to reuse
better with your input
I started it. You make it robust.
Enter SQL Server → Enter Oracle DG → Enter PostgreSQL →