Debian上提升Oracle数据库稳定性的实用清单
一 系统资源与内核参数
- 资源与权限基线
- 创建专用账户与目录:groupadd oinstall / groupadd dba;useradd -g oinstall -G dba oracle;mkdir -p /u01/app/oracle;chown -R oracle:oinstall /u01;chmod -R 755 /u01。
- 资源限制(/etc/security/limits.conf):oracle soft/hard nproc 16384;oracle soft/hard nofile 65536;oracle soft/hard memlock 33554432(单位KB,约32GB,按物理内存下调)。PAM 会话限制确保生效(/etc/pam.d/login 包含 session required pam_limits.so)。
- 内核与网络基线(/etc/sysctl.conf,sysctl -p 使生效)
- 共享内存与信号量:kernel.shmall 2097152;kernel.shmmax(建议设为物理内存的约70–80%,如 32GB 机器可用 25769803776);kernel.shmmni 4096;kernel.sem 250 32000 100 128。
- 文件句柄与AIO:fs.file-max 65536;fs.aio-max-nr 1048576。
- 网络与端口:net.core.rmem_default 262144;net.core.rmem_max 4194304;net.core.wmem_default 262144;net.core.wmem_max 1048576;net.ipv4.ip_local_port_range 1024 65000。
- 存储与文件系统
- 数据/日志/归档建议使用 XFS/ext4,开启 barrier/nobarrier 结合阵列写缓存策略;I/O 调度器优先 none/mq-deadline(SSD/NVMe),机械盘可用 cfq。
- 禁用透明大页(THP):echo never > /sys/kernel/mm/transparent_hugepage/enabled;echo never > /sys/kernel/mm/transparent_hugepage/defrag;并加入 /etc/rc.local 或 systemd 服务持久化。
- 交换分区:至少与内存等量或更高,避免 OOM 导致实例异常。
二 数据库内存与会话配置
- 内存目标与上限(SGA/PGA)
- 启用自动内存管理:ALTER SYSTEM SET MEMORY_TARGET=…, MEMORY_MAX_TARGET=… SCOPE=SPFILE;(总和不超过物理内存,预留 OS 与页面缓存)。
- 或手动分片:ALTER SYSTEM SET SGA_TARGET=…; ALTER SYSTEM SET PGA_AGGREGATE_TARGET=…;(避免 SGA+PGA 超出物理内存)。
- 共享池与缓冲池
- 共享池:ALTER SYSTEM SET SHARED_POOL_SIZE=…; 保留区:ALTER SYSTEM SET SHARED_POOL_RESERVED_SIZE=…;
- 数据缓冲:ALTER SYSTEM SET DB_CACHE_SIZE=…;(依据 AWR/ADDM 调整命中率)。
- 并发与会话
- 进程与会话:ALTER SYSTEM SET PROCESSES=…; SESSIONS=…;(SESSIONS ≈ PROCESSES×1.1 + 50)。
- 并行度:ALTER SESSION SET parallel_degree_policy=…;(依据负载与资源,避免过度并行)。
- 诊断与基线
- 定期生成 AWR/ADDM 报告(@?/rdbms/admin/awrrpt.sql、@?/rdbms/admin/addmrpt.sql),定位 Top SQL、等待事件与配置短板。
三 SQL与索引治理
- 执行计划与统计
- 使用 EXPLAIN PLAN 与 DBMS_XPLAN 查看计划;开启 AUTOTRACE 辅助判断全表扫描/索引失效。
- 定期收集统计信息:EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>‘YOUR_SCHEMA’, estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=>‘FOR ALL COLUMNS SIZE AUTO’);
- 索引策略
- 为高频过滤/连接列建立合适索引;对高碎片索引执行 ALTER INDEX … REBUILD;删除不再使用的索引;优先 覆盖索引 减少回表。
- SQL 规范
- 避免 **SELECT ***;使用 绑定变量 降低硬解析;必要时使用 HINT 引导优化器(谨慎、以计划为准)。
四 高可用与备份恢复
- 高可用
- 生产环境建议配置 Oracle Data Guard(物理/逻辑备库)实现故障切换与读写分离,降低单点风险。
- 备份恢复
- 采用 RMAN 定期全备+增量备+归档日志备份;验证备份可恢复性(RESTORE … VALIDATE);保留策略与多份拷贝分散存储。
- 定期演练恢复流程与时间点恢复(PITR),确保 RTO/RPO 达标。
五 监控与日常运维
- 系统层
- 持续监控 CPU、内存、I/O(如 top、vmstat、iostat),关注 await、svctm、util 与长时 I/O 等待;阈值告警与趋势分析结合 AWR/ADDM 定位根因。
- 数据库层
- 关注 v$session_wait 等视图识别锁等待、日志写入瓶颈与热点对象;结合 AWR/ADDM 的 Top SQL/Top Segments 持续优化。