Oracle Database QoS Management在12c RAC中需基于Policy-Managed架构,依赖启用QOS_POLICY的server pool,通过EM Cloud Control配置SLO策略,动态调整CPU/内存资源分配。
oracle database qos management 在 12c rac 中不是开箱即用的功能,它依赖 policy-managed 架构作为前提——admin-managed 数据库无法启用 qos 策略。如果你的数据库实例只在单节点运行、srvctl config database -d <db_name> 输出里没有 server pools: 行,那 qos 配置会直接失败。
确认数据库是否已绑定到 server pool
QoS 管理策略作用的对象是“服务器池(server pool)”,不是数据库本身。未绑定池的数据库会被 CRS 自动归入 Generic 池,而该池不支持 QoS 策略应用。
- 运行
srvctl config database -d PROD,检查输出中是否存在Server pools:字段;若无,说明尚未绑定 - 用
crsctl status serverpool -f查看所有池状态,重点关注MIN_SIZE和ACTIVE_SERVERS是否匹配预期 - 若池存在但数据库未绑定,执行
srvctl modify database -d PROD -g mypool(注意:这不会立即启动新实例) - 绑定后必须执行
srvctl start database -d PROD触发 CRS 重新评估并按池策略拉起实例
创建带 QoS 意图的 server pool
普通池(如用 crsctl add serverpool mypool 创建的)默认不携带 QoS 属性。要让 QoS Manager 能识别并调度资源,必须在创建时显式声明 QOS_POLICY 属性。
- 正确命令示例:
crsctl add serverpool mypool -attr "MIN_SIZE=2,MAX_SIZE=4,CANDIDATE_SERVERS='rac01 rac02',QOS_POLICY=ENABLED" -
QOS_POLICY=ENABLED是硬性要求,漏掉会导致 Enterprise Manager 中看不到该池的 QoS 配置入口 -
MIN_SIZE必须 ≥ 2(Oracle 12.1+ 才支持多实例 QoS 调度;12.1 之前版本即使配了也无效) - 创建后务必用
crsctl status serverpool mypool -f验证QOS_POLICY值是否为ENABLED,而非空或DISABLED
通过 EM Cloud Control 启用并配置 QoS 策略
命令行无法完成 QoS 策略定义,必须使用 Enterprise Manager Cloud Control(12c 或更高版本),且目标数据库需已注册进 OEM。
- 登录 EM CC → 进入 “Cloud” → “Database Services” → 选择对应服务 → “Quality of Service Management”
- 首次启用时会提示 “Enable QoS Management for this server pool”,点击后系统自动部署 QoS Agent 并重启相关 CRS 资源
- 策略配置核心是定义 Service-Level Objectives(SLO):例如为关键业务服务设置
Response Time ≤ 500ms,为报表服务设置Throughput ≥ 100 TPS - 注意:SLO 不是硬限制,而是 CRS 动态调整实例数和资源分配的依据;若当前池内节点已满(
ACTIVE_SERVERS达到MAX_SIZE),QoS 无法突破上限扩容
验证 QoS 是否实际生效
EM 界面显示“Enabled”不等于策略正在起效。真实效果取决于负载特征与 CRS 的实时反馈周期(默认 30 秒采样一次)。
- 模拟压力:用
sqlplus连接不同服务名(如PROD_HRvsPROD_REPORT),分别跑高并发短事务和长查询 - 观察
crsctl status serverpool mypool -f中ACTIVE_SERVERS是否随负载变化浮动(例如从 2→3→2) - 查
v$active_session_history,确认高优先级服务的等待事件(如resmgr:cpu quantum)是否出现——这是 Resource Manager 正在介入的信号 - 最容易被忽略的一点:
QOS_POLICY=ENABLED只影响池内实例的 CPU/内存调度,**不改变 I/O 或网络带宽分配逻辑**;I/O 控制仍需靠 ASM Disk Group 的THROTTLE_IOPS或底层存储 QoS



















