在Ubuntu上配置Oracle资源限制,需分别调整系统内核参数和Oracle用户资源限制,具体步骤如下:
编辑 /etc/sysctl.conf
文件,添加或修改以下参数(根据系统内存调整数值):
# 内存相关参数
kernel.shmall = 2097152
kernel.shmmax = 2147483648 # 最大共享内存(建议设置为物理内存的50%-80%)
kernel.shmmni = 4096
fs.file-max = 65536 # 最大文件描述符数
net.ipv4.ip_local_port_range = 9000 65500 # 可用端口范围
应用配置:
sudo sysctl -p
编辑 /etc/security/limits.conf
文件,为Oracle用户(如oracle
)添加以下限制:
oracle soft nproc 2047 # 软限制:最大进程数
oracle hard nproc 16384 # 硬限制:最大进程数
oracle soft nofile 1024 # 软限制:最大文件描述符数
oracle hard nofile 65536 # 硬限制:最大文件描述符数
oracle soft stack 10240 # 软限制:栈大小(单位:KB)
确保PAM模块生效,在 /etc/pam.d/login
和 /etc/pam.d/sshd
中添加:
session required pam_limits.so
通过SQL命令或SPFILE配置内存参数(以SPFILE为例):
-- 自动内存管理(AMM)
ALTER SYSTEM SET memory_target=8G SCOPE=SPFILE;
ALTER SYSTEM SET memory_max_target=16G SCOPE=SPFILE;
-- 或手动配置SGA/PGA
ALTER SYSTEM SET sga_target=4G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=SPFILE;
重启数据库使配置生效:
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
STARTUP;
sysctl -a | grep shm
sysctl -a | grep file-max
su - oracle
ulimit -n # 查看文件描述符限制
ulimit -u # 查看进程数限制
SELECT * FROM v$sgainfo; -- 查看SGA使用情况
SELECT * FROM v$pga_aggregate_target_advice; -- 查看PGA使用情况
--shm-size
参数设置共享内存大小(如--shm-size=2g
)。