D How to Complete Preinstallation Tasks Manually

This appendix provides instructions for how to complete configuration tasks manually that Cluster Verification Utility (CVU) and Oracle Universal Installer normally complete during installation. Use this appendix as a guide if you cannot use the fixup script.

This appendix contains the following information:

D.1 Configuring Kernel Parameters on Oracle Solaris

This section contains the following topics:

Note:

The kernel parameter values in this section are minimum values only. For production database systems, Oracle recommends that you tune these values to optimize the performance of the system. Refer to your operating system documentation for more information about kernel resource management.

D.1.1 Minimum Parameter Settings for Installation

During installation, you can generate and run the Fixup script to check and set the kernel parameter values required for successful installation of the database. This script updates required kernel packages if necessary to minimum values.

If you cannot use the fixup script, then review the following table to set the values manually. Verify that the kernel parameters shown in the following table are set to values greater than or equal to the minimum value shown.

Note:

On Oracle Solaris 10, you are not required to make changes to the /etc/system file to implement the System V IPC. Oracle Solaris 10 uses the resource control facility for its implementation.
Resource Control Minimum Value
project.max-sem-ids 100
process.max-sem-nsems 256
project.max-shm-memory This value varies according to the RAM size. See Requirements for Shared Memory Resources for minimum values.
project.max-shm-ids 100
tcp_smallest_anon_port 9000
tcp_largest_anon_port 65500
udp_smallest_anon_port 9000
udp_largest_anon_port 65500

Note:

  • project.max-shm-memory resource control = the cumulative sum of all shared memory allocated on each Oracle database instance started under the corresponding project.

  • The project.max-shm-memory resource control value assumes that no other application is using the shared memory segment from this project other than the Oracle instances. If applications, other than the Oracle instances are using the shared memory segment, then you must add that shared memory usage to the project.max-shm-memory resource control value.

  • Ensure that memory_target (or max_sga_size) does not exceed process.max-address-space and project.max-shm-memory. For more information, see My Oracle Support Note 1370537.1 at:

    https://support.oracle.com/

D.1.2 Requirements for Shared Memory Resources

The resource control project.max-shm-memory enables you to set the maximum shared memory for a project.

The following table shows the installation minimum settings for project.max-shm-memory:

Table D-1 Requirement for Resource Control project.max-shm-memory

RAM project.max-shm-memory setting

1 GB to 16 GB

Half the size of physical memory

Greater than 16 GB

At least 8 GB


D.1.3 Checking Shared Memory Resource Controls

Use the prctl command to make runtime interrogations of and modifications to the resource controls associated with an active process, task, or project on the system.

To view the current value of project.max-shm-memory set for a project and system-wide, enter the following command:

# prctl -n project.max-shm-memory -i project default

Where default is the project ID obtained by running the id -p command.

For example, to change the setting for project.max-shm-memory to 6 GB for the project default without a system reboot, enter the following command:

prctl -n project.max-shm-memory -v 6gb -r -i project default

See Also:

Administering Oracle Solaris 11 at:
http://docs.oracle.com/cd/E23824_01/index.html

D.1.4 Displaying and Changing Kernel Parameter Values

Use the following procedure to display the current value specified for resource controls, and to change them if necessary:

  1. To display the current values of the resource control, enter the following commands:

    $ id -p // to verify the project id
    uid=100(oracle) gid=100(dba) projid=1 (group.dba)
    $ prctl -n project.max-shm-memory -i project group.dba
    $ prctl -n project.max-sem-ids -i project group.dba
    
  2. If you must change any of the current values, then:

    1. To modify the value of max-shm-memory to 6 GB:

      # prctl -n project.max-shm-memory -v 6gb -r -i project group.dba
      
    2. To modify the value of max-sem-ids to 256:

      # prctl -n project.max-sem-ids -v 256 -r -i project group.dba
      

Note:

When you use the prctl command (Resource Control) to change system parameters, you do not have to restart the system for these parameter changes to take effect. However, the changed parameters do not persist after a system restart.

Use the following procedure to modify the resource control project settings, so that they persist after a system restart:

  1. By default, Oracle instances are run as the oracle user of the dba group. A project with the name group.dba is created to serve as the default project for the oracle user. Run the command id to verify the default project for the oracle user:

    # su - oracle
    $ id -p
    uid=100(oracle) gid=100(dba) projid=100(group.dba)
    $ exit
    
  2. To set the maximum shared memory size to 2 GB, run the projmod command:

    # projmod -sK "project.max-shm-memory=(privileged,2G,deny)" group.dba
    

    Alternatively, add the resource control value project.max-shm-memory=(privileged,2147483648,deny) to the last field of the project entries for the Oracle project.

  3. After these steps are complete, check the values for the /etc/project file using the following command:

    # cat /etc/project
    

    The output should be similar to the following:

    system:0::::
    user.root:1::::
    noproject:2::::
    default:3::::
    group.staff:10::::
    group.dba:100:Oracle default project ::: project.max-shm-memory=(privileged,2147483648,deny)
    
  4. To verify that the resource control is active, check process ownership, and run the commands id and prctl:

    # su - oracle
    $ id -p
    uid=100(oracle) gid=100(dba) projid=100(group.dba)
    $ prctl -n project.max-shm-memory -i process $$
    process: 5754: -bash
    NAME                    PRIVILEGE     VALUE     FLAG     ACTION    RECIPIENT
    project.max-shm-memory  privileged    2.00GB     -       deny 
    

    Note:

    The value for the maximum shared memory depends on the SGA requierments and should be set to a value greater than the SGA size.

    For more information, see the Oracle Solaris Tunable Parameters Reference Manual.

D.2 Configuring Shell Limits for Oracle Solaris

Oracle recommends that you set shell limits and system configuration parameters as described in this section.

Note:

The shell limit values in this section are minimum values only. For production database systems, Oracle recommends that you tune these values to optimize the performance of the system. See your operating system documentation for more information about configuring shell limits.

The ulimit settings determine process memory related resource limits. Verify that the shell limits displayed in the following table are set to the values shown:

Shell Limit Description Soft Limit (KB) Hard Limit (KB)
STACK Size of the stack segment of the process at most 10240 at most 32768
NOFILES Open file descriptors at least 1024 at least 65536
MAXUPRC or MAXPROC Maximum user processes at least 2047 at least 16384

To display the current value specified for these shell limits enter the following commands:

ulimit -s
ulimit -n

D.3 Setting UDP and TCP Kernel Parameters Manually

If you do not use a Fixup script or CVU to set ephemeral ports, then use NDD to ensure that the kernel TCP/IP ephemeral port range is broad enough to provide enough ephemeral ports for the anticipated server workload. Ensure that the lower range is set to at least 9000 or higher, to avoid Well Known ports, and to avoid ports in the Registered Ports range commonly used by Oracle and other server ports. Set the port range high enough to avoid reserved ports for any applications you may intend to use. If the lower value of the range you have is greater than 9000, and the range is large enough for your anticipated workload, then you can ignore OUI warnings regarding the ephemeral port range.

Use the following commands to check your current range for ephemeral ports:

On Oracle Solaris 10, use the following ndd command:

# /usr/sbin/ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port
32768

65535

On Oracle Solaris 11, use the following ipadm command:

# ipadm show-prop -p smallest_anon_port,largest_anon_port tcp

PROTO PROPERTY           PERM CURRENT PERSISTENT DEFAULT POSSIBLE
tcp   smallest_anon_port rw   32768       --     32768   1024-65535
tcp   largest_anon_port  rw   65500       --     65535   32768-65535

In the preceding examples, the ephemeral ports are set to the default range (32768-65535).

If necessary for your anticipated workload or number of servers , update the UDP and TCP ephemeral port range to a broader range. For example:

On Oracle Solaris 10

# /usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 9000
# /usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65500
# /usr/sbin/ndd -set /dev/udp udp_smallest_anon_port 9000
# /usr/sbin/ndd -set /dev/udp udp_largest_anon_port 65500

On Oracle Solaris 11

# ipadm set-prop -p smallest_anon_port=9000 tcp
# ipadm set-prop -p largest_anon_port=65500 tcp
# ipadm set-prop -p smallest_anon_port=9000 udp
# ipadm set-prop -p largest_anon_port=65500 udp

Oracle recommends that you make these settings permanent. Refer to your system administration documentation for information about how to automate this ephemeral port range alteration on system restarts.

See Also:

"Setting TCP Network Protocol Buffer for Direct NFS Client" if you use Direct NFS Client