正确的参数设置不仅能提高数据库的性能,还能确保系统的稳定性和安全性
本文将深入探讨Linux Oracle参数配置的关键点,以帮助读者更好地理解和实施这些配置
一、Linux系统参数配置 1. /etc/sysctl.conf 文件配置 `/etc/sysctl.conf`文件是Linux系统中用于配置内核参数的关键文件
以下是一些关键的参数配置及其解释: - kernel.core_uses_pid:控制core文件的文件名中是否添加pid作为扩展名
如果设置为1,则生成的core文件格式为core.xxxx,其中xxxx是进程ID;如果设置为0,则生成的core文件统一命名为core
- kernel.shmall:指定系统可以分配的所有共享内存的最大值,单位为系统页大小(pagesize)
在64位系统中,如果物理内存为16GB,则此值应设置为4194304(16GB/4KB)
- kernel.shmmax:定义单个共享内存段的最大值,单位为字节(bytes)
此值应足够大,以容纳整个SGA(系统全局区)
对于64位系统,通常可以设置为物理内存的50%或更高,但不应超过物理内存总量
- kernel.shmmni:指定系统可分配的共享内存段的最大数量
默认值为4096,通常这个值可以满足大部分需求
- kernel.sem:控制信号量的参数,包括semmsl(每个信号量集合中的最大信号量数)、semmns(系统范围内的最大信号量总数)、semopm(每个semop()调用可以设置的信号量操作的最大数量)和semmni(系统信号量集合的最大数量)
这些值应根据Oracle实例的processes参数进行配置,以确保有足够的信号量供Oracle使用
- fs.file-max:指定每个进程可以打开的最大文件数量
对于Oracle数据库,此值应设置为数据库中数据文件的最大个数,推荐设置较大的数值,如65536
- net.ipv4.ip_local_port_range:指定应用程序可使用的IPv4端口范围
对于并发数较高的数据库,可以将其设置为1024~65000
- net.core.rmem_default 和 net.core.rmem_max:分别指定套接字接收缓冲区大小的缺省值和最大值
这些值应根据系统需求进行调整,以确保网络性能
- net.core.wmem_default 和 net.core.wmem_max:分别指定套接字发送缓冲区大小的缺省值和最大值
同样,这些值也应根据系统需求进行调整
- vm.swappiness:控制内存与交换分区之间的优化作业
当swappiness=0时,表示最大限度使用物理内存;当swappiness=100时,表示积极使用交换分区
Linux的默认设置为60,即当内存使用到40%时,开始使用交换分区
- vm.vfs_cache_pressure:表示内核回收用于directory和inode cache内存的倾向
降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache
建议设置为200,以提高文件系统的性能
- vm.min_free_kbytes:指定系统最低保留内存的K字节数
当可用内存低于此值时,系统开始回收cache内存
2. /etc/security/limits.conf 文件配置 `/etc/security/limits.conf`文件用于限制用户资源,如进程数和文件数等
对于Oracle用户,应配置以下参数: - `grid soft nproc 65536 grid hard nproc 65536`:设置grid用户的软限制和硬限制进程数为65536
- `grid soft nofile 65536 grid hard nofile 65536`:设置grid用户的软限制和硬限制文件数为65536
- `oracle soft nproc 65536 oracle hard nproc 65536`:设置oracle用户的软限制和硬限制进程数为65536
- `oracle soft nofile 65536 oracle hard nofile 65536`:设置oracle用户的软限制和硬限制文件数为65536
这些配置确保了Oracle用户和grid用户有足够的资源来运行数据库实例
3. /etc/profile 文件配置 `/etc/profile`文件用于设置系统环境变量
对于Oracle用户,可以在此文件中添加以下配置: if 【 $USER = oracle】 ||【 $USER = grid 】; then if【 $SHELL = /bin/ksh】; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 这些配置限制了Oracle用户和grid用户的进程数和文件数,以确保系统资源的合理分配
二、Oracle系统参数配置 Oracle数据库的参数配置同样至关重要
以下是一些关键的Oracle系统参数及其解释: - SGA_MAX_SIZE:指定实例允许使用的SGA(系统全局区)上限
这是一个静态参数,不能动态修改
应根据系统的物理内存大小和Oracle数据库的需求进行设置
- SGA_TARGET:指定SGA的目标大小
这是一个动态参数,可以动态修改
Oracle 10g引入了自动共享内存管理(ASMM),通过SGA_TARGET参数来控制SGA的自动管理
- open_cursors:指定一个会话