Skip to content
NyverraNyverra
Articles
⌘K
HomeArticlesCorporate site
🇺🇸
Nyverra

Editorial channel

Articles on technology, operations and partners — infrastructure, monitoring and critical environments.

Social media

Explore

  • Home
  • Articles
  • Categories
  • Tags
  • Authors
  • About
  • Contact
  • RSS
  • Corporate site

Nyverra

  • Our services
  • Case studies
  • Partners

Contact

Email[email protected]WhatsApp(62) 99309-1592Client portalITSM · tickets and SLA

Rua RB 18, S/N — Casa 01, Sala 01 · Residencial Buriti · Senador Canedo – GO, Brazil · ZIP 75260-459

Hours: Mon–Fri, 8am–6pm

© 2026 Nyverra. All rights reserved.

CNPJ: 61.571.209/0001-08 · State registration: 20.291.265-5 · D-U-N-S®: 57-323-5796

blog.nyverra.com.br

Terms of usePrivacyCookies
Back to top

Slow Database Isn't Always the Database: Anatomy of Oracle Performance Troubleshooting

"The database is slow" is probably the most common — and most imprecise — phrase that reaches any DBA or infrastructure administrator. It describes a symptom, not a diagnosis. And the most common trap in performance troubleshooting is to start the investigation inside the database, when, in a good portion of real cases, the root cause lies in a completely different layer: storage, operating system, or network.

This article goes through, in a structured way, how to investigate a real and recurring case in Oracle environments: generalized slowness caused by disk I/O saturation, with symptoms that appear in the database but originate in the infrastructure beneath it. The goal is not a command tutorial — it is to show the investigation logic that separates those who solve the cause from those who only treat the symptom.

In this article

  1. The symptom: "database" slowness with no apparent change

  2. Why the instinct to look only at Oracle often misses the diagnosis

  3. Layer 1: what the operating system is already telling you

  4. Processes in uninterruptible sleep — the most revealing signal

  5. Layer 2: going down to storage and ASM

  6. Layer 3: returning to Oracle with a hypothesis, not a guess

  7. The general pattern: from the outside in, not from the inside out

  8. Why this matters even for those who are not DBAs

  9. Conclusion

The symptom: "database" slowness with no apparent change {#sintoma}

The typical scenario: a system that was working normally starts to show perceptible slowness — screens taking longer to load, reports that used to take seconds now taking minutes, batch processing queues falling behind. No apparent change was made: no new deploy, no configuration change, no sudden increase in users.

It is precisely this "nothing changed, but it got worse" that usually indicates a problem of underlying infrastructure degrading gradually — not a problem of application logic or poorly written query, which typically appears more abruptly and correlated with a specific deploy.

Why the instinct to look only at Oracle often misses the diagnosis {#instinto}

When "the database is slow", the most natural path is to open Oracle Enterprise Manager or run an active session query and look for slow queries. That is not wrong — but it is insufficient when the problem is not the query, but the hardware that supports the query.

An Oracle database, ultimately, is an operating system process making read and write calls to disk. If the disk is saturated, every I/O operation becomes slower — not a specific query, but the entire database, proportionally to how much each operation depends on read/write. This produces a very specific symptom pattern: generalized slowness, without an isolated "culprit" query, and without correlation with code changes.

Layer 1: what the operating system is already telling you {#camada-so}

Before any Oracle-specific tool, the Linux operating system already carries direct evidence of I/O saturation, through basic tools:

  • iostat -x: shows disk utilization, average wait time (await) and utilization percentage (%util) per device. When %util consistently approaches 100% and await rises abnormally, the disk is the bottleneck — not the CPU, not the memory.

  • vmstat: reveals how many processes are waiting in the run queue (r) and, more importantly in this scenario, how many are blocked waiting for I/O (b). A high and persistent number in the b column is direct evidence of processes stuck waiting for storage response.

  • top/htop: here the most revealing signal usually appears in the process states, detailed below.

Processes in uninterruptible sleep — the most revealing signal {#uninterruptible-sleep}

In Linux systems, every process has a state. The most common are running (R, executing or ready to execute) and sleeping (S, waiting for some event, in an interruptible way). However, there is a third state frequently ignored: D — uninterruptible sleep.

A process in D state is waiting for a low-level I/O operation to finish — and, by definition, cannot be interrupted even by a kernel signal while in that state. This means that not even a kill -9 can resolve a process stuck in D: the process will not respond until the disk operation it is waiting for finally completes (or fails).

When one observes multiple Oracle processes simultaneously in D state, persistently (not an isolated one-second spike), this is practically direct evidence that the storage subsystem is not responding at the speed the database is demanding from it. In other words: Oracle is not slow because it is misconfigured — it is slow because it is waiting for the disk, and the disk is not delivering.

That is the typical turning point of an investigation: moving away from the question "what is wrong in the database configuration?" to "what is happening in the storage layer beneath it?".

Layer 2: going down to storage and ASM {#camada-storage}

In Oracle environments, it is common for storage to be managed by ASM — Automatic Storage Management, an Oracle-specific layer that abstracts physical disks into disk groups. When suspicion points to I/O saturation, the investigation in ASM and the storage layer usually follows this sequence:

  • Check if any disk in the disk group has disappeared or is in degraded state. A disk that falls out of a redundant disk group (normal/high redundancy) does not immediately bring down the database — but it reduces the available I/O capacity and forces ASM to redistribute load over the remaining disks, creating exactly the saturation pattern observed.

  • Check the health of the RAID controller (in environments with hardware RAID, such as LSI/Broadcom MegaRAID controllers) — a physical disk failing or in rebuild process consumes significant I/O bandwidth from the controller itself, competing directly with the normal operations of the database.

  • Assess whether the data volume simply grew beyond the IOPS capacity originally sized — this is the "healthiest" scenario to discover, because it means the infrastructure was correct for the previous volume, and now needs expansion — not correction of an error.

This process of elimination is what transforms "the database is slow" into a concrete and actionable diagnosis: "disk group X lost a disk and is operating in degraded mode, overloading the remaining disks", for example — a phrase that already indicates exactly which action corrects the problem.

Layer 3: returning to Oracle with a hypothesis, not a guess {#camada-oracle}

Only after eliminating (or confirming) the infrastructure hypothesis does it make sense to return to Oracle-specific instrumentation — now with a much more precise question than "why is it slow":

  • AWR (Automatic Workload Repository) and ASH (Active Session History): allow confirming, with historical data from the database itself, whether the dominant wait events during the slowness period are I/O events (such as db file sequential read or db file scattered read in abnormal volume) — which corroborates the storage hypothesis — or events of another nature (lock, CPU contention, excessive parsing), which would indicate a different cause.

  • V$SESSION and V$SESSION_WAIT: show in real time what each active session is waiting for — useful for confirming, at the exact moment of the incident, that multiple sessions are stuck on the same type of I/O wait.

This order of investigation — operating system, then storage/ASM, then Oracle-specific instrumentation — is what avoids the most costly error in troubleshooting: spending hours adjusting database parameters (memory, cache, execution plans) for a problem that, at its origin, is a failing physical disk or an overloaded RAID controller.

The general pattern: from the outside in, not from the inside out {#padrao-geral}

Generalizing the specific case of I/O, there is a troubleshooting principle that applies to practically any "slow system" in production:

  1. Confirm the symptom with data, not perception — "it's slow" must become "latency went from X to Y" or "response time doubled at 2pm".

  2. Look at the infrastructure beneath the application before looking at the application — operating system, storage, network, virtualization. In a good portion of real cases, that is where the cause is.

  3. Only after that, investigate the specific software layer (database, application, code) — now with hypotheses already reduced by the previous elimination process.

This pattern is the opposite of the most common instinct, which is to directly open the tool of the most visible layer (the database itself, the system itself) and look for the problem there first — which usually leads to adjustments that solve nothing, because the cause was never in that layer.

Why this matters even for those who are not DBAs {#por-que-importa}

For an IT manager or business owner who won't get their hands on iostat or AWR, the practical point of this article is another: the quality of database troubleshooting depends on depth in multiple layers — operating system, storage, virtualization, and the database itself — not just on knowledge of SQL or Oracle administration in isolation.

This is, in fact, a legitimate criterion for evaluating a support vendor or infrastructure partner: the right question is not just "do you know Oracle?", but "when the database is slow, do you know how to investigate beneath it, or only inside it?" The difference between these two answers is frequently the difference between resolving an incident in one hour or spending days adjusting parameters that were never the real cause.

Conclusion {#conclusao}

Database slowness rarely originates inside the database. It originates in the layer that sustains the database — and only manifests there, because that is where the user feels the effect. Efficient troubleshooting follows the reverse path of the symptom: from the operating system to storage, from storage to ASM, and only then, with a formed hypothesis, into Oracle itself.

It is this type of depth — understanding not only SQL and tuning, but the hardware, operating system, and virtualization behind the database — that separates a correct diagnosis from a sequence of trial and error.

Nyverra operates and supports critical database environments — Oracle, PostgreSQL, MariaDB, and SQL Server — with troubleshooting that goes from the application layer down to physical storage. Learn about the complete solution at nyverra.com.br/pt-br/services.

Share

Keep reading

Read also

  • StorCLI - Complete Cheat Sheet

    StorCLI - Complete Cheat Sheet

    StorCLI is the official and modern tool for managing Broadcom/LSI RAID controllers. This guide covers essential commands, syntax and use cases.

    31 de outubro de 202612 min de leitura
  • Business Services in Nyverra Portal: Translating IT into Business
    Portal ITSM

    Business Services in Nyverra Portal: Translating IT into Business

    The business doesn't feel a server go down — it feels email stop. The Business Services (Service Mapping) module of Nyverra ITSM Portal connects services like Email, ERP or PACS to CMDB assets, revealing the real impact of each failure.

    31 de outubro de 20265 min de leitura
  • RPO vs RTO: How to Define Before Buying Backup (and Why Most Companies Get It Wrong)
    Segurança

    RPO vs RTO: How to Define Before Buying Backup (and Why Most Companies Get It Wrong)

    Most companies buy backup asking the wrong question: "how much does it cost?". The right question is: how much data can I lose (RPO) and how long can I be down (RTO). Discover how to define these numbers per system and avoid purchasing protection based on price, not on real need.

    31 de outubro de 20269 min de leitura

Comments

No comments yet

Be the first to share your thoughts on this article.

Leave a comment

Newsletter

Get new articles

Subscribe to receive Nyverra blog posts in your inbox. We will send a confirmation link.

​
  1. Home
  2. Armazenamento
  3. Slow Database Isn't Always the Database: Anatomy of Oracle Performance Troubleshooting
ArmazenamentoTutoriais
#linux#storage#tutorial#Observabilidade#Administração de Sistemas

Slow Database Isn't Always the Database: Anatomy of Oracle Performance Troubleshooting

Wedson LopesWedson Lopes
31 de outubro de 20269 min de leitura