Oracle Database Deep Health Check Checklist
Recommended assessment levels
| Level | Purpose | Typical scope |
|---|---|---|
| L1 | Operational health | Availability, space, backup, alert log |
| L2 | DBA health | Objects, jobs, sessions, memory, RMAN, Data Guard |
| L3 | Performance health | AWR, SQL, waits, I/O, redo, RAC, concurrency |
| L4 | Architecture/risk | HA/DR, capacity, security, recoverability, OS/ASM/design |
A proper architecture assessment should reach L4.
1. Database / Instance Health
1.1 Database state
Check:
- Instance status
- Database open mode
- Database role
- Restricted mode
- ARCHIVELOG mode
- FORCE LOGGING
- Flashback status
- Startup time
- Database version/RU
- CDB status
Validate
Healthy
- Instance OPEN
- Primary = READ WRITE
- Physical standby normally MOUNTED or READ ONLY WITH APPLY depending on design
- No unexpected restart
Investigate
- Unexpected startup time
- Restricted login
- Instance recovery
- ARCHIVELOG disabled on a database requiring PITR/DR
- FORCE LOGGING disabled where Data Guard/design requires it
2. Oracle Version and Patch Health
Check:
Validate:
- Database RU level
- GI RU level
- OPatch inventory
- SQL patch inventory
- Failed datapatch components
- GI/DB home consistency
- Out-of-place patching strategy
- One-off conflicts
- Unsupported database version
Also compare:
against:
A mismatch deserves investigation.
3. CDB/PDB Health
Especially important for your multitenant environments.
Check:
- PDB open state
- SAVE STATE
- Restricted PDBs
- PDB startup failures
- PDB service configuration
- Resource plans
- PDB space utilization
- Local undo configuration
- PDB violations
Red flag: unresolved ERROR-level compatibility/plugin violations.
4. Tablespace Health
A health check should consider both percentage utilization and remaining GB.
Example:
A commonly used operational starting point is:
<80%normal80–90%investigate/growth watch>90%action
However, do not judge a very large tablespace by percentage alone. A multi-terabyte tablespace at 90% could still have substantial free space.
Check additionally:
- Autoextend
- MAXSIZE
- Remaining filesystem/ASM space
- SYSTEM
- SYSAUX
- UNDO
- TEMP
- Bigfile tablespaces
- Read-only tablespaces
- Offline datafiles
5. Datafile Health
Check:
- Offline files
- Recover status
- Autoextend
- Maximum file size
- Storage headroom underneath autoextend
- Uneven datafile growth
- Excessive datafile count
Also:
Ideally no unexpected rows.
6. ASM Health
For ASM environments check:
Check:
- Diskgroup mounted
- Disk failures
- Rebalance operation
- Usable space
- ASM redundancy
- Failure-group distribution
- OCR/Voting disk placement
- FRA/data separation where architecture requires it
Unexpected long-running rebalance activity needs review.
7. TEMP Health
Check current TEMP configuration:
Investigate:
- TEMP exhaustion
- Large TEMP consumers
- SQL spilling repeatedly to TEMP
- Sort/hash pressure
- Parallel queries consuming TEMP
- ETL/reporting peaks
TEMP problems should also be correlated with PGA sizing rather than solved only by adding TEMP.
8. UNDO Health
Look especially at:
NOSPACEERRCNTSSOLDERRCNTMAXQUERYLEN- Undo retention
- Long-running transactions
- Flashback requirements
Repeated ORA-01555 should trigger workload/undo-retention analysis, not blindly increasing UNDO.
9. Redo Log Architecture
Check:
and:
Validate:
- Correct multiplexing
- Group sizes
- Group counts
- RAC thread configuration
- Member failures
- Log switch frequency
Ideally review:
Frequent switches can indicate undersized redo logs or unusually high redo generation.
10. FRA Health
Also:
Check:
- Archive logs
- Backups
- Flashback logs
- Guaranteed restore points
- Reclaimable space
- FRA growth rate
A stuck archive process combined with FRA exhaustion can ultimately affect database availability.
11. Alert Log / ADR Health
This is one of the highest-value checks.
Search for:
SQL:
Do not treat every ORA message equally. Classify findings into:
Critical / Major / Warning / Informational
12. Invalid Objects
Compare to baseline.
Investigate:
- Newly invalid objects
- Application packages
- SYS/SYSTEM invalid objects
- Materialized views
- Synonyms/dependencies
Avoid automatically assuming every invalid object is an outage risk.
13. Unusable Indexes
Particularly important after:
- Partition maintenance
- ETL
- Large data loads
- Direct-path operations
- Maintenance activities
14. Statistics Health
Given your recent focus on stale statistics, I would make this an explicit health-check category.
Check:
- Stale table statistics
- Stale partition statistics
- Missing statistics
- Global vs partition stats
- Incremental statistics
- Histogram usage
- Modification rate
- Auto stats job success
- Stats gathering duration
- Concurrent statistics jobs
15. Scheduler Health
Failures:
Look for:
- FAILURES
- BROKEN jobs
- Runtime increase
- Jobs not executing
- Overlapping jobs
- Stats/backup/batch contention
16. Blocking / Locking Health
Empty is good at that instant.
Then investigate:
- TX row lock contention
- TM contention
- DDL locks
- Long transactions
- Hot rows
- Application commit behavior
One long transaction can block application activity without necessarily generating an obvious database error.
17. Long-Running SQL
Compare against the normal workload baseline rather than adopting an arbitrary “30-minute SQL = bad” rule.
18. Wait Event Analysis
Start with:
Then assess important waits such as:
db file sequential readdb file scattered readdirect path readdirect path write templog file synclog file parallel writeenq: TX - row lock contentionbuffer busy waitsread by other session- RAC
gcwaits
Do not tune purely from cumulative v$system_event. For serious diagnosis use an AWR interval representing the affected period.
19. AWR Deep Health Assessment
This is where I would move from DBA health check to Architect-level performance review.
Review:
Workload
- DB Time
- DB CPU
- Executions
- Transactions/s
- Logical reads
- Physical reads
- Redo/sec
- Parses
- Hard parses
Load profile
Compare:
against historical normal periods.
Top foreground events
Identify whether time is dominated by:
- CPU
- User I/O
- Commit
- Concurrency
- Cluster
- Configuration
- Network
SQL assessment
Review top SQL by:
- DB Time
- CPU
- Elapsed time
- Buffer gets
- Physical reads
- Executions
- Parse calls
- Version count
The key question is not merely “what is the highest SQL?” but:
Why did its contribution change from the normal baseline?
20. Execution Plan Stability
Check important SQL for:
- Multiple Plan Hash Values
- Sudden plan change
- Cardinality errors
- New full scans
- Join-method changes
- Statistics-triggered plan changes
- Bind sensitivity
- Adaptive cursor behavior
- SQL Profile
- SQL Plan Baseline
Architecture health should include performance stability, not only current performance.
21. Shared Pool / Cursor Health
Investigate:
- Hard parse percentage
- Parse-to-execute ratio
- Cursor invalidations
- Reloads
- Version count
ORA-04031- Excessive child cursors
Useful:
22. SGA Health
Review:
- Buffer cache
- Shared pool
- Large pool
- Java pool
- Streams pool
- ASMM/AMM configuration
Also compare SGA allocation against:
- server RAM
- HugePages
- NUMA architecture
- other instances on host
23. PGA Health
Review:
- PGA allocated
- Maximum allocated
- Over-allocation
- Workarea executions
- TEMP spill behavior
pga_aggregate_targetpga_aggregate_limit
High TEMP activity + poor optimal workarea execution can point toward PGA/workarea pressure.
24. CPU Health
At database level review:
- DB CPU
- CPU wait
- Run queue
- Host CPU
- Oracle process CPU
- Top SQL CPU
- Parallel workload
At OS/AIX level additionally assess:
This is especially important for the IBM Power/LPAR environments you've been reviewing.
A database CPU problem may actually be:
Oracle workload → LPAR entitlement constraint → processor pool contention
rather than a database parameter problem.
25. Linux/AIX Memory Health
Check:
For Linux:
For AIX:
Critical question:
Is Oracle being paged/swapped?
That requires immediate investigation.
26. Storage / I/O Health
Review at least:
- Read latency
- Write latency
- IOPS
- Throughput
- Queue depth
- ASM disk latency
- Datafile latency
- Redo latency
- TEMP latency
27. Commit / Redo Performance
Given the commit-behavior work you've been doing, I would give this its own section.
Correlate:
Interpretation pattern:
High log file sync + low redo-write latency
→ investigate application commit frequency/concurrency.
High log file sync + high log file parallel write
→ investigate redo I/O path.
Never diagnose commit performance using only one wait event.
28. RAC Health
For RAC check:
- All instances online
- Services correctly distributed
- Interconnect health
- Global Cache waits
- Instance affinity
- Service failover
- VIP/SCAN
- Clusterware resources
- Node eviction history
Database:
29. Data Guard Health
Essential checks:
Check:
- Transport lag
- Apply lag
- MRP
- Archive gaps
- Broker configuration
- Standby redo logs
- Protection mode
- Flashback
- Apply rate
- DR connectivity
30. RMAN Backup Health
Do not stop at:
Backup completed successfully.
Check:
Assess:
- Level 0
- Level 1
- Archive backup
- Controlfile backup
- SPFILE backup
- Backup duration
- Failed jobs
- Backup growth
- Retention policy
- Crosscheck
- Obsolete backups
31. Corruption Detection
Check:
Also include appropriate RMAN validation processes in the recovery assurance program.
Any confirmed corruption should be Critical until scope and recoverability are understood.
32. Security Health
At minimum:
Check:
- Open default accounts
- Default passwords
- DBA grants
- ANY privileges
- SYSDBA access
- Password profiles
- Dormant users
- Failed logins
- Unified auditing
- Audit retention
- TDE
- Wallet/keystore
- Listener exposure
33. Listener / Network Health
Check:
Review:
- Service registration
- Handler count
- Listener errors
- TNS timeouts
- Connection storms
- DNS dependency
- SCAN/VIP for RAC
- SQL*Net encryption policy
- Firewall idle timeout
- Connection-pool behavior
Network problems frequently appear to applications as “database slowness”.
34. Database Links
Review:
- Invalid links
- Obsolete target systems
- Security exposure
- Password handling
- Production → lower environment links
- Remote dependency risk
35. Materialized Views
Check:
- Failed refreshes
- Stale MVs
- Increasing refresh duration
- Broken chains/dependencies
36. Capacity / Growth Analysis
A mature health check should answer:
When will we run out of capacity?
Trend:
- Database size
- Tablespace growth
- ASM consumption
- FRA growth
- Archive generation
- Backup size
- TEMP peak
- Session growth
- CPU
- memory
- IOPS
Forecast separately for:
Do not simply extrapolate one abnormal day. Use historical workload trends.
37. Configuration / Parameter Review
Capture:
Review non-default parameters.
Pay special attention to:
Do not recommend parameter changes simply because a parameter is non-default.
Every change should have:
Finding → Evidence → Impact → Recommendation → Risk → Rollback
38. Dictionary / Component Health
Anything unexpectedly INVALID requires investigation.
39. Architectural Resilience Review
This separates an operational health check from an architecture assessment.
Check:
Single points of failure
- Single DB node?
- Single ASM failure group?
- Single storage path?
- Single listener path?
- Single backup destination?
- Single geographical location?
- DR connectivity dependency?
Recovery design
Document:
A backup strategy without demonstrated recovery is incomplete.
40. OEM / Monitoring Health
Validate:
- Database target status
- Host target
- ASM
- Cluster
- Listener
- Data Guard
- Tablespace threshold
- FRA alert
- CPU
- filesystem
- blocking session
- backup
- archive gap
- scheduler failure alerts
Also review:
- stale incidents
- alert storms
- permanently suppressed alerts
- incorrect thresholds
- monitoring blackout left active
Recommended Final Health Score
Recommend scoring by domain instead of producing one misleading overall percentage.
| Area | Suggested status |
|---|---|
| Availability | Green / Amber / Red |
| Backup & Recovery | Green / Amber / Red |
| Data Guard / HA | Green / Amber / Red |
| Storage | Green / Amber / Red |
| Performance | Green / Amber / Red |
| CPU | Green / Amber / Red |
| Memory | Green / Amber / Red |
| SQL | Green / Amber / Red |
| Statistics | Green / Amber / Red |
| Objects | Green / Amber / Red |
| Security | Green / Amber / Red |
| Patch/Version | Green / Amber / Red |
| Capacity | Green / Amber / Red |
| Monitoring | Green / Amber / Red |
Then assign each finding:
🔴 Critical
Possible outage, corruption, data-loss or recovery failure.
🟠High
Material production risk requiring remediation.
🟡 Medium
Health degradation or developing capacity/performance issue.
🔵 Low
Optimization or best-practice improvement.
🟢 Healthy
No material issue observed.
Architect-Level Structure
1. Executive Summary
Overall DB health and top risks.
2. Critical Findings
Anything that threatens:
- Availability
- Data integrity
- Recoverability
- Security
- Performance
3. Current Architecture
4. Performance Findings
Each one reported as:
Observation → Evidence → Root-cause hypothesis → Impact → Recommendation
5. Capacity Findings
Current:
DB → Tablespace → ASM → Filesystem → Storage
plus growth projection.
6. HA/DR & Backup
Primary → Data Guard → RMAN → Restore validation
7. Security / Compliance
Accounts, privileges, auditing, TDE, listener/network.
8. Remediation Plan
Classify actions as:
Immediate → 30 days → 90 days → Strategic