|
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 |
|
![]() Previous |
![]() Next |
This appendix contains information about administering Oracle Database on Linux. It contains the following sections:
x86 Only: Enabling Large Pages on Red Hat Enterprise Linux AS 2.1 and SUSE Linux Enterprise Server 8
Using hugetlbfs on Red Hat Enterprise Linux AS 2.1 (Itanium) or SUSE Linux Enterprise Server 9
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. |
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:
Enter the following command as the root user:
# mount -t tmpfs shmfs -o size=8g /dev/shm
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.
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:
DB_CACHE_SIZE
DB_2K_CACHE_SIZE
DB_4K_CACHE_SIZE
DB_8K_CACHE_SIZE
DB_16K_CACHE_SIZE
The following limitations apply to the extended buffer cache feature:
You cannot create or use tablespaces with non-default block sizes. You can create tablespaces using only the block size specified by the DB_BLOCK_SIZE parameter.
You cannot change the size of the buffer cache while the instance is running.
|
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
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 theipcs command.
|
If the SGA is 2.7 GB:
Determine the bigpages value as follows:
bigpages = 2.7 * 1024 = 2764.8
Round the value up by 4 to 2768.
Depending on your boot loader, perform one of the following steps:
LILO:
Add the bigpages option to the appropriate image section in the /etc/lilo.conf file:
append = "bigpages=2768MB"
Run /sbin/lilo.
Restart the system.
GRUB:
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
Restart the system.
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
Enter the following command to set the parameter values:
# sysctl -p /etc/sysctl.conf
Start up Oracle Database.
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).
To use large pages on Red Hat Enterprise Linux AS 3, follow these steps:
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.
Depending on your boot loader, perform one of the following:
LILO:
Add the hugepages option to the appropriate image section in the /etc/lilo.conf file, specifying the number of pages:
append = "hugepages=1024"
Run /sbin/lilo.
Restart the system.
GRUB:
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
Restart the system.
Add or edit the following entry in the /etc/sysctl.conf file, specifying the large page pool size in megabytes:
vm.hugetlb_pool = 2768
Enter the following command to set the kernel parameter values:
# sysctl -p /etc/sysctl.conf
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.
Start up the database.
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:
If necessary, log in as the oracle user.
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. |
Enter the following command to determine the process ID of the oracle user's shell process:
$ echo $$
The number returned is the process ID.
Switch user to root:
$ su - root
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
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:
If necessary, log in as the oracle user.
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
Start Oracle Database.
|
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:
As the oracle user, change directory to the $ORACLE_HOME/rdbms/lib directory.
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:
Ensure that all Oracle database files are located on file systems that support asynchronous I/O.
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 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:
Set the FILESYSTEMIO_OPTIONS initialization parameter to directIO.
If you are using the asynchronous I/O option, set the FILESYSTEMIO_OPTIONS initialization parameter to setall.
|
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
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. |