1. 系统资源限制配置
在Debian上运行Oracle数据库前,需通过系统配置限制Oracle用户的资源使用,避免单个进程过度消耗系统资源。主要涉及两个文件:
/etc/security/limits.conf:设置Oracle用户的软/硬限制(软限制可突破,硬限制为绝对上限)。例如:oracle soft nproc 16384(最大进程数软限制)、oracle hard nproc 16384(最大进程数硬限制)、oracle soft nofile 65536(最大文件描述符数软限制)、oracle hard nofile 65536(最大文件描述符数硬限制)、oracle soft as 512000(地址空间软限制,单位KB)、oracle hard as 1024000(地址空间硬限制,单位KB)。/etc/pam.d/login:确保包含以下行以启用资源限制:session required pam_limits.so。2. 内核参数优化
Oracle对内核参数有特定要求,需调整/etc/sysctl.conf文件以提升数据库性能:
kernel.shmmax(单个共享内存段最大大小,建议设为物理内存的80%,如2147483648=2GB)、kernel.shmmni(共享内存段最大数量,建议4096)、kernel.shmall(共享内存总页数,建议物理内存KB数/页大小,如2097152=2GB/4KB)。kernel.sem(信号量集合数、最大信号量数等,建议250 32000 100 128)。fs.file-max(系统最大文件描述符数,建议65536)。net.ipv4.ip_local_port_range(本地端口范围,建议1024 65000)。sudo sysctl -p使参数生效。3. 内存分配优化
Oracle内存分为SGA(系统全局区)(共享内存,用于缓存数据、SQL语句等)和PGA(程序全局区)(私有内存,用于排序、哈希等操作)。需根据服务器内存大小调整:
ALTER SYSTEM命令设置,例如:ALTER SYSTEM SET SGA_TARGET=2G SCOPE=spfile;(启用自动SGA管理,目标大小2GB)、ALTER SYSTEM SET SHARED_POOL_SIZE=512M SCOPE=both;(共享池大小,保留常用对象)、ALTER SYSTEM SET DB_CACHE_SIZE=1G SCOPE=both;(数据缓存区大小,提升磁盘I/O性能)。ALTER SYSTEM命令设置,例如:ALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G SCOPE=both;(PGA总大小,自动管理每个会话的PGA分配)。MEMORY_TARGET(总内存目标)和MEMORY_MAX_TARGET(最大总内存),例如:ALTER SYSTEM SET MEMORY_TARGET=3G SCOPE=spfile;、ALTER SYSTEM SET MEMORY_MAX_TARGET=4G SCOPE=spfile;。4. 存储I/O优化
存储I/O是数据库性能瓶颈之一,需优化以下参数:
/etc/fstab中为Oracle数据目录添加noatime,nodiratime,data=writeback选项(减少文件访问时间更新,提升写入性能)。filesystemio_options=setall(开启异步和直接I/O),可通过ALTER SYSTEM命令修改。5. CPU资源管理
ALTER SYSTEM命令设置并行度,例如:ALTER TABLE large_table PARALLEL 8;(表并行度为8,利用多核CPU加速查询)、ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4;(会话级强制并行查询)。taskset命令将Oracle进程绑定到特定CPU核心(减少上下文切换),例如:taskset -c 0-3 oracle(绑定到0-3号核心)。top、vmstat命令监控CPU利用率,若CPU使用率持续高于80%,需考虑升级CPU或优化SQL语句。6. 监控与调优工具
@?/rdbms/admin/awrrpt.sql脚本生成报告,分析数据库性能瓶颈(如SQL执行慢、资源争用)。@?/rdbms/admin/addmrpt.sql脚本生成报告,提供优化建议(如调整内存、SQL语句优化)。ALTER SESSION SET sql_trace=TRUE;开启SQL跟踪,分析特定会话的SQL执行细节(如解析时间、执行时间)。