以下哪个DBMS子程序可以将PlanCache中一个不在演进中的Plan加入到baseline中?

以下哪个DBMS子程序可以将PlanCache中一个不在演进中的Plan加入到baseline中?

A. CANCEL_EVOLVE_TASK

B. ALTER_SQL_PLAN_BASELINE

C. LOAD_PLANS_FROM_CURSOR_CACHE

D. ACCEPT_SQL_PLAN_BASELINE

  • :white_check_mark: 选项 C 正确
    LOAD_PLANS_FROM_CURSOR_CACHE 的核心作用就是将当前 Plan Cache(计划缓存)中已经存在的执行计划,手动加载到 SQL 计划基线(SQL Plan Baseline)中2。这完全符合题目中“将 PlanCache 中的一个 Plan 加入到 baseline 中”的需求。
  • :x: 选项 A 错误
    CANCEL_EVOLVE_TASK 看名字就知道,它是用来取消 正在进行的计划演进任务的,而不是用来加载计划的。
  • :x: 选项 B 错误
    ALTER_SQL_PLAN_BASELINE 是用来修改 已有的计划基线属性的,比如将某个计划标记为固定(FIXED)或启用/禁用,它不负责从 Plan Cache 中加载新计划2。
  • :x: 选项 D 错误
    ACCEPT_SQL_PLAN_BASELINE 并不是 OceanBase 或 Oracle 中标准的 DBMS_SPM 包内的子程序名称。在 OceanBase 中,通常是通过演进任务来验证并接受新的计划,或者直接使用 LOAD_PLANS_FROM_CURSOR_CACHE 手动加载。