如何通过设置QUERY_REWRITE_DISABLE参数在Oracle中关闭物化视图的查询改写功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计941个文字,预计阅读时间需要4分钟。
相关专题内容,请直接提问,避免图片解释、避免口语化表达,不超过100字。
禁用物化视图查询改写必须关掉两个地方
只改一个地方,query rewrite 依然可能生效。oracle 的查询重写是“双开关”机制:实例级参数 + 物化视图对象级设置,二者任一开启都可能导致重写发生(尤其当 query_rewrite_enabled 设为 force 时)。所以禁用必须同步处理。
-
ALTER SYSTEM SET QUERY_REWRITE_ENABLED = FALSE;—— 全局关闭,影响所有会话;需 DBA 权限 -
ALTER MATERIALIZED VIEW mv_name DISABLE QUERY REWRITE;—— 对单个 MV 显式禁用;即使参数为TRUE,该 MV 也不会被选中 - 若已用
FORCE启用过,务必先确认当前值:SELECT VALUE FROM V$PARAMETER WHERE NAME = 'query_rewrite_enabled';,避免误判
DISABLE QUERY REWRITE 不等于 DROP,但 ALTER 不支持回退
执行 DISABLE QUERY REWRITE 后,物化视图本身仍存在、可查、可刷新,只是不再参与优化器的重写决策。
本文共计941个文字,预计阅读时间需要4分钟。
相关专题内容,请直接提问,避免图片解释、避免口语化表达,不超过100字。
禁用物化视图查询改写必须关掉两个地方
只改一个地方,query rewrite 依然可能生效。oracle 的查询重写是“双开关”机制:实例级参数 + 物化视图对象级设置,二者任一开启都可能导致重写发生(尤其当 query_rewrite_enabled 设为 force 时)。所以禁用必须同步处理。
-
ALTER SYSTEM SET QUERY_REWRITE_ENABLED = FALSE;—— 全局关闭,影响所有会话;需 DBA 权限 -
ALTER MATERIALIZED VIEW mv_name DISABLE QUERY REWRITE;—— 对单个 MV 显式禁用;即使参数为TRUE,该 MV 也不会被选中 - 若已用
FORCE启用过,务必先确认当前值:SELECT VALUE FROM V$PARAMETER WHERE NAME = 'query_rewrite_enabled';,避免误判
DISABLE QUERY REWRITE 不等于 DROP,但 ALTER 不支持回退
执行 DISABLE QUERY REWRITE 后,物化视图本身仍存在、可查、可刷新,只是不再参与优化器的重写决策。

