Skip to content
WaitScope Sign in Request access (by email) Menu

Objects with the most wait and the object page

The objects that added up the most wait in the trace and the page of each one in the console, with ready-made queries to run on the trace's database.

Applies to: 10046 traces with waits (level 8 or 12), console 1.7.0

The objects section tells which tables and indexes the session waited on. In the console, each object opens a page with ready-made queries for you to run on the trace's database and get to know the object: owner, columns, indexes and statistics.

What the section shows

The Objects with the most wait time section (in the index, Objects) lists the objects that added up the most wait time, from most to least. The object comes from the obj# of the WAIT lines; the name comes from the STAT lines of the trace itself, when the object appears in a plan. The section appears only when some wait carries obj#.

How to read it

Objects with the most wait time columns
ColumnWhat it says
obj#The object_id of the object in the trace's database. In the console, it leads to the object page; in the downloaded HTML, to the object detail in the file itself, with the type, the wait and where the object appears in the trace, without the ready-made queries.
NameThe name the trace's plan gives the object. Blank when the object does not appear in any plan.
Wait (s)The sum of the waits with that obj#.
OccurrencesHow many waits there were.
Top eventsThe events that added up the most time on the object, from most to least.

Read the object together with the events: reads (db file sequential read, db file scattered read) point to how the plan accesses the object; locks and contention (enq: TX - row lock contention, buffer busy waits) point to other sessions using the same object.

In the sample report, object 50, table T, adds up 0.001 s in 2 db file sequential read reads.

The object page

In the console, the object page opens from the obj# in this section, from the obj column of the plan and from the object_id in the deadlocks. The title is Object N with the name, and the line below gives the type (table, index, view or sequence, from the plan operation) and on which database to run the queries: the instance, the container (PDB) and the service of the trace. The queries use the DBA_ views; without that privilege, switch to ALL_.

When the trace does not give the type, a warning asks you to start with the identification query, because the table and index queries return rows only for the matching type. The Where it appears in the trace card lists the plan operations that use the object, such as Statement #1, operation 1, with a link to the plan row.

Object page queries
BlockAppears forWhat it returns
Identify the objectevery objectOwner, name, type and status, from dba_objects.
Table: owner, name and columnstable or unknown typeThe columns, with the statistics of each one.
Table: indexes and their columnstable or unknown typeThe indexes of the table, with the columns in index order.
Index: details, table and columnsindex or unknown typeHeight, leaf blocks, clustering factor and columns.
View: columns and textviewThe columns and the text of the view.
Sequence: cache and last numbersequenceThe cache and the last number of the sequence.

Each block has the Copy button. The first query, with object 50 from the sample, is this one:

select owner, object_name, subobject_name, object_type, status, created, last_ddl_time
  from dba_objects
 where object_id = 50;

For tables and indexes, the Statistics section has blocks to refresh the statistics and to restore them from the backup: Refresh table statistics, Restore table statistics from backup and the two index equivalents.

  • Before gathering, the block saves the current statistics in SYSTEM.JB_BACKUP_STATS and shows the backup statid. The restore block uses that statid.
  • The gathering uses no_invalidate => FALSE and runs with degree 1. Change c_paralelo to TRUE to use more processes, on Enterprise Edition only.
  • Run as SYS or as a user with ANALYZE ANY and access to the data dictionary.

The object_id belongs to the trace's database: in another database, the same number is a different object. When the trace has the name, the statistics block stops with an error if the name in the database is different. The gathering reads the whole object and invalidates the cursors that use it, which then hard parse again: pick the time window carefully in production.

From the PL/SQL stack of a deadlock, the same page opens for the PL/SQL object, with Object details (without the body), Objects it uses, Parameters, Object body and the excerpt from 10 lines before to 10 lines after the stack line.

When it is a concern

  • One object concentrates most of the wait: that is where the plan or the concurrency weighs. Go to the operations that use it, through the Where it appears in the trace card.
  • Many reads on an index or a large table: check whether the statement's filter is selective and whether the index has the right columns, with the table and index queries.
  • Lock waits on an object: another session holds rows or the table (lock held by another session).
  • Old or missing statistics in the table query, with a wrong estimate in the plan: candidates for a refresh (wrong row estimate).

Where to go next

Updated on 2026-10-29. Report an error on this page