A Administering Oracle Database on AIX


A.1 Memory and Paging


This section contains the following topics:

A.1.1 Controlling Buffer-Cache Paging Activity



Parameter Description
minfree The minimum free-list size. If the free-list space in the buffer falls lower than this size, then the system uses page stealing to replenish the free list.
minperm The minimum number of permanent buffer pages for file Input-Output.
maxperm The maximum number of permanent buffer pages for file Input-Output.

See Also:

AIX 5L Performance Management Guide for more information about AIX system parameters

A.1.2 Tuning the AIX File Buffer Cache



The performance gain cannot be quantified easily, because it depends on the degree of multiprogramming and the Input-Output characteristics of the workload.

Tuning the minperm and maxperm Parameters


  • If the percentage of real memory occupied by file pages falls lower than the minperm value, then the virtual memory manager (VMM) page-replacement algorithm takes both file and computational pages, regardless of repage rates.



Use the following algorithm to calculate the default values:




# /usr/sbin/vmo -o minperm percent=5 -o maxperm percent=20

The default values are 20 percent and 80 percent, respectively.


$ ps v process_id


If you are using Direct Input-Output, then you can set the minperm and maxperm parameters to low values. For example, 5 percent and 20 percent, respectively. This is because the AIX file buffer cache is not used for Direct Input-Output. The memory may be better used for other purposes, such as for the Oracle System Global Area.

A.1.3 Allocating Sufficient Paging Space






A.1.4 Controlling Paging





    1. OS and RDBMS kernels

    2. User and application processes

    3. Redo log buffer

    4. PGAs and shared pool

    5. Database block buffer caches


The following AIX commands provide paging status and statistics:

  • vmstat -s

  • vmstat interval [repeats]

  • sar -r interval [repeats]

A.1.5 Setting the Database Block Size


Oracle recommends smaller Oracle Database block sizes (2 KB or 4 KB) for online transaction processing or mixed workload environments and larger block sizes (8 KB, 16 KB, or 32 KB) for decision support system workload environments.

A.1.6 Tuning the Log Archive Buffers

By increasing the LOG_BUFFER size, you may be able to improve the speed of archiving the database, particularly if transactions are long or numerous. Monitor the log file Input-Output activity and system throughput to determine the optimum LOG_BUFFER size. Tune the LOG_BUFFER parameter carefully to ensure that the overall performance of normal database activity does not degrade.


The LOG_ARCHIVE_BUFFER_SIZE parameter was obsoleted with Oracle8i Database.

A.1.7 Input-Output Buffers and SQL*Loader

For high-speed data loading, such as using the SQL*Loader direct path option in addition to loading data in parallel, the CPU spends most of its time waiting for Input-Output to complete. By increasing the number of buffers, you can maximize CPU usage, and by doing this, increase overall throughput.



See Also:


BUFFER Parameter for the Import Utility

The BUFFER parameter for the Import utility should be set to a large value to optimize the performance of high-speed networks when they are used. For example, if you use the IBM RS/6000 Scalable POWER parallel Systems switch, then you should set the BUFFER parameter to a value of at least 1 MB.

A.2 Disk Input-Output Issues

Disk Input-Output contention can result from poor memory management (with subsequent paging and swapping), or poor distribution of tablespaces and files across disks.

Ensure that the Input-Output activity is distributed evenly across multiple disk drives by using AIX utilities such as filemon, sar, iostat, and other performance tools to identify disks with high Input-Output activity.

This section contains the following topics:

A.2.1 AIX Logical Volume Manager

The AIX Logical Volume Manager can stripe data across multiple disks to reduce disk contention. The primary objective of striping is to achieve high performance when reading and writing large sequential files. Effective use of the striping features in the Logical Volume Manager enables you to spread Input-Output more evenly across disks, resulting in better overall performance.


Do not add logical volumes to Automatic Storage Management disk groups. Automatic Storage Management works best when you add raw disk devices to disk groups. If you are using Automatic Storage Management, then do not use Logical Volume Manager for striping. Automatic Storage Management implements striping and mirroring.

Design a Striped Logical Volume


Item Recommended Settings
Drives There must be at least two physical drives. The drives should have minimal activity when performance-critical sequential Input-Output is carried out. Sometimes, you must stripe the logical volume between two or more adapters.

Other Considerations

Performance gains from effective use of the Logical Volume Manager can vary greatly, depending on the Logical Volume Manager you use and the characteristics of the workload. For decision support system workloads, you can see substantial improvement. For online transaction processing-type or mixed workloads, you can expect significant performance gains.

A.2.2 Using Journaled File Systems Compared to Raw Logical Volumes

Address the following considerations when deciding whether to use journaled file systems or raw logical volumes:


  • File systems require some additional configuration (AIX minservers and maxservers parameter) and add a small CPU overhead because Asynchronous Input-Output on file systems is serviced outside the kernel.


  • The introduction of more powerful Logical Volume Manager interfaces substantially reduces the tasks of configuring and backing up logical disks based on raw logical volumes.

  • The Direct Input-Output and Concurrent Input-Output features included in IBM AIX on POWER Systems improve file system performance to a level comparable to raw logical volumes.

In earlier versions of AIX, file systems supported only buffered read and write and added extra contention because of imperfect inode locking. These two issues are solved by the JFS2 Concurrent Input-Output feature and the GPFS Direct Input-Output feature.


To use the Oracle RAC option, you must place data files on an Automatic Storage Management disk group or on a GPFS file system. You cannot use JFS or JFS2. Direct Input-Output is implicitly enabled when you use GPFS.

File System Options

IBM AIX on POWER Systems includes Direct Input-Output and Concurrent Input-Output support. Direct Input-Output and Concurrent Input-Output support enables database files to exist on file systems while bypassing the operating system buffer cache and removing inode locking operations that are redundant with the features provided by Oracle Database.

Where possible, Oracle recommends enabling Concurrent Input-Output or Direct Input-Output on file systems containing Oracle data files. The following table lists file systems available on AIX and the recommended setting:

File System Option Description
JFS dio Concurrent Input-Output is not available on JFS. Direct Input-Output is available, but performance is degraded compared to JFS2 with Concurrent Input-Output.
JFS large file none Oracle does not recommend using JFS large file for Oracle Database because its 128 KB alignment constraint prevents you from using Direct Input-Output.
JFS2 cio Concurrent Input-Output is a better setting than Direct Input-Output on JFS2, because it provides support for multiple concurrent readers and writers on the same file. However, due to AIX restrictions on JFS2/CIO, Concurrent Input-Output is intended to be used only with Oracle data files, control files, and log files. It should be applied only to file systems that are dedicated to such a purpose. For the same reason, the Oracle home directory is not supported on a JFS2 file system mounted with the cio option. For example, during installation, if you inadvertently specify that the Oracle home directory is on a JFS2 file system mounted with the CIO option, then while trying to relink Oracle, you may encounter the following error:


Note: For Oracle Database 11g Release 2 ( and later, on AIX 6.1 systems, Oracle recommends that you do not use the cio option on a JFS2 file system.

GPFS NA Oracle Database silently enables Direct Input-Output on GPFS for optimum performance. GPFS Direct Input-Output supports multiple readers and writers on multiple nodes. Therefore, Direct Input-Output and Concurrent Input-Output are the same thing on GPFS.

Considerations for JFS and JFS2


Before Oracle Database 11g, Direct Input-Output and Concurrent Input-Output could not be enabled at the file level on JFS/JFS2. Therefore, the Oracle home directory and data files had to be placed in separate file systems for optimal performance. The Oracle home directory was placed on a file system mounted with default options, with the data files and logs on file systems mounted using the dio or cio options.

With Oracle Database 11g, you can enable Direct Input-Output and Concurrent Input-Output on JFS/JFS2 at the file level. You can do this by setting the FILESYSTEMIO_OPTIONS parameter in the server parameter file to setall or directIO. This enables Concurrent Input-Output on JFS2 and Direct Input-Output on JFS for all data file Input-Output. Because the directIO setting disables asynchronous Input-Output it should normally not be used. As a result of this 11g feature, you can place data files on the same JFS/JFS2 file system as the Oracle home directory and still use Direct Input-Output or Concurrent Input-Output for improved performance. As mentioned earlier, you should still place Oracle Database logs on a separate JFS2 file system for optimal performance.

Considerations for GPFS


Moving from a Journaled File System to Raw Logical Volumes



    # mklv -T O -y new_raw_device VolumeGroup NumberOfPartitions


  2. Set the permissions on the raw device.


    # dd if=old_JFS_file of=new_raw_device bs=1m
  4. Rename the data file.

Moving from Raw Logical Volumes to a Journaled File System






A.2.3 Using Asynchronous Input-Output

Oracle Database takes full advantage of asynchronous Input-Output provided by AIX, resulting in faster database access.

IBM AIX on POWER Systems support asynchronous Input-Output for database files created on file system partitions. When using asynchronous Input-Output on file systems, the kernel database processes (aioserver) control each request from the time a request is taken off the queue to the time it is completed. The number of aioserver servers determines the number of asynchronous Input-Output requests that can be processed in the system concurrently. So, it is important to tune the number of aioserver processes when using file systems to store Oracle Database data files.

Use one of the following commands to set the number of servers. This applies only when using asynchronous Input-Output on file systems:

  • smit aio


    See Also:




  • On IBM AIX on POWER Systems, there are two asynchronous Input-Output subsystems available. Oracle Database 11g uses Legacy asynchronous Input-Output (aio0), even though the Oracle preinstallation script enables Legacy asynchronous Input-Output (aio0) and POSIX AIO (posix_aio0). Both asynchronous Input-Output subsystems have the same performance characteristics.

  • Starting with AIX 6.1, the minservers, maxservers, and maxreqs parameters are replaced by the aio_minservers, aio_maxservers, and aio_maxreqs parameters respectively.


The default value for the minimum number of servers is 1. The default value for the maximum number of servers is 10. These values are usually too low to run Oracle Database on large systems with 4 CPUs or more, if you are not using kernelized asynchronous Input-Output. Oracle recommends that you set the parameters to the values listed in the following table:

Parameter Value
maxservers Starting with AIX 5L version 5.3, this parameter counts the maximum number of asynchronous Input-Output servers for each CPU. On previous versions of AIX, it was a systemwide value. If you are using General Parallel File System (GPFS), then set maxservers to worker1threads divided by the number of CPUs. This is the optimal setting. Increasing maxservers does not lead to improved Input-Output performance.

If you are using JFS/JFS2, then set the initial value to 10 times the number of logical disks divided by the number of CPUs that are to be used concurrently but no more than 80. Monitor the actual number of aioservers started during a typical workload using the pstat or ps commands. If the actual number of active aioservers equals the maxservers, then increase the maxservers value.

$ lsattr -E -l hdiskxx

Typically, the queue depth is 3.


Warning: lio_listio returned EAGAINPerformance degradation may be seen.

You can avoid these errors by increasing the value of the maxservers parameter. To display the number of asynchronous Input-Output servers running, enter the following commands as the root user:

# pstat -a | grep -c aios
# ps -k | grep aioserver

Check the number of active asynchronous Input-Output servers periodically, and change the values of the minservers and maxservers parameters if required. The changes take place when the system is restarted.


See your operating system vendor documentation for information about tuning AIO parameters.

A.2.4 Input-Output Slaves

Input-Output Slaves are specialized Oracle processes that perform only Input-Output. They are rarely used on AIX, because asynchronous Input-Output is the default and recommended way for Oracle to perform Input-Output operations on AIX. Input-Output Slaves are allocated from shared memory buffers. Input-Output Slaves use the initialization parameters listed in the following table:

Parameter Range of Values Default Value
DISK_ASYNCH_IO true/false true
TAPE_ASYNCH_IO true/false true
BACKUP_TAPE_IO_SLAVES true/false false
DBWR_IO_SLAVES 0 - 999 0


There are times when you must turn off asynchronous I/O. For example, if instructed to do so by Oracle Support for debugging. You can use the DISK_ASYNCH_IO and TAPE_ASYNCH_IO parameters to switch off asynchronous I/O for disk or tape devices. TAPE_ASYNCH_IO support is only available when the Media Manager software supports it and for Recovery Manager, if BACKUP_TAPE_IO_SLAVES is true.

Set the DBWR_IO_SLAVES parameter to greater than 0 only if the DISK_ASYNCH_IO parameter is set to false. Otherwise, the database writer process becomes a bottleneck. In this case, the optimal value on AIX for the DBWR_IO_SLAVES parameter is 4.


When using Direct Input-Output or Concurrent Input-Output with Oracle Database 11g, the AIX file system does not perform any read-ahead on sequential scans. For this reason the DB_FILE_MULTIBLOCK_READ_COUNT value in the server parameter file should be increased when Direct Input-Output or Concurrent Input-Output is enabled on Oracle data files. The read ahead is performed by Oracle Database as specified by the DB_FILE_MULTIBLOCK_READ_COUNT initialization parameter.

Setting a large value for the DB_FILE_MULTIBLOCK_READ_COUNT initialization parameter usually yields better Input-Output throughput on sequential scans. On AIX, this parameter ranges from 1 to 512, but using a value higher than 16 usually does not provide additional performance gain.

Set this parameter so that its value when multiplied by the value of the DB_BLOCK_SIZE parameter produces a number larger than the Logical Volume Manager stripe size. Such a setting causes more disks to be used.

A.2.6 Using Write Behind

The write behind feature enables the operating system to group write Input-Output together, up to the size of a partition. You can improve performance by doing this, because the number of Input-Output operations is reduced. The file system divides each file into 16 KB partitions to increase write performance, limit the number of dirty pages in memory, and minimize disk fragmentation. The pages of a particular partition are not written to disk until the program writes the first byte of the next 16 KB partition. To set the size of the buffer for write behind to eight 16 KB partitions, enter the following command:


To disable write behind, enter the following command:


A.2.7 Tuning Sequential Read Ahead


The information in this section applies only to file systems, and only when neither Direct Input-Output nor Concurrent Input-Output are used.


  • minpgahead


  • maxpgahead



-o minpgahead=32 -o maxpgahead=64


A.2.8 Tuning Disk Input-Output Pacing

Disk Input-Output pacing is an AIX mechanism that enables the system administrator to limit the number of pending Input-Output requests to a file. This prevents disk Input-Output intensive processes from saturating the CPU. Therefore, the response time of interactive and CPU-intensive processes does not deteriorate.

You can achieve disk Input-Output pacing by adjusting two system parameters: the high-water mark and the low-water mark. When a process writes to a file that has a pending high-water mark Input-Output request, the process is put to sleep. The process wakes up when the number of outstanding Input-Output requests falls lower than or equals the low-water mark.


You can determine disk Input-Output saturation by analyzing the result of iostat, in particular, the percentage of iowait and tm_act. A high iowait percentage combined with high tm_act percentages on specific disks is an indication of disk saturation.


A high iowait alone is not necessarily an indication of an Input-Output bottleneck.

A.2.9 Resilvering with Oracle Database

If you disable mirror write consistency for an Oracle data file allocated on a raw logical volume, then the Oracle Database crash recovery process uses resilvering to recover after a system failure. This resilvering process prevents database inconsistencies or corruption.

During crash recovery, if a data file is allocated on a logical volume with multiple copies, then the resilvering process performs a checksum on the data blocks of all the copies. It then performs one of the following:



On AIX, the resilvering process works only for data files allocated on raw logical volumes for which mirror write consistency is disabled. Resilvering is not required for data files on mirrored logical volumes with mirror write consistency enabled, because mirror write consistency ensures that all copies are synchronized.

If the system fails while you are upgrading an earlier release of Oracle Database that used data files on logical volumes for which mirror write consistency was disabled, then run the syncvg command to synchronize the mirrored logical volume before starting Oracle Database. If you do not synchronize the mirrored logical volume before starting the database, then Oracle Database may read incorrect data from an logical volume copy.


If a disk drive fails, then resilvering does not occur. You must run the syncvg command before you can reactivate the logical volume.


Oracle supports resilvering for data files only. Do not disable mirror write consistency for redo log files.

A.3 CPU Scheduling and Process Priorities

The CPU is another system component for which processes may contend. Although the AIX kernel allocates CPU effectively most of the time, many processes compete for CPU cycles. If the system has multiple CPU (SMP), then there may be different levels of contention on each CPU.

The following sections provide information about CPU scheduling and process priorities:

A.3.1 Changing Process Running Time Slice



f # /usr/sbin/schedo -t n


A.3.2 Using Processor Binding on SMP Systems


However, starting with AIX 5L, specific improvements in the AIX scheduler enables Oracle Database processes to be scheduled optimally without processor binding. Therefore, Oracle no longer recommends binding processes to processors when running on AIX 5L version 5.3 or later.

A.4 Setting the AIXTHREAD_SCOPE Environment Variable



In addition, on AIX 5L version 5.3 or later, if you set systemwide contention scope, then significantly less memory is allocated to each Oracle process.


  • Bourne, Bash, or Korn shell:


  • C shell:



Doing this enables systemwide thread scope for running all Oracle processes.

A.5 Network Information Service external naming support

Network Information Service external naming adapter is supported on AIX. To configure and use Network Information Service external naming, refer to the "Configuring External Naming Methods" section of Oracle Database Net Services Administrator's Guide.

A.6 Simultaneous Multithreading on AIX 5.3 and Later Versions

If Simultaneous Multithreading is enabled, and AIX 5.3 and later version operating system is used, then the v$osstat view reports 2 additional rows corresponding to the online logical (NUM_LCPUS) and virtual cpus (NUM_VCPUS).

If Oracle is run on AIX 5.3 and later versions without Simultaneous Multithreading, then these rows are not reported.

A.7 Configuring IBM JSSE Provider with Oracle JDBC Thin Driver

If you want to configure SSL on IBM JDK, then you may face the following issues:

  • IBM JSSE does not support SSLv2Hello SSL protocol

    For SSL clients using Thin JDBC connectors, you must set oracle.net.ss1_version system property to select TLSv1 SSL protocol or SSLv3 SSL protocol

  • IBM JSSE does not allow anonymous ciphers

    For SSL clients using anonymous ciphers, you must replace the Default Trust Manager with a Custom Trust Manager that accepts anonymous ciphers.

    See Also:

    IBM JSSE documentation for more information on creating and installing Custom Trust Manager