Skip to main content

Top 5 Performance Tuning Tricks Every Oracle DBA Should Know!

Performance tuning in Oracle Database often focuses on obvious areas like indexes, SQL rewrites etc. But some of the most impactful improvements can come from lesser known techniques.

Here are 5 such tuning tricks that can make a real difference in production environments.


 Use SQL Plan Baselines to Stabilize Performance

Even properly tuned queries in Oracle Database can suddenly degrade when execution plans change due to statistics refreshes or system upgrades.

Using SQL Plan Baselines helps maintain stable and efficient execution plans, preventing unexpected performance regressions especially in highly changing workloads.

SELECT * FROM DBA_SQL_PLAN_BASELINES;

So, don’t just capture baselines, but periodically change them to allow the optimizer to adopt better plans when appropriate.


Use Automatic Indexing

Automatic Indexing is a useful feature in Oracle Database that can improve performance with minimal effort. 

It was introduced in Oracle Database 19c and enhanced in Oracle Database 23ai, making it more reliable for modern systems.

It works by automatically creating and testing indexes in the background and only keeps the ones that actually improve performance.

Often missed part is to check what Oracle rejects, not just what it creates. 

This helps you spot missed optimization opportunities and understand your workload better.

SELECT * FROM DBA_AUTO_INDEX_REPORT;

Reviewing this report gives useful insights for better tuning decisions.


Control Cardinality Feedback & Adaptive Plans

Adaptive features in Oracle Database such as adaptive plans and cardinality feedback can sometimes degrade performance instead of improving it. It’s important to monitor these features especially when you notice queries behaving inconsistently or execution plans changing between runs.

 SELECT * FROM V$SQL WHERE IS_RESOLVED_ADAPTIVE_PLAN = 'N';

If performance varies in critical systems, consider controlling or selectively disabling adaptive features to maintain stable execution plans.


Use Result Cache for Repetitive Queries

In Oracle Database many applications repeatedly run the same queries with identical results. In such cases using the 'Server Result Cache' can significantly improve performance by storing query results in memory and reusing them.

SELECT /*+ RESULT_CACHE */ COUNT(*) FROM stocks;

This reduces CPU usage and I/O, making it especially useful for lookup or reference data.

 Although often underused due to concerns about risks, the result cache is safe and highly effective when properly sized and managed.


Fix “Bad” Bind Variable Usage

Bind variables in Oracle Database improve scalability but they can sometimes cause performance issues. This often shows up as the same query performing differently across executions.

SELECT * FROM V$SQL_CS_SELECTIVITY;

To handle this use bind aware cursor optimization and histograms. In some cases, using literals instead of binds can give better performance so it’s worth testing both approaches.


Above “hidden” tricks in Oracle Database help prevent performance issues, improve overall system stability and get better performance without needing additional hardware.!


Comments

Popular posts from this blog

Setting ORACLE_SID

The  Oracle System ID  ( S ID ) is used to uniquely identify a particular database on a system How to set ORACLE_SID: Windows: set ORACLE_SID=orcl Unix/ Linux: export ORACLE_SID=orcl SID is case sensitive in Unix / Linux environments. How to check the current ORACLE_SID: Windows: Go to the commnand prompt and type as C:\> set ORACLE_SID (This will show if any ORACLE_SID is already set). C:\> set (To know all the parameters set) Unix/ Linux: echo $ORACLE_SID

Using ORADIM to Create Instance on Oracle - Windows Platform

Oradim is an Oracle utility that creates a Service to a database.  If a database is created upon install, or if you use Database Assistant to create a db, it will automatically use this utility to create a service to the db upon creation of the db. If you double click on the Services icon in Control Panel, you will see all the services that are available to the machine. If a machine has a db running on it, you will see a service by the name of OracleService(SID) with a manual or automatic startup type. If the startup is set to automatic, the db will shutdown/startup whenever the machine is restarted, else you will have to shutdown/startup manually.  So you have to use oradim only when you create a database without using the Database Configuration Assistant. You have to use Oradim to create services if you created the database manually.   Example of Oradim to create a service for an 9i database: Create an instance by specifying the following options: (type at comma...