2. 服务器与存储规划
Oracle 数据库的服务器与存储规划,本质上不是“买一台配置高的机器”,而是把业务规模翻译成可验证的资源指标,再把这些指标落到物理机、虚拟机或云主机的规格,以及 RAID 与 ASM 磁盘组的布局上。规划顺序应当是:先量化业务负载,再推导 CPU、内存、IOPS 与吞吐量,最后决定部署形态和存储冗余方式。顺序颠倒,往往会出现“CPU 很闲但 I/O 排队严重”或“内存够大但日志写入成为瓶颈”的失衡。
一、把业务规模翻译成资源指标
业务规模通常以并发用户数、每秒事务数(TPS)、日交易量、报表查询频率、数据保留周期等口径描述。规划时要把它们转成数据库侧可观测的量:活跃会话数、每秒逻辑读、每秒物理读、每秒 Redo 生成量、单次事务平均响应时间目标。例如一个中等规模的订单系统,假设峰值 300 并发会话、峰值 800 TPS、平均每事务产生 8KB Redo、日增数据 20GB、保留 3 年,那么可以推导出:Redo 峰值约 6.4MB/s,数据文件年增量约 7TB,这些数字直接决定存储容量、日志盘带宽和备份窗口。
需要强调的是,这些是规划假设值,不是实测结果。生产上线前必须用真实业务压测或 AWR 历史数据校准,否则规划只是纸面推演。
二、CPU 与内存的估算方法
CPU 规划看两个维度:核数与单核性能。OLTP 系统更依赖高主频与低延迟,通常按“峰值 TPS × 单事务 CPU 消耗”估算,再留 30%~50% 余量。假设单事务消耗 0.5ms CPU,800 TPS 需要约 0.4 核,但考虑到并行、解析、后台进程和峰值抖动,实际会配置 8~16 物理核。OLAP 或批量场景则更看重并行度,核数需求明显更高。
内存规划的核心是 SGA 与 PGA。SGA 中 Buffer Cache 应能容纳热数据,Shared Pool 要能放下常用 SQL 与执行计划。经验上 OLTP 库 SGA 可占物理内存 50%~70%,其中 Buffer Cache 占 SGA 的 60% 左右。若热数据约 200GB,则 Buffer Cache 至少 200GB,SGA 约 330GB,物理内存需 512GB 级别。PGA 则按并发排序、哈希连接量估算,OLTP 可设 20%~30% 物理内存,并配合 pga_aggregate_target 限制。
三、IOPS 与吞吐量的关系
IOPS 关注“每秒多少次 I/O”,吞吐量关注“每秒多少 MB”。OLTP 以随机小 I/O 为主,IOPS 是主指标;数据仓库与备份以顺序大 I/O 为主,吞吐量是主指标。二者不能互相替代:一块盘可能吞吐很高但随机 IOPS 很低,也可能 IOPS 高但带宽有限。
估算时先区分读与写。读 IOPS 来自 Buffer Cache 未命中后的物理读,写 IOPS 来自 DBWR 写脏块、LGWR 写 Redo、归档与备份。假设峰值物理读 5000 IOPS、写 2000 IOPS,总需求约 7000 IOPS,再按 RAID 写惩罚放大:RAID 10 写惩罚为 2,RAID 5 为 4,RAID 6 为 6。若用 RAID 5,写 IOPS 实际需按 2000×4=8000 计算,总盘数需求会显著上升。这也是生产库更倾向 RAID 10 的原因。
四、物理机、虚拟机与云主机的选型
物理机适合核心交易库、对 IOPS 和延迟极敏感的场景,优势是资源独占、NUMA 可控、本地 NVMe 延迟低。虚拟机适合中等负载、需要快速克隆和迁移的环境,但要注意存储后端是否共享、是否存在“邻居噪声”,以及 vCPU 超分对 Oracle 授权和性能的影响。云主机适合弹性扩展、灾备和测试环境,选型时必须确认云盘类型(如 ESSD、SSD、高效云盘)的 IOPS 与吞吐上限,并核对是否支持多挂载与快照一致性。
一个实用的判断方法是:若峰值 IOPS 需求超过单块云盘上限,或对 Redo 写入延迟要求低于 1ms,优先物理机或本地 NVMe;若负载波动大、需要快速扩缩容,云主机更合适;若已有虚拟化平台且存储阵列性能充足,虚拟机可作为折中方案。
五、RAID 与 ASM 磁盘组落地
数据盘推荐 RAID 10,兼顾性能与冗余;日志盘推荐 RAID 1 或 RAID 10,避免写惩罚;归档与备份可用 RAID 5/6 降低成本。ASM 层面,DATA 组放数据文件,REDO 组放在线日志,FRA 组放归档与备份。OLTP 的 AU 选 1MB,数据仓库可选 4MB。冗余级别上,DATA 与 FRA 用 NORMAL,REDO 用 HIGH 更稳妥。故障组应跨机柜或跨存储阵列,确保单点故障不影响可用性。
六、可直接使用的规划参数表(示例)
| 项目 | 示例值 | 说明 |
|---|---|---|
| 峰值 TPS | 800 | 业务假设值 |
| CPU | 16 物理核 | 含 30% 余量 |
| 物理内存 | 512GB | SGA 330GB,PGA 120GB |
| 读 IOPS | 5000 | Buffer Cache 未命中 |
| 写 IOPS | 2000 | DBWR + LGWR |
| RAID 级别 | 数据 RAID 10,日志 RAID 1 | 降低写惩罚 |
| ASM 磁盘组 | DATA / REDO / FRA | AU 1MB,NORMAL/HIGH |
| 部署形态 | 物理机 + 本地 NVMe | 核心交易库 |
这张表的价值在于把“业务规模”与“硬件规格”之间的推导关系固定下来。实际项目中,只需替换业务输入,重新计算 IOPS 与盘数,就能快速得到一版可评审的规划方案。评审时重点看三处:CPU 余量是否足够、内存能否覆盖热数据、存储 IOPS 是否满足峰值并留有余量。三处都通过,规划才算闭环。