Skip Headers

Oracle9i Administrator's Reference
Release 1 (9.0.1) for UNIX Systems: AIX-Based Systems, Compaq Tru64 UNIX, HP 9000 Series HP-UX, Linux Intel and Sun SPARC Solaris

Part Number A90347-02
Go To Table Of Contents
Contents
Go To Index
Index

Go to previous page Go to next page

2
Tuning for Oracle9i on UNIX

The more your Oracle9i applications increase in complexity, the more you must tune the system to optimize performance and prevent data bottlenecks. This chapter describes how to configure your Oracle9i installation to optimize its performance. It contains the following sections:

Importance of Tuning

Oracle9i is a highly-optimizable software product. Frequent tuning optimizes system performance and prevents data bottlenecks. Although this chapter is written from the perspective of single-node computer systems, most of the performance tuning tips provided here are also valid when using Oracle9i Real Application Clusters and features available with Oracle9i.

Before tuning the system, observe its normal behavior using the tools described in "Operating System Tools".

See Also:

For more information on tuning, see the Oracle9i Real Application Clusters Concepts, Oracle9i Real Application Clusters Administration, and Oracle9i Database Performance Guide and Reference guides. 

Types of Performance Bottlenecks

Performance bottlenecks are often caused by the following:

Operating System Tools

Several operating system tools are available to help you assess database performance and determine database requirements. In addition to providing statistics for Oracle processes, these tools provide statistics for CPU usage, interrupts, swapping, paging, context switching, and I/O for the entire system.

Common Tools

The following sections provide information on common tools:

vmstat

Use the vmstat command to view process, virtual memory, disk, trap, and CPU activity, depending on the switches you supply with the command. Enter one of the following commands to display a summary of CPU activity eight times, at five-second intervals:

The following example shows sample output from the command on Solaris:

procs     memory            page            disk          faults      cpu
 r b w   swap  free  si  so pi po fr de sr f0 s0 s1 s3   in   sy   cs us sy id
 0 0 0   1892  5864   0   0  0  0  0  0  0  0  0  0  0   90   74   24  0  0 99
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  0   46   25   21  0  0 100
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  0   47   20   18  0  0 100
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  2   53   22   20  0  0 100
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  0   87   23   21  0  0 100
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  0   48   41   23  0  0 100
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  0   44   20   18  0  0 100
 0 0 0  85356  8372   0   0  0  0  0  0  0  0  0  0  0   51   71   24  0  0 100

The w column, under the procs column, shows the number of potential processes that have been swapped out and written to disk. If the value is not zero, swapping is occurring and your system is short of memory. The si and so columns indicate the number of swap-ins and swap-outs per second, respectively. Swap-ins and swap-outs should always be zero.


Note:

The output from the vmstat command differs between platforms. See the man page on your platform for information on interpreting the output. 


sar

Use the sar command to display cumulative activity counters in the operating system, depending on the switches that you supply with the command. The following commands display a summary of I/O activity ten times, at ten-second intervals:

$ sar -b 10 10

The following example shows sample output from the command on Solaris:

13:32:45 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s
13:32:55       0      14     100       3      10      69       0       0
13:33:05       0      12     100       4       4       5       0       0
13:33:15       0       1     100       0       0       0       0       0
13:33:25       0       1     100       0       0       0       0       0
13:33:35       0      17     100       5       6       7       0       0
13:33:45       0       1     100       0       0       0       0       0
13:33:55       0       9     100       2       8      80       0       0
13:34:05       0      10     100       4       4       5       0       0
13:34:15       0       7     100       2       2       0       0       0
13:34:25       0       0     100       0       0     100       0       0

Average        0       7     100       2       4      41       0       0


Note:

On Tru64 systems, the sar command is available in the UNIX SVID2 compatibility subset, OSFSVID2400. 


iostat

Use the iostat command to report terminal and disk activity, depending on the switches you supply with the command. The output from the iostat command does not include disk request queues, but it shows which disks are busy. This information is valuable when you must balance I/O loads.

The following command displays terminal and disk activity five times, at five-second intervals:

$ iostat 5 5

The following example shows sample output from the command on Solaris:

tty          fd0           sd0           sd1           sd3          cpu
 tin tout Kps tps serv  Kps tps serv  Kps tps serv  Kps tps serv  us sy wt id
   0    1   0   0    0    0   0   31    0   0   18    3   0   42   0  0  0 99
   0   16   0   0    0    0   0    0    0   0    0    1   0   14   0  0  0 100
   0   16   0   0    0    0   0    0    0   0    0    0   0    0   0  0  0 100
   0   16   0   0    0    0   0    0    0   0    0    0   0    0   0  0  0 100
   0   16   0   0    0    0   0    0    2   0   14   12   2   47   0  0  1 98

Use the iostat command to look for large disk request queues. A request queue shows how long the I/O requests on a particular disk device must wait to be serviced. Request queues are caused by a high volume of I/O requests to that disk or by I/O with long average seek times. Ideally, disk request queues should be at or near zero.

swap, swapinfo, swapon, and lsps

Use the swap, swapinfo, swapon or lsps command to report information on swap space usage. A shortage of swap space can cause slow response times or even cause the system to stop responding. The following table lists the appropriate command to use for your platform:

Platform  Command 

AIX 

lsps -a 

HP 

swapinfo -m 

Linux 

swapon -s 

Solaris 

swap -l 

Tru64 

swapon -s 

The following example shows sample output from the swap -l command on Solaris:

swapfile        dev  swaplo blocks   free
/dev/dsk/c0t3d0s1    32,25      8 197592 162136

Linux Tools

On Linux systems, use the free command to view information on swap space, memory, and buffer usage. A shortage of swap space can result in the system hanging and slow response time.

Solaris Tools

On Solaris systems, use the mpstat command to view statistics for each processor in a multiprocessor system . Each row of the table represents the activity of one processor. The first row summarizes all activity since the last system reboot; each subsequent row summarizes activity for the preceding interval. All values are events per second unless otherwise noted. The arguments are for time intervals between statistics and number of iterations. The following example shows sample output from the mpstat command:

CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0    1    71   21   23    0    0    0    0    55    0   0   0  99
  2    0   0    1    71   21   22    0    0    0    0    54    0   0   0  99
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0    0    61   16   25    0    0    0    0    57    0   0   0 100
  2    1   0    0    72   16   24    0    0    0    0    59    0   0   0 100

AIX Tools

The following sections list tools available on AIX systems.

See Also:

For more information on these tools, see the AIX operating system documentation and man pages. 

AIX System Management Interface Tool

The AIX System Management Interface Tool (SMIT) provides a menu-driven interface to various system administrative and performance tools. Using SMIT, you can navigate through large numbers of tools and focus on the jobs you want to execute.

Base Operation System Tools

The AIX Base Operation System (BOS) contains performance tools that are historically part of UNIX systems or are required to manage the implementation-specific features of AIX. The following table lists the most important BOS tools:

Tool  Description 

lsattr 

Displays the attributes of devices 

lslv 

Displays information about a logical volume or the logical volume allocations of a physical volume 

netstat 

Displays the contents of network-related data structures 

nfsstat 

Displays statistics about Network File System (NFS) and Remote Procedure Call (RPC) activity 

nice 

Changes the initial priority of a process 

no 

Displays or sets network options 

ps 

Displays the status of one or more processes 

reorgvg 

Reorganizes the physical-partition allocation within a volume group 

time 

Prints the elapsed execution, user CPU processing, and system CPU processing time 

trace 

Records and reports selected system events 

AIX Performance Toolbox

The AIX Performance Toolbox (PTX) contains tools for monitoring and tuning system activity locally and remotely. PTX consists of two main components, the PTX Manager and the PTX Agent. The PTX Manager collects and displays data from various systems in the configuration by using the xmperf utility. The PTX Agent collects and transmits data to the PTX Manager by using the xmserd utility. The PTX Agent is also available as a separate product called Performance Aide for AIX.

Both PTX and Performance Aide include the following separate monitoring and tuning tools:

Tool  Description 

fdpr 

Optimizes an executable program for a particular workload 

filemon 

Uses the trace facility to monitor and report the activity of the file system 

fileplace 

Displays the placement of a file's blocks within logical or physical volumes 

lockstat 

Displays statistics about contention for kernel locks 

lvedit 

Facilitates interactive placement of logical volumes within a volume group 

netpmon 

Uses the trace facility to report on network I/O and network-related CPU usage 

rmss 

Simulates systems with various sizes of memory for performance testing 

svmon 

Captures and analyzes information about virtual-memory usage 

syscalls 

Records and counts system calls 

tprof 

Uses the trace facility to report CPU usage at module and source-code-statement levels 

BigFoot 

Reports the memory access patterns of processes 

stem 

Permits subroutine-level entry and exit instrumentation of existing executables 

See Also:

For more information on PTX, refer to the AIX Performance Toolbox for AIX; Guide and Reference 1.2 and 2.

The syntax of some tool commands is also described in the AIX Performance Tuning Guide Version 3.2 and 4

HP Tools

The following sections list tools available on HP systems.

Performance Tuning Tools

The following table lists the tools that you can use for additional performance tuning on HP 9000 Series HP-UX systems:

See Also:

For more information on these tools, see the HP-UX operating system documentation and man pages. 

Tools  Description 

gprof 

Creates an execution profile for programs 

monitor 

Monitors the program counter and calls to certain functions 

netfmt 

Monitors the network 

netstat 

Reports statistics on network performance 

nfsstat 

Reports statistics for each processor 

nettl 

Captures network events or packets by logging and tracing 

prof 

Creates an execution profile of C programs and displays performance statistics for your program, showing where your program is spending most of its execution time 

profil 

Copies program counter information into a buffer 

top 

Displays the top processes on the system and periodically updates the information 

HP Performance Analysis Tools

The following HP-UX performance analysis tools are available:

GlancePlus/UX

This HP-UX utility is an online diagnostic tool that measures the system's activities. GlancePlus displays how system resources are being used. It displays dynamic information about the system's I/O, CPU, and memory usage in a series of screens. You can also use the utility to monitor how individual processes are using resources.

HP PAK

HP Programmer's Analysis Kit (HP PAK) currently consists of two tools, Puma and Thread Trace Visualizer (TTV):

HP PAK is bundled with the HP FORTRAN 77, HP Fortran90, HP C, HP C++, HP ANSI C++, and HP Pascal compilers.

Oracle SQL Tuning Tools

Oracle provides a variety of tools for tuning SQL, including the V$ performance views, the EXPLAIN PLAN command, the SQL TRACE facility, the TKPROF facility, and the Autotrace report.

See Also:

For information on how to use the SQL tuning tools, see the Oracle9i Database Performance Guide and Reference

Tuning Memory Management

Start the memory tuning process by measuring paging and swapping space to determine how much memory is available. After you have determined your system's memory usage, tune the Oracle buffer cache.

The Oracle buffer manager ensures that the more frequently accessed data is cached longer. If you monitor the buffer manager and tune the buffer cache, you can have a significant influence on Oracle9i performance. The optimal Oracle9i buffer size for your system depends on the overall system load and the relative priority of Oracle over other applications.

Allocate Sufficient Swap Space

Try to minimize swapping because it causes significant UNIX overhead. To check for swapping, enter one of the following commands:

If your system is swapping and you must conserve memory:

To determine how much swap space is in use, enter one of the following commands:

Platform  Command 

AIX 

lsps -a 

HP 

swapinfo -m 

Linux 

swapon -s 

Solaris 

swap -l 

Tru64 

swapon -s 

To add swap space to your system, enter one of the following commands:

Platform  Command 

AIX 

chps or mkps 

HP 

swapon 

Linux 

swapon -a 

Solaris 

swap -a 

Tru64 

swapon -a 

Set the swap space to between two and four times the system's physical memory. Monitor the use of swap space and increase it as required.

See Also:

See the operating system documentation for more information on these commands. 

Control Paging

Paging might not present as serious a problem as swapping, because an entire program does not have to be stored in memory to run. A small number of page-outs might not noticeably affect the performance of your system.

To detect excessive paging, run measurements during periods of fast response or idle time to compare against measurements from periods of slow response.

Use the vmstat or sar command to monitor paging. See the man pages or your operating system documentation for information on interpreting the results for your platform. The following columns from the output of this command are important on Solaris:

Column  Description 

vflt/s 

Indicates the number of address translation page faults. Address translation faults occur when a process references a valid page not in memory. 

rclm/s 

Indicates the number of valid pages that have been reclaimed and added to the free list by page-out activity. This value should be zero. 

If your system consistently has excessive page-out activity, consider the following solutions:

Adjust Oracle Block Size

A UNIX system reads entire operating system blocks from the disk. If the database block size is smaller than the UNIX file system buffer size, I/O bandwidth is inefficient. If you adjust the Oracle database block size to be a multiple of the operating system block size, you can increase performance by up to five percent.

The DB_BLOCK_SIZE initialization parameter sets the database block size. You can change the block size by recreating the database.

To see the current value of the DB_BLOCK_SIZE parameter, enter the SHOW PARAMETERS command in SQL*Plus.

Tuning Disk I/O

Balance I/O evenly across all available disks to reduce disk access times. For smaller databases and those not using RAID, ensure that different datafiles and tablespaces are distributed across the available disks.

Choose the Appropriate File System Type

Depending on the operating system that you use, you can choose from a range of file systems. File systems have different characteristics, and the techniques they use to access data can have a substantial impact on database performance. The following table lists typical file system choices and the platforms on which they are available:

File System  Platform  Description 

S5 

AIX, HP, Solaris 

UNIX System V file system 

UFS 

AIX, HP, Solaris, Tru64 

Unified file system, derived from BSD UNIX 

VXFS 

AIX, Solaris 

Veritas file system 

Raw 

AIX, HP, Linux, Solaris, Tru64 

Raw devices/volumes (No file system) 

EXT2 

Linux 

Extended file system for Linux 

AdvFS 

Tru64  

Polycenter advanced file system 

CFS 

Tru64  

Cluster file system 

JFS 

AIX 

Journaled file system 

The suitability of a file system to an application is usually undocumented. For example, even different implementations of the Unified file system are hard to compare. Performance differences may vary from 0 to 20 percent, depending on the file system you choose.

If you choose to use a file system:

Monitoring Disk Performance

To monitor disk performance, use the sar -b and sar -u commands.

Table 2-1 describes the columns of the sar -b command output that are significant for analyzing disk performance.

Table 2-1 sar -b Output Columns
Columns  Description 

bread/s, bwrit/s 

Blocks read and blocks written per second (important for file system databases) 

pread/s, pwrit/s 

Partitions read and partitions written per second (important for raw partition database systems) 

An important sar -u column for analyzing disk performance is %wio, the percentage of CPU time waiting on blocked I/O.


Note:

Not all Linux distributions display the %wio column in the output of the sar -u command. 


Key indicators are:

Tuning CPU Usage

This section provides information on tuning CPU usage.

Keep All Oracle Users/Processes at the Same Priority

Oracle is designed to operate with all users and background processes operating at the same priority level. Changing priority levels causes unexpected effects on contention and response times.

For example, if the log writer process (LGWR) gets a low priority, it is not executed frequently enough and LGWR becomes a bottleneck. On the other hand, if LGWR has a high priority, user processes may suffer poor response time.

Tuning Oracle Resource Contention and UNIX Kernel Parameters

You can improve performance by keeping the UNIX kernel as small as possible. The UNIX kernel typically pre-allocates physical memory, leaving less memory available for other processes such as the Oracle processes.

Traditionally, kernel parameters such as NBUF, NFILE, and NOFILES were used to adjust kernel size. However, most UNIX implementations dynamically adjust those parameters at run time, even though they are present in the UNIX configuration file.

Look for memory-mapped video drivers, networking drivers, and disk drivers that can be removed, freeing more memory for use by other processes.


Note:

Remember to make a backup copy of your UNIX kernel. See your operating system documentation for additional information. 


Tuning the Operating System Buffer Cache

To take full advantage of raw devices, adjust the size of the Oracle9i buffer cache and, if memory is limited, the operating system buffer cache.

The operating system buffer cache holds blocks of data in memory while they are being transferred from memory to disk, or from disk to memory.

The Oracle9i buffer cache is the area in memory that stores the Oracle database buffers. Because Oracle9i can use raw devices, it does not need to use the operating system buffer cache.

If you use raw devices, increase the size of the Oracle9i buffer cache. If the amount of memory on the system is limited, make a corresponding decrease in the operating system buffer cache size.

Use the sar command to determine which buffer caches you must increase or decrease.

See Also:

See the UNIX man pages for more information on the sar command. 

Using Raw Devices/Volumes

The following sections provide information on using raw devices/volumes.


Note:

For additional raw device/volume tuning information, see the following appendices:

 

Guidelines for Using Raw Devices/Volumes

Raw devices/volumes have the following disadvantages when used on UNIX:

In addition to the factors described in this section, consider the following issues when deciding whether to use raw devices/volumes:

Raw Device Setup

Keep the following items in mind when creating raw devices:

Using Trace and Alert Files

This section describes the trace (or dump) and alert files that Oracle9i creates to diagnose and resolve operating problems.

Trace Files

Each server and background process can write to an associated trace file. When a process detects an internal error, it writes information on the error to its trace file. The filename format of a trace file is processname_unixpid_sid.trc, where:

processname

Is a three or four-character abbreviated process name identifying the Oracle9i process that generated the file (for example, pmon, dbwr, ora, or reco)

sid

Is the instance system identifier

unixpid

Is the UNIX process ID number

A sample trace filename is $ORACLE_BASE/admin/TEST/bdump/lgwr_1237_TEST.trc.

All trace files for background processes are written to the destination directory specified by the BACKGROUND_DUMP_ DEST initialization parameter. All trace files for server processes are written to the destination directory specified by the USER_DUMP_DEST initialization parameter.

Set the MAX_DUMP_FILE initialization parameter to at least 5000 to ensure that the trace file is large enough to store error information.

Alert Files

The alert_sid.log file stores significant database events and messages. Anything that affects the database instance or global database is recorded in this file. This file is associated with a database and is located in the directory specified by the BACKGROUND_DUMP_DEST initialization parameter. If you do not set this initialization parameter, the default directory is $ORACLE_HOME/rdbms/log.


Go to previous page Go to next page
Oracle
Copyright © 2001 Oracle Corporation.

All Rights Reserved.
Go To Table Of Contents
Contents
Go To Index
Index