您的位置:首页 > 博客中心 > 数据库 >

Linux 下 Oracle 内核参数优化

时间:2022-03-14 12:31

数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块。而操作系统则是Oracle稳定运行与最大化性能的基石。本文主要描述基于Linux系统下 Oracle 内核参数的配置。

    校验下面的列表中显示的内核参数的值被设置为大于或等于下面所显示的最小值。

    如果你的系统中下面的任意参数的当前值已经大于或高于下面列出的值,请不要做任何修改。

 

下面的步骤给出了如何去校验并设置这些参数的值。

    通过执行下面的命令进行校验

    /sbin/sysctl -a | egrep "kernel.shmall|kernel.shmmax|kernel.shmmn|kernel.sem"

    然后比较下表所列出的值

注意:下表显示的是内核参数以及shell 限制所需的最小值。对于生产数据库,Oracle建议去调整这些值使得数据库性能达到最优。有关优化内核参数更多信息请参考操作系统相关文档。

 

Oracle 内核参数参考值

Parameter

Command

semmsl, semmns, semopm, and semmni

# /sbin/sysctl -a | grep sem

This command displays the value of the semaphore parameters in the order listed.

shmall, shmmax, and shmmni

# /sbin/sysctl -a | grep shm

This command displays the details of the shared memory segment sizes.

file-max

# /sbin/sysctl -a | grep file-max

This command displays the maximum number of file handles.

ip_local_port_range

# /sbin/sysctl -a | grep ip_local_port_range

This command displays a range of port numbers.

rmem_default

# /sbin/sysctl -a | grep rmem_default

rmem_max

# /sbin/sysctl -a | grep rmem_max

wmem_default

# /sbin/sysctl -a | grep wmem_default

wmem_max

# /sbin/sysctl -a | grep wmem_max

tcp_wmem

# /sbin/sysctl -a | grep tcp_wmem

tcp_rmem

# /sbin/sysctl -a | grep tcp_rmem

 

修改内核参数   

    如果上述查询的内核值小于最小值,按照下面的步骤进行修改:

    使用任意的文本编辑器编辑/etc/sysctl.conf 文件, 添加或编辑下列类似的行:

    注:仅仅修改你需要调整的参数。对于信号量参数 (kernel.sem), 你必须指定所有的四个值。 如果当前的值大于最小值,那么使用或保留当前值。

        fs.file-max = 512 * PROCESSES

        kernel.shmall = 2097152

        kernel.shmmax = 2147483648

        kernel.shmmni = 4096

        kernel.sem = 250 32000 100 128

        or

        kernel.sem = 250 256000 100 1024

        net.ipv4.ip_local_port_range = 1024 65000

        net.core.rmem_default = 4194304

        net.core.rmem_max = 4194304

        net.core.wmem_default = 262144

        net.core.wmem_max = 262144

        net.ipv4.tcp_wmem = 262144 262144 262144

        net.ipv4.tcp_rmem = 4194304 4194304 4194304

    注:参数shmmax 最小值是 0.5 GB。然而 Oracle 建议设置该参数的值到2GB去最大化系统性能。

    在/etc/sysctl.conf文件里指定的这些参数值,重新启动系统后依然被保留。 然而在 SUSE Linux Enterprise Server 系统中,重新启动系统前输入下面的命令来确保系统启动时读到 /etc/sysctl.conf 文件:

        # /sbin/chkconfig boot.sysctl on

    输入下面的命令以使得当前修改的这些内核参数的值立即生效:

        # /sbin/sysctl -p

    上面的这个命令同时可以看到刚刚设置的参数及值,如果不正确再次编辑该文件并输入正确的值。

    可以通过命令/sbin/sysctl -a 显示当前所有可用值.

    在 SUSE 系统中,输入下面的命令使得系统读取/etc/sysctl.conf文件当系统启动的时候:

        # /sbin/chkconfig boot.sysctl on

    在 SUSE 系统中,你必须输入oinstall 组的gid作为参数 /proc/sys/vm/hugetlb_shm_group的值. 主要是为oinstall组内的成员授予许可去创建共享内存段

    如下面的示例,oinstall组id为501

        # echo 501 > /proc/sys/vm/hugetlb_shm_group

    运行上述命令后,使用vi添加下列文本到 /etc/sysctl.conf,以允许 boot.sysctl 随操作系统启动时运行:

        vm.hugetlb_shm_group=501

    注:仅仅一个组能够被定义给vm.hugetlb_shm_group.

    一旦在/etc/sysctl.conf 文件更新参数后,要么重新启动计算机或者运行命令 sysctl -p 激活 /etc/sysctl.conf 文件的新值,并使之生效。

 

为Oracle 用户设置shell限制

    为提高oracle性能,必须为oracle用户增加下列shell限制:

 

Shell Limit

   Item in limits.conf    

Hard Limit

Maximum number of open file descriptors

   nofile

65536

Maximum number of processes available to a single user

   nproc

16384

    增加shell 限制:

    添加下列行到/etc/security/limits.conf 文件:

        oracle              soft    nproc   2047

        oracle              hard    nproc   16384

        oracle              soft    nofile  1024

        oracle              hard    nofile  65536

    添加或编辑/etc/pam.d/login 文件,当下面的条目不存在时:

        session    required     pam_limits.so

    取决于Oracle用户缺省的shell环境,为缺省的shell启动文件作下列更改:

 

    对于Bourne, Bash, or Korn shell, 添加下列行到/etc/profile 文件 (SUSE Linux 则添加到/etc/profile.local):

        if [ $USER = "oracle" ]; then

                if [ $SHELL = "/bin/ksh" ]; then

                      ulimit -p 16384

                      ulimit -n 65536

                else

                      ulimit -u 16384 -n 65536

                fi

        fi

 

原文出处: 

 

更多参考

有关Oracle RAC请参考
                                                      
                
    
    

有关Oracle 网络配置相关基础以及概念性的问题请参考:
    
         
         

有关基于用户管理的备份和备份恢复的概念请参考
                                       

有关RMAN的备份恢复与管理请参考
                                                           

有关ORACLE体系结构请参考
                                                   

本类排行

今日推荐

热门手游