在 Ubuntu + Oracle 数据库 环境下,“调参数”通常分为 操作系统参数(内核/资源限制) 和 Oracle 数据库参数(SGA/PGA/进程数等) 两大类。下面按常见场景给你一个实用清单。
Oracle 依赖共享内存、信号量等。
sudo vi /etc/sysctl.conf
常见参数(示例,按内存调整):
kernel.shmmax = 4294967296 # 单段共享内存最大(4G)
kernel.shmall = 1048576 # 共享内存总页数
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
生效:
sudo sysctl -p
Oracle 用户(如 oracle)需要足够权限。
sudo vi /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
⚠ 需要重新登录 oracle 用户生效。
free -h
swapon -s
大内存服务器建议:
sudo swapoff -a
或修改 /etc/fstab 注释 swap。
su - oracle
sqlplus / as sysdba
SHOW PARAMETER sga;
SHOW PARAMETER pga;
SHOW PARAMETER processes;
SHOW PARAMETER sessions;
ALTER SYSTEM SET MEMORY_MAX_TARGET=4G SCOPE=SPFILE;
ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=BOTH;
ALTER SYSTEM SET SGA_TARGET=3G SCOPE=BOTH;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G SCOPE=BOTH;
⚠ 修改后通常需要重启:
SHUTDOWN IMMEDIATE;
STARTUP;
ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE;
ALTER SYSTEM SET SESSIONS=600 SCOPE=SPFILE;
重启生效。
SHOW PARAMETER undo;
ALTER SYSTEM SET UNDO_RETENTION=1800 SCOPE=BOTH;
Redo log 大小(需重建 redo log):
SELECT GROUP#, BYTES FROM V$LOG;
ALTER SYSTEM SET DB_CACHE_SIZE=2G;
ALTER SYSTEM SET SHARED_POOL_SIZE=1G;
ALTER SYSTEM SET OPEN_CURSORS=1000;
ALTER SYSTEM SET LOG_BUFFER=16M;
SELECT * FROM V$SGA;
SELECT * FROM V$PGASTAT;
SELECT COUNT(*) FROM V$SESSION;
系统层:
top
free -h
ipcs -l
我可以 直接给你一套可复制的参数配置 ✅