DBリンクを介して高速マテビュー
自サーバー「Local」から、遠隔地にあるデータベース「Remote」に対して
データベースリンクを張り
さらに、その「Remote」上にあるテーブル「MASTER_TBL」に対しての
マテリアライズドビューを高速リフレッシュができるように設定する。
あくまで、これは1つの例である。
1)DBリンクの作成
まず、DBリンクを張ろう。
create database link TEST_DBLINK
connect to hogehoge identified by password
using ‘REMOTE’;
2)マテリアライズドビュー・ログを作成
高速リフレッシュを可能にするためには、マテリアライズドビュー・ログが必要。
これは、マスター表が置かれているDB上に作る必要がある。
これを作成するユーザには、create table権限が必要となる。
create materialized view log on MASTER_TBL
with primary key, rowid, sequence
including new values;
3)マテリアライズドビューの作成
データベース「Local」にマテビューを高速リフレッシュ対応で作成
create materialized view MV_TEST
refresh fast as
select * from MASTER_TBL@TEST_DBLINK;
4)マテビューのリフレッシュ
以下のPL/SQLを実行
exec dbms_mview.refresh(‘MV_TEST’);
作成するには、色々と試行錯誤があった。
作成過程で出たORAエラーは
●ORA-23413
マテビューログがないよ!というエラー
●ORA-23415
マテビューログで主キーを記録しないようになってるよ!というエラー
with句にprimary keyを加えることで解決
●ORA-00949
最初、「Local」側にマテビューログを作ろうとして失敗していた