The IT Managers Guide to Oracle Performance Tuning

upgrade to Oracle 12c

Despite significant advances in the Oracle database optimiser and the supporting platform infrastructure, we as IT Managers still see poor Oracle database performance across a diverse range of workloads.

There are well documented methodologies and tools available to diagnose and resolve Oracle performance problems.

What we don’t see much of are the high-level steps an IT Manager can take to identify causes of poor Oracle performance and usable solutions to resolve Oracle performance problems.

The Business Cost of Poor Oracle Performance

Cost of Poor Oracle Performance

Optimising and tuning Oracle systems for optimal performance is a well-covered topic. There a range of tools and methodologies to help support engineers to resolve system performance issues.

Why, with all of this in place, are there still so many poorly performing Oracle systems – perhaps even yours?

Why is it that with the significant investments made in Oracle technology, many organisations are still constrained by the performance of their database systems?

The answer is, we often don’t understand the underlying business cost.

Oracle eBusiness Suite Virtual Application Tier

Recently I have been involved in a number of cases where the topic of virtualising the Oracle eBS R12 applications tier has been on the agenda. In all cases the target deployment has been on x86_64 infrastructure (combination of blades and stand alone servers) so the virtualisation platform considered has been either VMware or Oracle VM.

Beyond the obvious known benefits of deploying the applications tier – and where relevant the database tier – on virtual infrastructure one additional benefit that does not seem to receive attention is the ability to provision specific applications components to specific servers.

Oracle Analytic SQL Sort Performance Improvements

Oracle Analytic SQL Sort

Recently I have been optimising the Oracle analytic SQL sort operations for a number of queries that make use of the ROLLUP analytic function. The test system was Oracle Database Reviewing the extended SQL trace files to understand exactly where the time for the query was being spent we observed the same type of problem documented in Analytic Agony.

Tracing the sort operations performed by the analytic SQL we noticed the following:

  • Many small sort operations that were completing in memory using less than 80mb sort_area_size.
  • A few very large sort operations that were writing out to temporary tablespace of approximately 8GB in size.

Oracle RMAN Backup of Read Only Plugged-In Tablespace

Oracle RMAN Transport Tablespace Backup Limitations

Oracle RMAN backup of transportable tablespace has a number of limitations for Oracle 10g. Oracle Transportable Tablespace allow for the efficient movement of large volumes of data between Oracle databases. On the whole this works well and once setup is far more efficient data than processing through database links.

What probably is not widely known is that Oracle RMAN in Oracle Database 10gR2 seems to have some difficulty with backup of a plugged in read only tablespace (the default state for a tablespace that is plugged in using transport tablespace).

There are two issues with using Oracle RMAN for backup on 10g when you have plugged in read only tablespace’s that have not been set to read write:

  • RMAN will not backup the datafile’s for the plugged in tablespace.
  • RMAN will not report the datafile’s as part of the ‘report need backup’ or ‘restore database preview check read only’ commands either.

Managing SQL Query Time using Oracle Database Resource Manager

Session Control with Oracle Database Resource Manager

The Oracle Database Resource Manager (DBRM) provides a wealth of functionality to control what user workloads are able to consume server and database resources. I have recently used the DBRM to provide the following functionality to the application:

  • Provide the ability to limit the duration of reports that are run through the DBMS_SCHEDULER.
  • Provide the ability to cancel and/or limit the duration a query submitted from the application user interface can run.

Oracle Database Operational Design Requirements

I spend a lot of time working on issues of performance and scalability for clients systems. The bulk of this work is around database and application transaction processing as these areas typically have the greatest business visibility. An area that does not seem to have the same level of visibility is how operationally efficient these same environments are – not through neglect however, but as a result of operational support requirements not being included as a part of the core requirements during a design phase.

Streamlining Oracle eBusiness Suite Maintenance

Reducing Oracle eBusiness Suite Maintenance Overhead

Streamlining Oracle eBusiness suite maintenance provides opportunities to reduce system downtime and opportunities for human error.

Those who are responsible for maintaining an Oracle eBusiness Suite environment will be familiar with the adpatch, adadmin and adctrl tools. Any patching or maintenance activities on the Oracle eBusiness Suite application tier will usually require running these tools at some point during the maintenance activities.

Running these tools will also present the usual familiar prompts that require the same keystrokes every single time. This can become a fairly tedious exercise even if you have a single APPL_TOP let alone an environment with multiple application tiers and no shared APPL_TOP.

Oracle Database Flashback Physical Standby

Oracle Flashback Physical Standby Database

This third instalment covering some of the flashback features in Oracle 10g takes a look at combining flashback with using a physical standby. I will take a look at two usage scenarios in which I think could offer significant benefit to anyone using Oracle Database Flashback with a physical standby. This post will cover the use of the physical standby as a read/write copy of a production database.

Oracle Flashback Query

Oracle Flashback Query

The next requirement that I found a very good use for Oracle Flashback Query came about as part of a tuning exercise.

I was working through an issue where an application would use a table to temporarily store data before presenting the data to the client program. What was happening was a classic case of incorrect statistics on the table segment resulting in incorrect SQL execution plans.

Even by using the automatic statistics collection features in Oracle Database 10g this problem would not go away. Basically the application performed the following across multiple sessions:

  1. Populate table with data.
  2. Query data to present to user.
  3. Delete data from table.