19.1 Idle Events

 < Day Day Up > 



An idle event is idle because nothing is happening. An idle event is a result of a process busy waiting for something else to respond. Idle events are generally insignificant as far as performance is concerned although they can sometimes show a distinct lack of activity, a lack of use of resources, or simply over configuration. High idle times in specific areas such as SQL*Net network usage is quite normal.

However, high idle times on SQL*Net configuration could indicate over-configuration of shared servers for instance or a client process waiting for submission of a command to the database. Over-configuration is not really a problem except that hardware resources are wasted and could be better utilized elsewhere.

All possible database events are listed in the V$EVENT_NAME view. This view contains a lot of entries. Events in this view are applicable to all Oracle software options such as Oracle Replication and Oracle Real Application Clusters. This book covers only Oracle Database tuning and does not delve into Oracle optional applications and architectures other than Oracle Partitioning. My concurrently active OLTP database has specific events in its simulation. These following events using the displayed query are generally idle and irrelevant for anything but information. I can isolate idle events with a query such as this.

SELECT name FROM v$event_name WHERE name LIKE '%null%' OR name LIKE '%timer%' OR name LIKE '%SQL*Net%' OR name LIKE '%rdbms ipc%' OR name LIKE '%ispatcher%' OR name LIKE '%virtual circuit%' OR name LIKE '%PX%' OR name LIKE '%pipe%' OR name LIKE     '%message%' OR name LIKE 'jobq%';
Note 

 Oracle Database 10 Grid   The number of idle events is expanded.

There are a lot of rows returned as idle events so I will not display the results here. The query is placed into a function as shown below for ease of use in queries in the rest of this book against the V$SYSTEM_EVENT performance view. This is the function.

CREATE OR REPLACE FUNCTION IdleEvent(pEvent IN VARCHAR2    DEFAULT NULL) RETURN VARCHAR2 IS       CURSOR cIdleEvents IS             SELECT name FROM v$event_name             WHERE name LIKE '%null%' OR name LIKE                 '%timer%'             OR name LIKE '%SQL*Net%' OR name LIKE '%rdbms                 ipc%'             OR name LIKE '%ispatcher%' OR name LIKE                 '%virtual circuit%'             OR name LIKE '%PX%' OR name LIKE '%pipe%'                 OR name LIKE '%message%' OR name LIKE 'jobq%'; BEGIN       FOR rIdleEvent in cIdleEvents LOOP             IF pEvent = rIdleEvent.name THEN                   RETURN NULL;             END IF;       END LOOP;       RETURN pEvent; EXCEPTION WHEN OTHERS THEN       DBMS_OUTPUT.PUT_LINE(SQLERRM(SQLCODE)); END; / ALTER FUNCTION IdleEvent COMPILE; /
Tip 

If using STATSPACK the STATS$IDLE_EVENTS table can be used.

The only idle events that warrant examination are those to do with Oracle networking software. On rare occasions excessive occurrence of SQL*Net idle events could possibly indicate bottleneck issues with the network. However, as already stated, excessive network activity is often normal. Other chapters in this book cover Oracle network usage tuning.

Another idle event occurring often in my database is the jobq slave wait event. This wait event does not indicate a problem. It occurs because I am executing multiple jobs simultaneously on the same data to simulate a highly active concurrent OLTP database. The intention is to produce tunable problems, which it most certainly does. When the background processes that are used to service jobs find that there are no queued jobs to be processed they will enter into this wait state.

Let's examine significant database and wait events.



 < Day Day Up > 



Oracle High Performance Tuning for 9i and 10g
Oracle High Performance Tuning for 9i and 10g
ISBN: 1555583059
EAN: 2147483647
Year: 2003
Pages: 164

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net