跳到主要内容

REFRESH

REFRESHE 用于刷新指定的一个物化视图。

语法

DBMS_MVIEW.REFRESH (
mv_name IN VARCHAR(65535),
method IN VARCHAR(65535) DEFAULT NULL,
refresh_parallel IN INT DEFAULT 0,
nested IN BOOLEAN DEFAULT FALSE,
nested_refresh_mode IN VARCHAR DEFAULT NULL
);

参数解释

信息

非嵌套物化视图不存在级联刷新行为,指定 nestednested_refresh_mode 参数无意义,默认独立刷新。

参数说明
mv_name需要刷新的物化视图名称。
method定义了物化视图的刷新策略,可在创建物化视图时指定默认的策略。可选方法包括:
  • 'f' 或 'F':快速刷新。
  • '?':强制刷新。
  • 'C' 或 'c':全量刷新。
  • 'A' 或 'a':全量刷新。
refresh_parallel刷新操作的并发度,即同时执行刷新操作的线程数。该参数的默认值为 0
nested指定嵌套物化视图的刷新模式。取值如下:
  • FALSE:默认值,表示独立刷新嵌套物化视图。
  • TRUE:表示级联刷新嵌套物化视图。
nested_refresh_mode指定级联刷新嵌套物化视图是一致刷新行为还是非一致刷新行为。取值如下:
  • 当指定参数 nestedFALSE 时,指定参数 nested_refresh_mode 会报错。
  • 当指定参数 nestedTRUE 时:
    • 指定参数 nested_refresh_mode 取值如下:
      • inconsistent:表示级联非一致刷新。
      • consistent:表示级联一致刷新。
    • 不指定参数 nested_refresh_mode 时默认为级联非一致刷新。

示例

  • 独立刷新模式:

    • 只指定参数 mv_name

      CALL DBMS_MVIEW.REFRESH('mv1');
    • 指定参数 mv_name 及参数 nested 值为 false

      CALL DBMS_MVIEW.REFRESH('mv1', nested=> false);
  • 级联非一致刷新模式:

    • 指定参数 mv_name,参数 nested 值为 true,不指定参数 nested_refresh_mode

      CALL DBMS_MVIEW.REFRESH(
      'mv1', nested=> true);
    • 指定参数 mv_name,参数 nested 值为 true 及参数 nested_refresh_mode 值为 inconsistent

      CALL DBMS_MVIEW.REFRESH(
      'mv1',
      nested=> true,
      nested_refresh_mode => 'inconsistent');
  • 级联一致刷新模式:

    指定参数 mv_name,参数 nested 值为 true 及参数 nested_refresh_mode 值为 consistent

    CALL DBMS_MVIEW.REFRESH(
    'mv1',
    nested=> true,
    nested_refresh_mode => 'consistent');
  • 以下为报错场景:

    • 参数 nested 值为 false,又指定参数 nested_refresh_mode 值,报错。

      CALL DBMS_MVIEW.REFRESH(
      'mv1',
      nested=> false,
      nested_refresh_mode => 'xxxx');
    • 没有指定参数 nested 的值,只指定参数 nested_refresh_mode 的值,报错。

      CALL DBMS_MVIEW.REFRESH('mv1', nested_refresh_mode => 'xxxx');
    • 参数 nested 值为 true,参数 nested_refresh_mode 值为非法字符串,报错。

      CALL DBMS_MVIEW.REFRESH(
      'mv1',
      nested=> true,
      nested_refresh_mode => '非法字符串');