Skip Headers
Oracle® Database Administrator's Reference
10g Release 1 (10.1) for UNIX Systems: AIX-Based Systems, Apple Mac OS X, hp HP-UX, hp Tru64 UNIX, Linux, and Solaris Operating System
Part No. B10812-06
  Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
Next
Next
 

C Administering Oracle Database on Linux

This appendix contains information about administering Oracle Database on Linux. It contains the following sections:

x86 Only: Extended Buffer Cache Support

Oracle Database can allocate and use more than 4 GB of memory for the database buffer cache. This section describes the limitations and requirements of the extended buffer cache feature on x86 systems.


See Also:

For more information about the extended buffer cache feature, see Oracle Database Concepts.

In-Memory File System

To use the extended buffer cache feature, create an in-memory file system on the /dev/shm mount point equal in size or larger than the amount of memory that you intend to use for the database buffer cache. For example, to create an 8 GB file system on the /dev/shm mount point, follow these steps:

  1. Enter the following command as the root user:

    # mount -t tmpfs shmfs -o size=8g /dev/shm
    
    
  2. Add an entry in the /etc/fstab file, similar to the following, to ensure that the in-memory file system is mounted when the system reboots:

    shmfs /dev/shm tmpfs size=8g 0 0
    
    

When Oracle Database starts with the extended buffer cache feature enabled, it creates a file in the /dev/shm directory that corresponds to the Oracle buffer cache.


Note:

If an in-memory file system is already mounted on the /dev/shm mount point, ensure that its size is equal to or larger than the amount of memory that is used for the database buffer cache.

USE_INDIRECT_DATA_BUFFERS Initialization Parameter

To enable the extended buffer cache feature, set the USE_INDIRECT_DATA_BUFFERS initialization parameter to true in the parameter file. Doing this allows Oracle Database to specify a larger buffer cache.

Dynamic Cache Parameters

If the extended cache feature is enabled, you must use the DB_BLOCK_BUFFERS parameter to specify the database cache size.

Do not use the following dynamic cache parameters while the extended buffer cache feature is enabled:

Limitations

The following limitations apply to the extended buffer cache feature:


See Also:

For more information about the default block size used by the CREATE TABLESPACE command, see the Oracle Database SQL Reference.


Note:

The default VLM window size is 512 MB. This memory size is allocated to the process's address space. To increase or decrease this value, set the VLM_WINDOW_SIZE environment variable to the new size in bytes. For example, to set the VLM_WINDOW_SIZE to 256 MB, enter the following:
$ export VLM_WINDOW_SIZE=268435456

The value that you specify for the VLM_WINDOW_SIZE environment variable must be a multiple of 64 KB.


Red Hat Enterprise Linux 3 Only: VLM Window Size

To accommodate the VLM window size, you must increase the default maximum size of the per-process locked memory. To increase it, add the following lines to the /etc/security/limits.conf file, where oracle is the user that administers the database:

oracle          soft    memlock        3145728
oracle          hard    memlock        3145728

If you use ssh to log in to the system, add the following line to the /etc/ssh/sshd_config file to enable the default values to be used when an ssh session is started:

UsePrivilegeSeparation no

x86 Only: Enabling Large Pages on Red Hat Enterprise Linux AS 2.1 and SUSE Linux Enterprise Server 8

Enabling large pages can improve scalability by reducing virtual memory overhead in the kernel. However, memory resources in the large page pool cannot be swapped, so you must be sure that your system has sufficient memory.


Note:

Using the bigpages parameter is supported only on Red Hat Enterprise Linux AS 2.1 and SUSE Linux Enterprise Server 8. It is not available or supported on Red Hat Enterprise Linux AS 3 or SUSE Linux Enterprise Server 9.

To use the large pages feature, you must determine the bigpages parameter value. To determine this value, convert the size of the instance's SGA to megabytes, and round up by 4 MB. Use the following example as a guide:


Note:

You can determine the size of the SGA by using the SHOW SGA command in SQL*Plus or by using the ipcs command.

If the SGA is 2.7 GB:

  1. Determine the bigpages value as follows:

    bigpages = 2.7 * 1024 = 2764.8

  2. Round the value up by 4 to 2768.

  3. Depending on your boot loader, perform one of the following steps:

    LILO:

    1. Add the bigpages option to the appropriate image section in the /etc/lilo.conf file:

      append = "bigpages=2768MB"
      
      
    2. Run /sbin/lilo.

    3. Restart the system.

    GRUB:

    1. Add the bigpages option to the kernel command in the /etc/grub.conf file, for example:

      kernel /vmlinuz-2.4.9 root=/dev/hda5 bigpages=2768MB
      
      
    2. Restart the system.

  4. To enable the large pages feature, set the value of the shm-use-bigpages kernel parameter in the /etc/sysctl.conf file to either 1 or 2, depending on whether you are using the extended buffer cache feature, and set the USE_INDIRECT_DATA_BUFFERS initialization parameter to true in the parameter file:

    • If you are not using the extended buffer cache (VLM), set the value to 1:

      kernel.shm-use-bigpages = 1
      
      
    • If you are using the extended buffer cache (VLM), set the value to 2 to configure the bigpages memory pool to include the memory allocated in /dev/shm:

      kernel.shm-use-bigpages = 2
      
      
  5. Enter the following command to set the parameter values:

    # sysctl -p /etc/sysctl.conf
    
    
  6. Start up Oracle Database.

Using hugetlbfs on Red Hat Enterprise Linux AS 2.1 (Itanium) or SUSE Linux Enterprise Server 9

To enable Oracle Database to use large pages (sometimes called huge pages) on Red Hat Enterprise Linux AS 2.1 (Itanium) or SUSE Linux Enterprise Server 9, set the value of the vm.nr_hugepages kernel parameter to specify the number of large pages that you want to reserve. You must specify a sufficient number of large pages to hold the entire SGA for the database instance. To determine the required parameter value, divide the SGA size for the instance by the size of a large page, then round the result up to the nearest integer.

To determine the default large page size, enter the following command:

# grep Hugepagesize /proc/meminfo

For example, if /proc/meminfo lists the large page size as 2 MB, and the total SGA size for the instance is 1.6 GB, then set the value for the vm.nr_hugepages kernel parameter to 820 (1.6 GB / 2 MB = 819.2).

Using hugetlbfs on Red Hat Enterprise Linux AS 3

To use large pages on Red Hat Enterprise Linux AS 3, follow these steps:

  1. Determine the memory required for the large page pool.

    To determine this value, convert the size of the instance's SGA to megabytes, and round up by 4 MB. For example, if the SGA is 2.7 GB, the appropriate value is 2768 MB.

  2. Depending on your boot loader, perform one of the following:

    LILO:

    1. Add the hugepages option to the appropriate image section in the /etc/lilo.conf file, specifying the number of pages:

      append = "hugepages=1024"
      
      
    2. Run /sbin/lilo.

    3. Restart the system.

    GRUB:

    1. Add the hugepages option to the kernel command in the /etc/grub.conf file, specifying the number of pages:

      kernel /vmlinuz-2.4.9 root=/dev/hda5 hugepages=1024
      
      
    2. Restart the system.

  3. Add or edit the following entry in the /etc/sysctl.conf file, specifying the large page pool size in megabytes:

    vm.hugetlb_pool = 2768
    
    
  4. Enter the following command to set the kernel parameter values:

    # sysctl -p /etc/sysctl.conf
    
    
  5. Verify that this amount of memory was moved successfully into the large page pool, as follows:

    # cat /proc/meminfo
    
    

    The lines at the end of the display show how many memory pages were moved into the large page pool.

  6. Start up the database.

Linux x86 Only: Increasing SGA Address Space

Depending on your distribution of Linux, use the instructions in one of the following sections to increase the SGA address space:

Red Hat Enterprise Linux AS 2.1 and SUSE Linux Enterprise Server 8 or 9

To increase the SGA address space on Red Hat Enterprise Linux AS 2.1 and SUSE Linux Enterprise Server 8 or 9, complete the following:

  1. If necessary, log in as the oracle user.

  2. In the $ORACLE_HOME/rdbms/lib directory, enter the following commands:

    $ genksms -s 0x15000000 > ksms.s
    $ make -f ins_rdbms.mk ksms.o
    $ make -f ins_rdbms.mk ioracle
    
    

    Note:

    If Oracle Database does not start after completing this procedure, or if there are runtime memory errors, then increase the hexadecimal number specified in the first command. For example, if the 0x15000000 value prevents Oracle Database from starting, specify the value 0x20000000. Lowering this value increases the SGA address space, but could decrease the PGA address space.

  3. Enter the following command to determine the process ID of the oracle user's shell process:

    $ echo $$
    
    

    The number returned is the process ID.

  4. Switch user to root:

    $ su - root
    
    
  5. Enter the following commands to change the mapped base setting for the oracle user's shell process, where pid is the process ID identified in step 3:

    # echo 268435456 > /proc/pid/mapped_base
    
    
  6. Enter exit to return to the oracle user's shell process, and start the Oracle Listener and Oracle Database.


Note:

All Oracle processes need to get this modified mapped base value. Starting the listener from the shell that has the modified mapped base allows client connections to connect properly.

Red Hat Enterprise Linux AS 3

To increase the SGA address space on Red Hat Enterprise Linux AS 3, follow these steps:

  1. If necessary, log in as the oracle user.

  2. In the $ORACLE_HOME/rdbms/lib directory, enter the following commands:

    $ genksms -s 0x15000000 > ksms.s
    $ make -f ins_rdbms.mk ksms.o
    $ make -f ins_rdbms.mk ioracle
    
    
  3. Start Oracle Database.

Asynchronous I/O Support


Note:

On Linux, Automatic Storage Manager (ASM) uses asynchronous I/O by default.

Asynchronous I/O is not supported for database files stored on NFS file systems.


Oracle Database supports kernel asynchronous I/O. This feature is disabled by default. If you are running Oracle Database on a system that supports kernel asynchronous I/O and is certified by Oracle to use asynchronous I/O, perform the following steps to enable asynchronous I/O support:

  1. As the oracle user, change directory to the $ORACLE_HOME/rdbms/lib directory.

  2. Enter the following command:

    $ make -f ins_rdbms.mk async_on
    
    

    Note:

    If you receive the "/usr/bin/ld: cannot find -laio" error, then the system does not support kernel asynchronous I/O and you must enter the following command to restore the Oracle instance to a usable state:
    $ make -f ins_rdbms.mk async_off
    

By default, the DISK_ASYNCH_IO initialization parameter in the parameter file is set to true to enable asynchronous I/O on raw devices. To enable asynchronous I/O on file system files:

  1. Ensure that all Oracle database files are located on file systems that support asynchronous I/O.

  2. Set the FILESYSTEMIO_OPTIONS initialization parameter in the parameter file one of the following values:

    Linux Distribution Recommended Value
    SUSE Linux Enterprise Server 9 setall
    Other distributions asynch

Direct I/O Support

Direct I/O support is not available and is not supported on Red Hat Enterprise Linux 2.1 and SUSE Linux Enterprise Server 8. It is available and supported on Red Hat Enterprise Linux 3 and SUSE Linux Enterprise Server 9.


Note:

To use direct I/O on Red Hat Enterprise Linux 3, the driver that you use must support vary I/O.

To enable direct I/O support:

Semtimedop Support


Note:

The semtimedop feature is not available on Red Hat Enterprise Linux 2.1.

On Red Hat Enterprise Linux 3 and SUSE Linux Enterprise Server, Oracle Database 10g supports the semtimedop() system call (semaphores with a time limitation). However, on SUSE Linux Enterprise Server 8, this feature is disabled by default. To enable support for the feature, enter the following command as the oracle user in the $ORACLE_HOME/rdbms/lib directory:

$ make -f ins_rdbms.mk smt_on

To disable semtimedop() support, enter the following command as the oracle user in the $ORACLE_HOME/rdbms/lib directory:

$ make -f ins_rdbms.mk smt_off

x86 Only: High Speed Network Support

On x86 systems only, Oracle Net supports Sockets Direct protocol (SDP) over the InfiniBand network architecture on Red Hat Enterprise Linux AS 2.1 and 3 for Oracle Database 10g Release 1. For this release, SDP support is limited to synchronous I/O only. For information about support for using asynchronous I/O on SDP, check the following Web site for updates:

http://www.oracle.com/technology/products/oraclenet/files/Oracle_Net_High-Speed_Interconnect_Support.doc


Note:

Do not set the Oracle Net NET_ASYNC_IO and SDP_ASYNC_IO configuration parameters unless otherwise stated on this Web site.