0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マテリアライズド・ビューの定期リフレッシュを行うジョブ定義を確認する(Oracle AI Database 26ai)

0
Last updated at Posted at 2026-10-28

マテリアライズド・ビューのリフレッシュ

マテリアライズド・ビューは SELECT 文の実行結果を実体として保存し、利用するオブジェクトです。元のテーブルが更新されると正確性が失われるため、定期的にリフレッシュを行う機能を持っています。定期リフレッシュのマテリアライズド・ビューを作成すると、内部的には DBMS_SCHEDULER パッケージを使ったジョブが作成されます。本記事では DBMS_SCHEDULER パッケージのジョブ定義を確認します。環境は以下の通りです。

項目 実行環境
オペレーティング・システム Oracle Linux 9.6
RDBMS Oracle AI Database 26ai
PDB名 ORCLPDB1
TNS名 ORCLPDB1
ユーザ名 SCOTT
データベース・リンク名 LINK1

トランザクション単位でマテリアライズド・ビューを更新する方法もありますが、ここでは触れません。

マテリアライズド・ビューの作成

定期リフレッシュを行うマテリアライズド・ビューを作成します。以下の例では1時間毎にリモート・テーブルから完全リフレッシュを行うマテリアライズド・ビューを作成しています。

マテリアライズド・ビューの作成
SQL> CREATE MATERIALIZED VIEW mview1
  2  BUILD IMMEDIATE
  3  REFRESH COMPLETE
  4  ON DEMAND
  5  START WITH SYSDATE
  6  NEXT SYSDATE + 1/24
  7  AS
  8  SELECT * FROM data2@link1;

Materialized view created.

USER_SCHEDULER_JOBS ディクショナリを参照すると以下の値を得られました。下記の表に示されていない列には値が指定されていませんでした。

列名 定義 備考
JOB_NAME MV_RF$J_0_S_1442 自動生成された名前
JOB_STYLE REGULAR
JOB_CREATOR SCOTT
JOB_TYPE PLSQL_BLOCK
JOB_ACTION dbms_refresh.refresh('"SCOTT"."MVIEW1"');
NUMBER_OF_ARGUMENTS 0
SCHEDULE_TYPE PLSQL
START_DATE 28-OCT-26 09.57.00.000000 AM +09:00 SYSDATE 指定値
REPEAT_INTERVAL SYSDATE + 1/24 CREATE 文 NEXT 指定値
JOB_CLASS DEFAULT_JOB_CLASS
ENABLED TRUE
AUTO_DROP TRUE
RESTART_ON_RECOVERY FALSE
RESTART_ON_FAILURE FALSE
STATE SCHEDULED
JOB_PRIORITY 3
RUN_COUNT 1
FAILURE_COUNT 0
RETRY_COUNT 0
LAST_START_DATE 28-OCT-26 09.57.00.848126 AM +09:00
LAST_RUN_DURATION +000000000 00:00:00.362138
NEXT_RUN_DATE 28-OCT-26 10.57.00.000000 AM +09:00
LOGGING_LEVEL OFF
STORE_OUTPUT TRUE
STOP_ON_WINDOW_CLOSE FALSE
INSTANCE_STICKINESS TRUE
SYSTEM FALSE
JOB_WEIGHT 1
NLS_ENV NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='\$' NLS_ISO_CURRENCY='AMERICA' NLS_NUMERIC_CHARACTERS='.,' NLS_CALENDAR='GREGORIAN' NLS_DATE_FORMAT='DD-MON-RR' NLS_DATE_LANGUAGE='AMERICAN' NLS_SORT='BINARY' NLS_TIME_FORMAT='HH.MI.SSXFF AM' NLS_TIMESTAMP_FORMAT='DD-MON-RR HH.MI.SSXFF AM' NLS_TIME_TZ_FORMAT='HH.MI.SSXFF AM TZR' NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RR HH.MI.SSXFF AM TZR' NLS_DUAL_CURRENCY='$' NLS_COMP='BINARY' NLS_LENGTH_SEMANTICS='BYTE' NLS_NCHAR_CONV_EXCP='FALSE'
NUMBER_OF_DESTINATIONS 1
DEFERRED_DROP FALSE
ALLOW_RUNS_IN_RESTRICTED_MODE FALSE
COMMENTS dbms_refresh: submit_sch_job
FLAGS 9.0072E+15
RESTARTABLE FALSE
HAS_CONSTRAINTS FALSE
FAIL_ON_SCRIPT_ERROR FALSE

上記でわかる通り、JOB_ACTION 列には DBMS_MVIEW.REFRESH プロシージャが指定されています。このプロシージャの実行によりマテリアライズド・ビューがリフレッシュされることがわかります。
またジョブの優先順位(job_priority)は 3 であり、デフォルト値の優先順位で実行されます。

リフレッシュ・タイプの指定

リフレッシュ方法の異なるマテリアライズド・ビューを作成し、ジョブの定義を確認します。マテリアライズド・ビュー MVIEW2 はリフレッシュ方法 FORCE、マテリアライズド・ビュー MVIEW3 はリフレッシュ方法 FAST を指定しました。

リフレッシュ方法の異なるマテリアライズド・ビューの作成
SQL> CREATE MATERIALIZED VIEW mview2
  2  BUILD IMMEDIATE
  3  REFRESH FORCE
  4  ON DEMAND
  5  START WITH SYSDATE
  6  NEXT SYSDATE + 1/24
  7  AS
  8  SELECT * FROM data2@link1;

Materialized view created.

SQL> CREATE MATERIALIZED VIEW mview3
  2  BUILD IMMEDIATE
  3  REFRESH FAST
  4  ON DEMAND
  5  START WITH SYSDATE
  6  NEXT SYSDATE + 1/24
  7  AS
  8  SELECT * FROM data2@link1;

Materialized view created.

マテリアライズド・ビューの定義を確認します。指定通りになっています。

マテリアライズド・ビューの定義
SQL> SELECT MVIEW_NAME,REFRESH_MODE,REFRESH_METHOD FROM user_mviews;

MVIEW_NAME           REFRESH_M REFRESH_
-------------------- --------- --------
MVIEW1               DEMAND    COMPLETE
MVIEW2               DEMAND    FORCE
MVIEW3               DEMAND    FAST

ジョブの定義を確認します。

ジョブ定義
SQL> SELECT job_name, job_action FROM user_scheduler_jobs ORDER BY job_name;

JOB_NAME             JOB_ACTION
-------------------- --------------------------------------------------
MV_RF$J_0_S_1442     dbms_refresh.refresh('"SCOTT"."MVIEW1"');
MV_RF$J_0_S_1444     dbms_refresh.refresh('"SCOTT"."MVIEW2"');
MV_RF$J_0_S_1446     dbms_refresh.refresh('"SCOTT"."MVIEW3"');

DBMS_REFRESH.REFRESH プロシージャにはリフレッシュ方法を指定するオプション(method オプション)がありますが、ジョブ定義では指定されていないことがわかります。このためマテリアライズド・ビューの自動リフレッシュではマテリアライズド・ビュー側の定義に従ってリフレッシュが行われることがわかります。

Author: Noriyoshi Shinoda / Date: October 28, 2026

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?