debian

Debian上Oracle内存如何设置

小樊
45
2025-10-27 17:58:33
栏目: 云计算

1. 前置准备:确认系统内存与交换分区
在配置Oracle内存前,需先检查系统物理内存(free -h)和交换分区(grep SwapTotal /proc/meminfo)。Oracle建议交换分区大小至少为物理内存的1-1.5倍(如物理内存512MB,交换分区需1-1.5GB);若物理内存不足,可通过dd命令创建临时交换文件(如sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=1024sudo mkswap /mnt/swapfilesudo swapon /mnt/swapfile)。

2. 调整内核参数(/etc/sysctl.conf)
修改内核参数以支持Oracle内存管理,需添加或调整以下内容:

kernel.shmall = 物理内存大小(单位:页,1页=4KB,如512MB=131072页)  
kernel.shmmax = 物理内存大小(如512MB系统的`kernel.shmmax=536870912`)  
kernel.shmmni = 4096  # 共享内存段最大数量  
kernel.sem = 250 32000 100 128  # 信号量参数  
fs.file-max = 65536  # 系统最大文件句柄数  
net.ipv4.ip_local_port_range = 1024 65000  # 本地端口范围  
net.core.rmem_default = 262144  # 接收缓冲区默认大小  
net.core.rmem_max = 4194304  # 接收缓冲区最大大小  
net.core.wmem_default = 262144  # 发送缓冲区默认大小  
net.core.wmem_max = 1048576  # 发送缓冲区最大大小  
fs.aio-max-nr = 1048576  # 异步I/O最大请求数  

修改后执行sudo sysctl -p使配置生效。

3. 配置Shell资源限制(/etc/security/limits.conf)
为Oracle用户(如oracle)设置内存相关的软/硬限制,避免进程占用过多内存导致系统崩溃:

oracle soft nproc 2047  # 用户进程数软限制  
oracle hard nproc 16384  # 用户进程数硬限制  
oracle soft nofile 1024  # 用户打开文件数软限制  
oracle hard nofile 65536  # 用户打开文件数硬限制  
oracle soft memlock 33554432  # 用户锁定内存大小软限制(如32GB)  
oracle hard memlock 33554432  # 用户锁定内存大小硬限制  

需确保memlock限制大于SGA+PGA的总大小。

4. 配置Oracle环境变量(~/.bashrc或~/.bash_profile)
编辑Oracle用户的家目录下的.bashrc文件,设置Oracle基础环境变量:

export ORACLE_BASE=/u01/app/oracle  # Oracle基目录  
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1  # Oracle主目录(根据实际安装路径调整)  
export ORACLE_SID=orcl  # 数据库实例名(根据实际情况调整)  
export PATH=$ORACLE_HOME/bin:$PATH  # 添加Oracle命令到PATH  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH  # 添加Oracle库路径  

执行source ~/.bashrc使配置立即生效。

5. 配置SGA(系统全局区)
SGA是Oracle共享内存区域,用于存储数据库缓冲区、共享池、重做日志缓冲区等。推荐使用自动SGA管理sga_target),由Oracle自动分配各组件(如共享池、缓冲区缓存)的内存:

修改后需重启Oracle实例(sqlplus / as sysdbaSHUTDOWN IMMEDIATESTARTUP)使配置生效。

6. 配置PGA(程序全局区)
PGA是每个服务器进程的私有内存区域,用于存储排序、哈希连接等工作区。推荐使用自动PGA管理pga_aggregate_target),由Oracle自动分配各进程的PGA内存:

修改后需重启Oracle实例使配置生效。

7. 验证内存配置

0
看了该问题的人还看了