简介:这是一份Oracle Exadata x9m产品介绍PPT,面向数据库管理员、架构师、售前工程师及企业IT决策者,用于快速了解Exadata云数据库平台的性能指标、硬件规格与核心特性。内容从Exadata十余年发展历程切入,说明其针对OLTP、数据仓库、内存分析等负载的端到端优化思路,并梳理客户价值与典型行业应用,包括财富100强企业的采用情况。演示文稿详细列出全架、半架、四分之一架、八分之一架等配置下的SQL闪存带宽、PMEM读写IOPS、磁盘带宽、数据加载速率等关键参数,还给出与Dell EMC PowerMax的对比数据、线性扩展能力及高可用性说明,便于评估产品选型价值。资源为单个pptx演示文稿,约57.17MB,版式完整、图文并茂,可直接用于内部技术培训、售前方案汇报或数据库平台规划参考。目前已有230人学习,适合需要系统掌握Exadata x9m技术卖点与性能数据,或正在做数据库架构选型与云基础设施规划的人员阅读。
1. Exadata X9M 是什么:一套让 Oracle 用户不再熬夜调优的“数据库一体机”
如果你管过一套大并发的 Oracle 业务库,大概率经历过这样的夜晚:每秒事务量没涨多少,磁盘 IO 利用率却先拉满了,AWR 报告里User I/O Wait一截顶到天上,加班两小时只为把一条 SQL 从 5 秒压到 3 秒。Exadata X9M 就是为这种场景造出来的——它把计算、存储、网络和 Oracle 数据库软件打包进一个机柜,让 SQL 里的全表扫描直接在存储节点上完成,而不是把几亿行数据搬回数据库服务器再过滤。这套 Exadata X9M 产品定位是 Oracle 数据库的专属硬件底座,主打高性能、低延迟,适合 OLTP 压力大和 OLAP 混合负载并存的核心系统。对 DBA 和架构师来说,它解决的核心痛点是:数据库软件与硬件配合的“黑匣子”问题变成了可预测、可配置的整套交付。这篇文章从一个实践者视角,把它的性能、参数、特性和上线路径拆开讲清楚,读完你就知道它值不值得引入,以及上了之后真正的坑在哪。
2. Exadata X9M 的技术底座:为什么它能做到“查询不下推就吃亏”
2.1 从 IO 路径看 X9M:存储节点把查询“接走”了
传统 Oracle 架构里,数据库服务器发出 IO 请求后,存储阵列把数据块原样搬回来,由数据库实例完成过滤、连接、聚合。问题在于:一次全表扫描如果命中 100 万行,数据库服务器就要从存储上拉 100 万行,网络和内存全花在这上面。Exadata X9M 改变了这条路径——它的存储节点(Storage Cell)跑着 CELLSRV 进程,这个进程不只会响应 IO,还会配合数据库服务器做“智能扫描”(Smart Scan)。当一条 SQL 需要扫描大分区表时,数据库服务器把谓词条件下发到存储节点,存储节点直接在本地硬盘上做过滤,只把命中的行返回。这个特性在 Oracle 里叫“存储端卸载”。
X9M 的存储节点之间用高速网络互联,这套网络在 X9M 上用的是 RoCE(RDMA over Converged Ethernet,融合以太网上的远程直接内存访问)或 InfiniBand,具体看机型配置。RDMA 的最大价值是绕过 CPU 参与数据拷贝:存储节点内存里的数据可以直接写入数据库服务器的内存缓冲区,不经过两边网卡的驱动协议栈。你在top里看到 CPU 利用率很低但 IO 吞吐极高,多半就是走了这条路径。
拿一个实际例子说明:一张 10 亿行的订单表,按日期范围查询。传统架构下,这条 SQL 会把所有命中的行(比如 3 亿行)传回数据库服务器,再做 WHERE 过滤;Exadata 上,存储节点只把 300 万行真正命中的结果返回。这个差距不是几台好硬盘能补回来的,是架构层面的区别。
2.2 列式存储与混合列压缩:让全表扫描变成“只跑需要的列”
Exadata X9M 的最小存储单元是 Exadata 智能存储软件管理的 Cell,每个 Cell 内部采用混合列式压缩(HCC,Hybrid Columnar Compression)。传统行存储是按行存:一行所有列挨在一起;列式存储是按列存:同一个列的值连续存放。后者对分析型查询极其有利——如果我只需要查订单金额和客户 ID 两列,列式存储只需要读这两列的数据块,而不是把整行都读出来。
HCC 的压缩比在真实生产环境里能做到 5 到 15 倍,我见过一张 8TB 的日志表压缩到 800GB。这带来的直接收益不是省钱,而是扫描数据量大幅下降:同样的 IO 带宽,压缩后一秒钟能“看完”的数据量多了一个量级。你可能会担心压缩影响写入性能,确实,HCC 对 DML 有额外开销,所以实践中常见的用法是把 HCC 用在只读的大表、历史分区和归档数据上,在线交易表仍用普通行存储。
X9M 的第三代存储软件还加入了持久化内存(PMEM)缓存层。数据库热点数据块会被自动放在 PMEM 里,访问延迟可以压到微秒级。这个缓存不需要 DBA 手工指定,Exadata 会根据 IO 模式自动识别热点。你在做容量规划时,重点看两个指标:单个 Cell 的可用 PMEM 大小和 Flash Cache 大小,这两个值直接决定热点突发时的响应速度。
2.3 什么业务适合上 X9M:选型前先问自己三个问题
接手过几套 Exadata 之后,我会建议团队在立项前先回答三个问题。第一,你的数据库是不是 Oracle?Exadata 是 Oracle 专属产品,MySQL、PostgreSQL 或者国产数据库没法直接利用 Smart Scan。第二,你的负载里有没有全表扫描、大分区扫描、报表类查询?如果全是“按主键等值查询”的纯 OLTP,Exadata 的存储卸载优势发挥不出来,这时普通的高端存储加数据库集群往往更划算。第三,你的数据量是否超过 10TB?数据量太小,Exadata 的优势不明显;但一旦单库数据量到几十 TB,传统存储的备份恢复时间、查询响应时间和扩容成本都会让你头疼。
还有个常被忽略的选型理由:运维复杂度。Exadata X9M 的一个机柜里,数据库服务器、存储节点、交换机全是预集成的,Oracle 企业版的补丁和硬件固件有统一的补丁包。相比自己拼一台“数据库服务器 + 中端存储 + 光纤交换机”的组合,Exadata 少了兼容性测试的环节。对于 DBA 团队规模不大、又需要保证核心库 SLA 的企业,这套东西省下来的人力成本是真实的。
3. X9M 的性能参数与配置选型:同样是 Exadata,为什么差价巨大
3.1 X9M-2 与 X9M-8:从“刀片服务器”数量看定位差异
Exadata X9M 产品线里,最常见的两个型号是 X9M-2 和 X9M-8。型号里的数字代表数据库服务器的形态差异:X9M-2 使用 2U 刀片式服务器,单个机柜可配置的数据库服务器数量更多,灵活性高;X9M-8 使用 8 路大型服务器,单个数据库服务器的 CPU 核数和内存容量大幅提升,适合那些单实例需要超大内存或超高计算密度的业务。
做性能估算时,先确认数据库服务器的 CPU 核数和内存频率。X9M-2 的数据库服务器用的是 Intel Xeon 可扩展处理器,具体型号按出厂批次不同会有差异,但你在 Oracle 官方配置器里看到的选型就两类:标准计算节点和高计算节点。高计算节点把 CPU 主频拉高,代价是单柜总核数减少。OLTP 业务卡在 CPU 单核性能时选高主频型号,OLAP 业务吃总核数时选标准型号。
存储服务器同样有“容量型”和“性能型”之分。容量型配置大容量高转速磁盘,适合历史数据存储;性能型采用 NVMe 闪存或更多 Flash Cache,适合高随机读场景。实践中的做法是:混合部署,热数据放在性能型存储节点上,冷数据放在容量型节点上,用一个磁盘组把它们统一管理。
这里给一张常用参数对照表,供你做预算和选型时的参考(具体数值以 Oracle 官方配置为准):
| 项目 | X9M-2 典型配置 | X9M-8 典型配置 |
|---|---|---|
| 数据库服务器形态 | 2U 服务器 | 8 路大型服务器 |
| 单柜数据库服务器数量 | 2~4 台(可扩展) | 通常 2 台起步 |
| 存储服务器数量 | 3~14 台 | 14 台左右 |
| 网络 | RoCE / InfiniBand | RoCE / InfiniBand |
| 适用负载 | OLTP + 混合负载 | 大内存 OLTP / 重型 OLAP |
| 典型内存规模 | 单机柜 TB 级起步 | 单机柜可到数十 TB |
别只看“Exadata X9M”一个名字就做决定,机柜里“低配 2 台 DB 节点 + 3 台存储”和“满配 4 台 DB 节点 + 14 台存储”的价差可能超过一倍。把两年的数据增长预测拿出来,再决定起步配置。
3.2 存储参数:磁盘组、闪存卡和 PMEM 怎么分
Exadata 的存储架构里,CELL 里的磁盘会被划分成多个磁盘组。你可以建DATA组存放在线数据,RECO组存放闪回日志和归档日志,DBFS组存放外部文件。这个划分决定了性能隔离效果——如果归档日志和在线数据放在同一组,一旦日志写入量大,你的核心业务查询就会跟着遭殃。
实践中我一般这样划分磁盘组:
| 磁盘组 | 存放内容 | 冗余策略 | 性能要求 |
|---|---|---|---|
| DATA | 业务表空间、索引 | 高冗余(Normal/Fine) | 最高 |
| RECO | 闪回日志、归档日志 | 高冗余 | 中高 |
| DBFS | 外部表、临时文件 | 中 | 低 |
存储节点的 Flash Cache 默认是读缓存,不需要 DBA 手动管理。但你得注意一个参数:flashCacheMode。默认是writeback模式,即写 IO 会先落到 Flash Cache 再异步刷到磁盘,这对写入性能提升明显;但如果你的业务对数据持久性极其敏感,可以改成writethrough,性能会下降,但写入路径更简单。多数生产环境用writeback是安全的,因为 Exadata 有电池保护的写缓存机制。
3.3 Oracle 许可模型对选型的影响:性能核数怎么算
选硬件前先算软件许可成本,这是很多团队忽略的坑。Oracle 数据库企业版的许可按 CPU 核数计算,Exadata 的数据库服务器是物理核全量计费的。也就是说,你为了性能买了 4 台双路 Xeon 服务器,即使每台的核数只有 20 个,许可也按 4 × 20 = 80 个物理核算。
Oracle 针对 Exadata 有专门的“数据库一体机”许可政策,部分特性(如 Smart Scan、存储索引)在一体机上可以免费使用,但这不代表数据库软件本身免费。预算时要把数据库许可、一体机硬件维保、Oracle 技术支持服务的费用全部纳入。我见过不止一个项目,硬件预算批了,软件许可预算超了,最后只能委屈巴巴地砍存储节点数量——这是血泪经验。
4. 拿到 X9M 后的落地步骤:从开箱规划到 ASM 磁盘组创建
4.1 物理部署前先做四件事:地板承重、散热、网络规划、标签
别急着开机柜。Exadata 整柜重量通常在一吨上下,先确认机房地板承重满足要求。散热方面,Exadata 的功耗和发热量明显高于普通机架式服务器,单柜功耗通常在 10kW 以上,确认空调制冷量。网络规划按三张网来做:管理网(连接 ILOM 和交换机管理口)、业务网(应用连接数据库的 Client 网络)、存储内部网(数据库服务器到存储节点的 RoCE/IB 网络)。IP 地址规划表要提前列好,尤其在多机柜扩展时,IB 网络的子网划分影响后续扩展。
部署时给每台设备贴好物理标签:数据库节点、存储节点、交换机端口一一对应。Exadata 官方的机柜配置单里有每个槽位的标准位置,部署组按这个来,别自己乱插。后续做硬件巡检时,标签混乱会浪费大量排障时间。
4.2 用 dcli 和 cellcli 检查存储节点的健康状态
Exadata 出厂预装了管理工具dcli。它是 SSH 批量执行工具的封装,可以一次对一组节点执行命令。第一次拿到设备时,先验证存储节点的 CELL 服务状态。在数据库服务器上用dcli执行如下检查(假设你的存储节点列表文件叫cell_group):
# 列出所有存储节点的 IP 和状态 dcli -g cell_group -l celladmin "cellcli -e list cell detail" # 查看每个存储节点的磁盘健康状态 dcli -g cell_group -l celladmin "cellcli -e list physicaldisk where diskType = 'HardDisk' and status = 'normal'"第一条命令会返回每个存储节点的cell status、flash cache mode、cpu count等信息。注意看status列是否为online,如果有节点是offline,先别继续,查 ILOM 网络和管理口状态。
第二条命令过滤出状态为normal的物理磁盘。Exadata 的物理磁盘状态可能是normal、warning或critical,warning可能表示磁盘有 SMART 告警或性能降级,需要联系硬件维保;critical表示磁盘已失效。新到设备上如果直接看到warning,先别急着换盘,确认是否是初始化过程中产生的一次性告警。
4.3 创建 ASM 磁盘组:把存储节点变成数据库能用的“仓库”
存储节点的物理磁盘会被 Exadata 自动格式化为 ASM 磁盘,DBA 只需要在数据库服务器上用 ASMCA 或 SQL 创建磁盘组。这一步的常见做法是先用asmca图形界面,也可以用命令行脚本。下面是一个常见的创建脚本:
# 使用 SQL*Plus 连接到 ASM 实例 sqlplus / as sysasm -- 创建 DATA 磁盘组,冗余策略为 NORMAL,使用通配符匹配存储节点上的数据盘 CREATE DISKGROUP DATA NORMAL REDUNDANCY FAILGROUP cell01 DISK 'o/192.168.1.11/DATA_CD_01*' FAILGROUP cell02 DISK 'o/192.168.1.12/DATA_CD_02*' ATTRIBUTE 'com.oracle.database.instancetype.ash' = 'true'; -- 创建 RECO 磁盘组,存放闪回日志 CREATE DISKGROUP RECO HIGH REDUNDANCY FAILGROUP cell01 DISK 'o/192.168.1.11/RECO_CD_01*' FAILGROUP cell02 DISK 'o/192.168.1.12/RECO_CD_02*';创建磁盘组的参数里最关键是冗余策略:NORMAL表示数据有两份副本,HIGH表示三份副本。生产库核心数据我建议用HIGH,虽然磁盘利用率低一些,但单台存储节点故障时不会影响数据可用性。磁盘路径里的格式是o/存储节点IP/磁盘名,你也可以先用以下命令查一下所有 ASM 盘的路径:
# 列出所有可用的 ASM 磁盘 sqlplus / as sysasm SQL> SELECT name, path, mount_status FROM v$asm_disk;mount_status为CANDIDATE的磁盘才能被用于新磁盘组;如果是PROVISIONED或MEMBER,说明已经被别的磁盘组占用,不要重复使用。
完成磁盘组创建后,再建数据库实例时,表空间直接放在+DATA磁盘组,归档日志放+RECO。到这一步,Exadata 的存储能力才算真正交到数据库手里。
5. Exadata X9M 避坑指南:那些不会写进产品手册的常见问题
5.1 踩坑:存储节点掉盘后引发的 rebalance 风暴
现象:某天晚高峰,业务侧突然大量报ORA-00376和磁盘 IO 错误,AWR 里看到 ASM rebalance 操作消耗大量 CPU。检查存储节点,发现一块物理硬盘掉线。
原因:Exadata 的存储节点里每块盘都承担数据副本。一块盘掉线后,ASM 会自动触发 rebalance 把数据从其他副本重新分布,这个过程会把整个存储集群的 IO 拉高,导致本就不宽裕的业务 IO 被挤占。
解决:排查时必须先确认掉盘原因,而不是盲目换盘。用cellcli -e list physicaldisk看的是 A 状态;要确认驱动器和控制器日志,用cellcli -e list physicaldisk where diskType = 'HardDisk' detail,看Errored时间点是否与告警一致。处理顺序是:先把磁盘组的 rebalance 速度限制调低,保证业务 IO 优先;再评估换盘操作。调低 rebalance 速度的常见做法是在 ASM 实例里设置:
sqlplus / as sysasm SQL> ALTER DISKGROUP DATA REBALANCE POWER 1;POWER 1是最低速度,等业务低峰期再逐步调大。千万别用默认的POWER 11直接重平衡,那等于把存储性能全部让给 rebalance。
5.2 踩坑:Smart Scan“玄学”不生效,查询还是走传统路径
现象:某个大表查询在 Exadata 上执行,AWR报告显示Physical Reads极高,但存储节点的 CPU 利用率却很低,SQL 执行计划里没有出现STORAGE关键字。
原因:Smart Scan 不是默认对所有查询都启用的。它要求查询满足:全表扫描或分区扫描、没有触发CELL_OFFLOAD禁用的参数、查询涉及的表没有与 DECOMPRESSION 冲突的属性。最常见的原因是会话级别或系统级别设置了ALTER SESSION SET CELL_OFFLOAD_PROCESSING = FALSE,或者优化器选错了执行计划,走了索引扫描而非全表扫描。
解决:先确认参数和计划。执行以下 SQL:
-- 查看当前会话是否禁用存储卸载 SHOW PARAMETER cell_offload_processing; -- 查看执行计划里是否出现 STORAGE 行 EXPLAIN PLAN FOR SELECT * FROM big_table WHERE trans_date > DATE '2024-01-01'; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);执行计划里如果出现STORAGE或SYS_TEMP相关行,说明 Smart Scan 参与了。如果强制走全表扫描后 Smart Scan 仍不生效,检查表是否是外部表、是否被某种特殊压缩属性标记。多数情况是参数被某个 DBA 改过,恢复默认即可。
5.3 踩坑:存储节点的 CPU 打满,但数据库服务器很闲
现象:存储节点 CPU 利用率持续在 90% 以上,数据库服务器的 CPU 不到 20%,查询延迟很高。
原因:Smart Scan 把过滤操作下推到存储节点后,CPU 压力从数据库服务器转移到了存储节点。如果存储节点配置偏小,或者查询里带着大量函数运算、正则表达式匹配这类无法下推的操作,存储节点就要硬扛。
解决:把这类 SQL 的“不能下推”部分搬回数据库服务器执行。常见手法是把函数运算拆开,比如WHERE UPPER(name) = 'X'改成WHERE name = 'x',或者在应用层先完成转换。另外,检查存储节点的cellcli -e list cell detail里的cpu count,确认是不是低配节点。如果多个高消耗查询并发到来,用 IORM(数据库资源管理)限制单个查询的 IO 权重,别让一条坏 SQL 拖垮整柜存储。
5.4 踩坑:补丁升级后存储固件版本不匹配
现象:升级 Exadata 存储软件版本后,某个存储节点的cell服务起不来,告警日志报version mismatch,cellcli -e list cell显示status = 'offline'。
原因:Exadata 的补丁包里通常同时包含存储软件、ILOM 固件和磁盘固件。如果升级流程中断在中间,或者跳过了某个前置补丁版本,就会出现数据库服务器上的管理服务与存储节点的 CELLSRV 版本不一致。
解决:不要跳版本升级。Oracle 的每个 Exadata 补丁都有“要求的最低历史版本”,升级前先用dcli -g cell_group -l celladmin "cellcli -e list cell detail" | grep version对比。如果不一致,通常的做法是先单独升级存储节点的固件,再重跑一次完整补丁包。注意补丁升级前一定先备份/opt/oracle.cellos下的配置,这个目录存着 Cell 的身份配置,丢了之后恢复特别麻烦。
6. 验证 Exadata X9M 性能的黄金技巧:从 AWR 指标到 ExaWatcher 日志
很多团队上完 Exadata 之后,验收只跑一个select count(*),这完全体现不出它的价值。我习惯在性能验证阶段做三层检查。
第一层,用 ORION(Oracle IO Numbers)这个工具压测每个存储节点的裸盘性能。ORION 是数据库自带的,不用额外安装。测试命令大致是:
# 在数据库节点上对特定存储节点跑随机读测试 orion -run simple -testname mytest -num_disks 8 -size_small 8 -size_large 128 -type rand -run_duration 30-num_disks对应存储节点的盘数,-type rand测随机 IO。这一步用来确认硬件链路没有瓶颈。如果结果明显低于同机型参考值,优先查网络和 IB 交换机端口协商速率。
第二层,用 SLOB 跑一个模拟 OLTP 负载,然后观察 AWR 里的两个关键指标:User I/O Wait Time和Cell Single Block Physical Read的平均延迟。Exadata 正常状态下,单块读延迟在毫秒级以下。如果Cell Single Block Physical Read的延迟超过 5ms,且存储节点 CPU 不高,多半是磁盘组里混了慢盘,需要查cellcli -e list physicaldisk看是否有warning状态的盘。
第三层,检查 ExaWatcher 日志。Exadata 会持久化所有存储节点的性能计数器到/opt/oracle.ExaWatcher/目录。这个目录里的数据不会自动清理,长年累月会占用几十 GB 存储。我的习惯是每季度定期检查这个目录大小,并清理三个月前的日志,避免磁盘写满导致 CELL 服务异常。以前吃过一次亏——ExaWatcher 日志占满系统盘,存储节点告警,数据库写入直接停顿,那次之后我就在规划表里加上了日志清理任务。
验证周期不要压到一天。新库上去至少观察两周,覆盖业务峰谷,留意 Smart Scan 命中率和 PMEM 命中率在性能报告里的变化。Exadata 的很多优势是在持续负载下才体现出来的,半天测试代表不了真实运行状态。希望这篇文章的拆解能帮你在 X9M 的评估和落地上少走几步弯路,让这套设备真正为你所用。
本文还有配套的精品资源,点击获取