Trusted Digital Transformation Partner
Two databases can run on identical CPU and identical RAM and still perform nothing alike. The difference is almost never the hardware, and it is rarely the SQL alone. Oracle performance is built at every layer — operating system, memory, network, storage, statistics, execution plans and query design — and it is only ever as fast as the weakest one.
In short: Oracle database performance tuning is not just SQL tuning. It is an ecosystem discipline covering five layers: the client and connection pool, the network, the database server itself (SGA, PGA, background processes, storage), the Linux operating system and kernel, and continuous monitoring. The five changes with the largest payoff for the least effort are materialized views in place of repeatedly executed complex views, correct ulimit settings, tuned kernel parameters in sysctl.conf, correctly sized SGA and PGA, and treating tuning as a continuous cycle rather than a one-time fix.
In most organisations, tuning begins the moment users start complaining. The application is slow. The report that used to take two minutes now takes twenty. The database appears to hang at month end. By then the team is reacting to a symptom, and the search inevitably narrows to the last thing that changed — usually a query.
Experienced DBAs work from a different assumption. Performance is not repaired at the SQL level; it is designed in at every level. A powerful engine will not win a race if the tyres are worn, the fuel flow is restricted or the aerodynamics are wrong. An Oracle database behaves in exactly the same way: a well-written query still crawls if the operating system is starving it of file descriptors, if the SGA is too small to hold the working set, or if the storage cannot keep up with the redo it is being asked to write.
If the same expensive joins, aggregations and calculations are executed on every single query, the database is paying the same bill over and over again. A materialized view stores the precomputed result and refreshes it periodically, so the work is done once rather than on every call.
The trade-off is data freshness. Materialized views are best suited to reporting and analytics workloads where real-time accuracy to the second is not mandatory, and where a scheduled or fast refresh is acceptable to the business.
When the operating system says there are no more files or processes available, the database cannot continue by force of will. Oracle processes need generous limits on open files, user processes and stack size to handle real concurrency, and the defaults on most Linux builds are set for a general-purpose server, not a database server.
Typical minimum values in /etc/security/limits.conf for an Oracle installation are:
soft nofile 4096
hard nofile 65536
soft nproc 2047
hard nproc 16384
soft stack 10240
hard stack 16384
Setting nofile, nproc and stack correctly lets Oracle carry higher workloads without hitting artificial ceilings. Always confirm the required values against the installation guide for your specific Oracle release and platform, as they do change between versions.
Many DBAs spend hours tuning inside Oracle and never look at the operating system underneath it. Kernel settings govern shared memory, semaphores, file descriptors, network buffers and HugePages — every one of which the database depends on.
Two entries in /etc/sysctl.conf matter more than most:
kernel.sem = 256 32000 100 142
kernel.shmmax = <half of physical memory, in bytes>
kernel.shmmax should be set to half the size of physical memory expressed in bytes, subject to the minimum required by your Oracle version (commonly 4294967295 bytes). Getting this wrong does not always produce an obvious error — it can quietly prevent the instance from allocating the SGA it was configured for, which then looks like a memory problem inside Oracle when the cause is entirely outside it. On systems with a large SGA, enabling HugePages is one of the highest-return kernel-level changes available.
Bigger is not automatically better and smaller is not automatically faster. The objective is the right size for the actual workload, arrived at by measurement rather than by rounding up.
Correct memory sizing directly reduces:
Oversizing carries its own cost: memory taken from the operating system and other processes, longer instance startup, and in some cases more contention rather than less. Use AWR and ASH data to size against the workload you actually have.
Performance tuning is not a one-time activity that is finished when the ticket closes. Workloads grow, data volumes shift, statistics go stale and execution plans change underneath you. The discipline that separates proactive teams from reactive ones is a continuous loop: measure, analyse, optimise, monitor, repeat.
Reactive DBAs tune when someone complains. Proactive DBAs already know which SQL has regressed, which wait event is climbing week on week, and which segment is about to outgrow its storage — because they never stopped measuring.
When a database is slow, the instinct is to look at the database. But the root cause frequently lives somewhere else entirely:
SQL tuning matters. It simply is not the only thing that matters. When every layer is tuned in concert, Oracle stops being something you fight with and starts performing effortlessly under load.
ROSTAN is an Oracle Gold Partner. Our DBA team reviews performance across the entire stack — operating system, kernel, memory, storage, statistics, execution plans and SQL — and delivers a prioritised, measurable tuning plan rather than a list of queries to rewrite. Talk to our Oracle database team.
Most Oracle performance problems do not start inside Oracle. We tune the whole ecosystem — SGA and PGA sizing, kernel parameters, storage and SQL.
See our Oracle EBS practiceTalk to our certified experts — free consultation, no commitment.
Powered by AI · Typically replies instantly