|Oracle® Database Performance Tuning Guide
10g Release 1 (10.1)
Part Number B10752-01
Independent I/O, in which there is no timing requirement for transmission, and other processes can be started before the transmission has finished.
Generates a report on the execution path used by the SQL optimizer and the statement execution statistics. The report is useful to monitor and tune the performance of DML statements.
Collects, processes, and maintains performance statistics for problem detection and self-tuning purposes.
A variable in a SQL statement that must be replaced with a valid value, or the address of a value, in order for the statement to successfully execute.
A unit of data transfer between main memory and disk. Many blocks from one section of memory address space form a segment.
The delay in transmission of data, typically when a system's bandwidth cannot support the amount of information being relayed at the speed it is being processed. There are, however, many factors that can create a bottleneck in a system.
A main memory address in which the buffer manager caches currently and recently used data read from disk. Over time, a buffer can hold different blocks. When a new block is needed, the buffer manager can discard an old block and replace it with a new one.
A collection of buffers.
Also known as buffer cache. All buffers and buffer pools.
The part of instance recovery where Oracle applies all committed and uncommitted changes in the redo log files to the affected data blocks. Also known as the rolling forward phase of instance recovery.
A join with no join condition results in a Cartesian product, or a cross product. A Cartesian product is the set of all possible combinations of rows drawn one from each table. In other words, for a join of two tables, each row in one table is matched in turn with every row in the other. A Cartesian product for more than two tables is the result of pairing each row of one table with every row of the Cartesian product of the remaining tables. All other kinds of joins are subsets of Cartesian products effectively created by deriving the Cartesian product and then excluding rows that fail the join condition.
A query that uses set operators (
MINUS) to combine two or more simple or complex statements. Each simple or complex statement in a compound query is called a component query.
When some process has to wait for a resource that is being used by another process.
A collection of database tables and views containing reference information about the database, its structures, and its users. Oracle accesses the data dictionary frequently during the parsing of SQL statements. Two special locations in memory are designated to hold dictionary data. One area is called the data dictionary cache, also known as the row cache because it holds data as rows instead of buffers (which hold entire blocks of data). The other area is the library cache. All Oracle user processes share these two caches for access to data dictionary information.
I/O which bypasses the buffer cache. See "PIO".
A statement that accesses data on two or more distinct nodes/instances of a distributed database. A remote statement accesses data on one remote node of a distributed database.
The views database administrators create on dynamic performance tables (virtual tables that record current database activity). Dynamic performance views are called fixed views because they cannot be altered or removed by the database administrator.
This is another term for a lock.
A join condition containing an equality operator.
Uses statistics to estimate the selectivity, cardinality, and cost of execution plans. The main goal of the estimator is to estimate the overall cost of an execution plan.
A SQL statement that enables examination of the execution plan chosen by the optimizer for DML statements.
PLAN causes the optimizer to choose an execution plan and then to put data describing the plan into a database table.
The automatic application of redo log records to Oracle uncommitted data blocks after a crash or system failure.
A query that selects data from more than one table. A join is characterized by multiple tables in the
FROM clause. Oracle pairs the rows from these tables using the condition specified in the
WHERE clause and returns the resulting rows. This condition is called the join condition and usually compares columns of all the joined tables.
A simple, low-level serialization mechanism to protect shared data structures in the System Global Area.
A memory structure containing shared SQL and PL/SQL areas. The library cache is one of three parts of the shared pool.
Logical I/O. A block read which may or may not be satisfied from the buffer cache.
A constant value, written at compile-time and read-only at run-time. Literals can be accessed quickly, and are used when modification is not necessary.
Mean time between failures. A common database statistic important to tuning I/O.
Maintaining identical copies of data on one or more disks. Typically, mirroring is performed on duplicate hard disks at the operating system level, so that if one of the disks becomes unavailable, the other disk can continue to service requests without interruptions.
A join condition containing something other than an equality operator.
Determines the most efficient way to execute SQL statements by evaluating expressions and translating them into equivalent, quicker expressions. The optimizer formulates a set of execution plans and picks the best one for a SQL statement. See Query Optimizer.
A join condition using the outer join operator (+) with one or more columns of one of the tables. Oracle returns all rows that meet the join condition. Oracle also returns all rows from the table without the outer join operator for which there are no matching rows in the table with the outer join operator.
A technique for increasing the memory space available by moving infrequently-used parts of a program's working memory from main memory to a secondary storage medium, usually a disk. The unit of transfer is called a page.
A hard parse occurs when a SQL statement is executed, and the SQL statement is either not in the shared pool, or it is in the shared pool but it cannot be shared. A SQL statement is not shared if the metadata for the two SQL statements is different. This can happen if a SQL statement is textually identical as a preexisting SQL statement, but the tables referred to in the two statements resolve to physically different tables, or if the optimizer environment is different.
A soft parse occurs when a session attempts to execute a SQL statement, and the statement is already in the shared pool, and it can be used (that is, shared). For a statement to be shared, all data, (including metadata, such as the optimizer execution plan) pertaining to the existing SQL statement must be equally applicable to the current statement being issued.
A call to Oracle to prepare a SQL statement for execution. This includes syntactically checking the SQL statement, optimizing it, and building (or locating) an executable form of that statement.
Performs syntax analysis and semantic analysis of SQL statements, and expands views (referenced in a query) into separate query blocks.
Program Global Area. A nonshared memory region that contains data and control information for a server process, created when the server process is started.
Physical I/O. A block read which could not be satisfied from the buffer cache, either because the block was not present or because the I/O is a direct I/O which bypasses the buffer cache.
Tries out different possible plans for a given query so that the query optimizer can choose the plan with the lowest cost. It explores different plans for a query block by trying out different access paths, join methods, and join orders.
WHERE condition in SQL.
Generates a set of potential execution plans for SQL statements, estimates the cost of each plan, calls the plan generator to generate the plan, compares the costs, and chooses the plan with the lowest cost. This approach is used when the data dictionary has statistics for at least one of the tables accessed by the SQL statements. The query optimizer is made up of the query transformer, the estimator, and the plan generator.
Decides whether to rewrite a user query to generate a better query plan, merges views, and performs subquery unnesting.
Redundant arrays of inexpensive disks. RAID configurations provide improved data reliability with the option of striping (manually distributing data). Different RAID configurations (levels) are chosen based on performance and cost, and are suited to different types of applications, depending on their I/O characteristics.
Rule-based optimizer. Chooses an execution plan for SQL statements based on the access paths available and the ranks of these access paths. If there is more than one way, then the RBO uses the operation with the lowest rank.
Receives the optimal plan from the optimizer and outputs the execution plan for the SQL statement. A row source is an iterative control structure that processes a set of rows in an iterated manner and produces a row set.
A set of extents allocated for a specific type of database object such as a table, index, or cluster.
SELECT statement that involves only a single table.
SELECT statement that references only one table and does not make reference to
System Global Area. A memory region within main memory used to store data for fast access. Oracle uses the shared pool to allocate SGA memory for shared SQL and PL/SQL procedures.
Compiles SQL statements into a shared cursor. The SQL Compiler is made up of the parser, the optimizer, and the row source generator.
A collection of information that enables the query optimizer to create an optimal execution plan for a SQL statement.
Textually identical SQL statements do not differ in any way.
Similar SQL statements differ only due to changing literal values. If the literal values were replaced with bind variables, then the SQL statements would be textually identical.
A basic performance diagnostic tool to help monitor and tune applications running against the Oracle server. SQL Trace lets you assess the efficiency of the SQL statements an application runs and generates statistics for each statement. The trace files produced by this tool are used as input for
A database object that includes one or more SQL statements along with their execution statistics and execution context.
Reads and interprets input files. It is the most efficient way to load large amounts of data.
A set of SQL, PL/SQL, and SQL*Plus scripts that allow the collection, automation, storage, and viewing of performance data. This feature has been replaced by the Automatic Workload Repository.
The interleaving of a related block of data across disks. Proper striping reduces I/O and improves performance.
A diagnostic tool to help monitor and tune applications running against the Oracle Server.
TKPROF primarily processes SQL trace output files and translates them into readable output files, providing a summary of user-level statements and recursive SQL calls for the trace files. It can also assess the efficiency of SQL statements, generate execution plans, and create SQL scripts to store statistics in the database.
The part of instance recovery where Oracle applies the rollback segments to undo the uncommitted changes. Also known as the rolling back phase of instance recovery.
User Global Area. A memory region in the large pool used for user sessions.
Statistics that are incremented by a server process/thread to indicate that it had to wait for an event to complete before being able to continue processing. Wait events are one of the first places for investigation when performing reactive performance tuning.
These events indicate that the server process is waiting because it has no work. These events should be ignored when tuning, because they do not indicate the nature of the performance bottleneck.
A private allocation of memory used for sorts, hash joins, and other operations that are memory-intensive. A sort operator uses a work area (the sort area) to perform the in-memory sort of a set of rows. Similarly, a hash-join operator uses a work area (the hash area) to build a hash table from its left input.