Touch me!

     
 

Correct way to configure Solaris 10 kernel parameters resource controls for Oracle installation


Solaris 10 introduces new dynamically changeable project-related resource controls contrary to Solaris 9 (and earlier) static system-wide kernel tunables approach. Thus, installation procedure for any Oracle database version on a machine running Solaris 10 differs from one used with prior Solaris versions. Instead of editing /etc/system file and rebooting to make changes effective, you should create a project, to which Oracle software owning user (usually called 'oracle') will belong. In most cases, it is convenient to have a project called 'user.oracle', which will be automatically assigned to OS user called 'oracle'. Then you should assign the desired resource control values to the project.

Unfortunately, Oracle 10g documentation incorrectly specifies that 'prctl' command should be used for this purpose, while this command does not save changes made to project properties, and after reboot these customisations will be lost. Moreover, for unknown reason Oracle 10g documentation suggests applying changes to project called 'user.root', making these changes unusable at all, as this project controls only processes owned by 'root' OS user. Oracle 11g documentation contains "correct" command to change and save permanently project attributes - 'projmod', but the old section, both with 'prctl' and 'user.root' mistakes, is also present, greatly confusing many DBAs and SysAdmins. Oracle 9i documentation do not cover Solaris 10 installation at all.

So, the correct steps to perform operations mentioned in "Configuring kernel parameters" section of Oracle installation guide for Solaris 10 upwards are:

  1. projadd user.oracle
    assuming the OS user 'oracle' will be the owner of installation
  2. projmod -s -K "process.max-sem-nsems=(privileged,VALUE,deny)" 'user.oracle'
    VALUE should be at least number of Oracle processes of largest (in terms of number of processes) instance running within this project + 10. Old kernel tunable is called 'semsys:seminfo_semmsl'. As long as this resource control is just a limit, any reasonably high value should work good.
  3. projmod -s -K "project.max-shm-memory=(privileged,VALUE,deny)" 'user.oracle'
    VALUE should be set to sum of SGA sizes of all Oracle instances running within this project. Old kernel tunable is called 'shmsys:shminfo_shmmax' and controls per-segment size limit. This is also just a limit, so any reasonable high value comes at no cost.

'semsys:seminfo_semmns' is deprecated, and resource controls that replaced old tunables 'semsys:seminfo_semopm', 'semsys:seminfo_semmni' and 'shmsys:msginfo_msgmni' currently have reasonable default values to be used in any environment., assuming you are not going to create more then 128 Oracle instances at a single machine :)

This note applies to any Oracle database version supported on Solaris 10 - 9i, 10g, 11g.

 
 
 
 
Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
 

« May 2008
SunMonTueWedThuFriSat
    
1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
       
Today
[This is a Roller site]