DBMS_CUBE_ADVISEには、ログ・ベースの高速リフレッシュおよびクエリー・リライトをサポートするキューブ・マテリアライズド・ビューを評価するためのサブプログラムが含まれています。
この章では、次の項目について説明します。
|
関連項目: キューブ・マテリアライズド・ビューの詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
表37-1 DBMS_CUBE_ADVISEサブプログラムの要約
| サブプログラム | 説明 |
|---|---|
|
|
キューブ・マテリアライズド・ビューのメタデータを評価し、制約、SQLディメンション・オブジェクトおよびマテリアライズド・ビュー・ログに関する推奨設定を生成します。これにより、クエリー・リライトおよび高速リフレッシュを広範に行うことができます。 |
|
|
|
|
|
|
このテーブル・ファンクションは、指定したキューブ・マテリアライズド・ビューのメタデータを評価します。また、推奨設定を生成し、SQL結果セットとして戻します。これらのSQL文を使用すると、制約、SQLディメンション・オブジェクトおよびマテリアライズド・ビュー・ログを作成できます。これにより、キューブ・マテリアライズド・ビューのクエリー・リライトの変換およびログ・ベースの高速リフレッシュを広範に使用できます。
構文
DBMS_CUBE_ADVISE.MV_CUBE_ADVICE (
owner IN VARCHAR2 DEFAULT USER,
mvname IN VARCHAR2,
reqtype IN VARCHAR2 DEFAULT '0',
validate IN NUMBER DEFAULT 0)
RETURN COAD_ADVICE_T PIPELINED;
パラメータ
表37-2 MV_CUBE_ADVICEファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
キューブ・マテリアライズド・ビューの所有者。 |
|
|
キューブ( |
|
|
生成するアドバイスのタイプ:
|
|
|
検証オプション:
|
戻り値
COAD_ADVICE_Tタイプの表(COAD_ADVICE_RECタイプの行のセットで構成)。列の詳細は、表37-3を参照してください。
表37-3 MV_CUBE_ADVICEの戻り値
| 列 | データ型 | 説明 |
|---|---|---|
|
|
|
|
|
|
|
マテリアライズド・ビュー機能で拡張されたキューブの名前( |
|
|
|
|
|
|
|
マスター表( |
|
|
|
推奨のタイプ:
|
|
|
|
推奨設定と競合し、 |
|
|
|
推奨設定を実装するSQL文。 |
|
|
|
既存の条件によって、これらの文でスキーマを以前の状態に戻すことができない場合があります。 |
使用上の注意
このファンクションは、マテリアライズド・ビュー・アドバイザとしてAnalytic Workspace Managerで使用できます。これにより、推奨設定を含むSQLスクリプトが生成されます。
例に示すように、他の表と同様に戻される行を問い合せることができます。
MV_CUBE_ADVICEでは、コールのたびに一意のオブジェクト名が生成されます。ファンクションを1回実行し、結果を取得してから、これらのSQL文を操作する必要があります。
データベース・オブジェクトを削除するときには注意してください。すでに表にマテリアライズド・ビュー・ログがある場合は、表の名前はDROPTEXT列のSQL文DROP MATERIALIZED VIEW LOGで使用されるものと同じになります。マテリアライズド・ビュー・ログは、特にリモート・データ・レプリケーションで使用されている場合は、誤って削除しないようにしてください。
例
次の問合せでは、MV_CUBE_ADVICEで推奨されるSQL文が表示されます。 UNITS_FACTはUNITS_CUBEのマスター表であり、MV_CUBE_ADVICEは、主キー制約を追加するALTER TABLEコマンドを生成します。
また、CB$UNITS_CUBEキューブ・マテリアライズド・ビューをコンパイルするALTER MATERIALIZED VIEWコマンドも生成します。
SQL> SELECT apiobject, sqlobject, sqltext
FROM TABLE(dbms_cube_advise.mv_cube_advice('GLOBAL', 'CB$UNITS_CUBE'));
APIOBJECT SQLOBJECT SQLTEXT
------------ --------------- ---------------------------------------------
UNITS_CUBE UNITS_FACT alter table "GLOBAL"."UNITS_FACT" add constra
int "COAD_PK000208" PRIMARY KEY ("CHANNEL_ID"
, "ITEM_ID", "SHIP_TO_ID", "MONTH_ID") rely d
isable novalidate
UNITS_CUBE CB$UNITS_CUBE alter materialized view "GLOBAL"."CB$UNITS_CU
BE" compile
このプロシージャは、MV_CUBE_ADVICEで生成された、検証済の制約で使用される例外ログの名前を識別します。
構文
DBMS_CUBE_ADVISE.SET_CNS_EXCEPTION_LOG (
exceptlogtab IN VARCHAR2 DEFAULT user.EXCEPTIONS);
パラメータ
使用上の注意
例外ログを作成するには、SET_CNS_EXCEPTION_LOGを実行する前に、utlexcpt.sqlまたはutlexpt1.sqlスクリプトを使用します。
MV_CUBE_ADVICEのvalidateパラメータを1に設定する必要があります。
例
utlexcpt.sqlスクリプトは、EXCEPTIONSという名前の表を作成し、SET_CNS_EXCEPTION_LOGプロシージャは、この表をMV_CUBE_ADVICEの例外ログとして識別します。ALTER TABLE文には、VALIDATE EXCEPTIONS INTO "GLOBAL"."EXCEPTIONS"句が追加されます。
SQL> @utlexcpt
Table created.
SQL> EXECUTE dbms_cube_advise.set_cns_exception_log;
PL/SQL procedure successfully completed.
SQL> SELECT apiobject, sqlobject, advicetype type, sqltext
FROM TABLE(
dbms_cube_advise.mv_cube_advice('GLOBAL', 'CB$UNITS_CUBE', '2', 1));
APIOBJECT SQLOBJECT TYPE SQLTEXT
------------ --------------- ---- ----------------------------------------------
UNITS_CUBE UNITS_FACT 2 alter table "GLOBAL"."UNITS_FACT" add constrai
nt "COAD_PK000219" PRIMARY KEY ("CHANNEL_ID",
"ITEM_ID", "SHIP_TO_ID", "MONTH_ID") norely en
able validate exceptions into "GLOBAL"."EXCEPT
IONS"
UNITS_CUBE CB$UNITS_CUBE 8 alter materialized view "GLOBAL"."CB$UNITS_CUB
E" compile
このプロシージャは、MV_CUBE_ADVICEファンクションのサーバー出力への診断メッセージを有効および無効にします。
構文
DBMS_CUBE_ADVISE.TRACE (
diaglevel IN BINARY_INTEGER DEFAULT 0);
パラメータ
例
次の例では、診断メッセージをサーバー出力に送ります。 SQL*PlusのSERVEROUTPUT設定により、メッセージが表示されます。
SQL> SET SERVEROUT ON FORMAT WRAPPED
SQL> EXECUTE dbms_cube_advise.trace(1);
DBMS_COAD_DIAG: Changing diagLevel from [0] to [1]
PL/SQL procedure successfully completed.
SQL> SELECT sqlobject, sqltext, droptext
FROM TABLE(
dbms_cube_advise.mv_cube_advice('GLOBAL', 'CB$UNITS_CUBE'))
WHERE apiobject='UNITS_CUBE';
SQLOBJECT SQLTEXT DROPTEXT
--------------- ---------------------------------------- ----------------------------------------
UNITS_FACT alter table "GLOBAL"."UNITS_FACT" add co alter table "GLOBAL"."UNITS_FACT" drop c
nstraint "COAD_PK000222" PRIMARY KEY ("C onstraint "COAD_PK000222" cascade
HANNEL_ID", "ITEM_ID", "SHIP_TO_ID", "MO
NTH_ID") rely disable novalidate
CB$UNITS_CUBE alter materialized view "GLOBAL"."CB$UNI alter materialized view "GLOBAL"."CB$UNI
TS_CUBE" compile TS_CUBE" compile
20070706 07:25:27.462780000 DBMS_COAD_DIAG NOTE: Parameter mvOwner : GLOBAL
20070706 07:25:27.462922000 DBMS_COAD_DIAG NOTE: Parameter mvName : CB$UNITS_CUBE
20070706 07:25:27.462967000 DBMS_COAD_DIAG NOTE: Parameter factTab : .
20070706 07:25:27.463011000 DBMS_COAD_DIAG NOTE: Parameter cubeName : UNITS_CUBE
20070706 07:25:27.463053000 DBMS_COAD_DIAG NOTE: Parameter cnsState : rely disable novalidate
20070706 07:25:27.463094000 DBMS_COAD_DIAG NOTE: Parameter NNState : disable novalidate
20070706 07:25:27.462368000 DBMS_COAD_DIAG NOTE: Begin NN:
20070706 07:25:27.833530000 DBMS_COAD_DIAG NOTE: End NN:
20070706 07:25:27.833620000 DBMS_COAD_DIAG NOTE: Begin PK:
20070706 07:25:28.853418000 DBMS_COAD_DIAG NOTE: End PK:
20070706 07:25:28.853550000 DBMS_COAD_DIAG NOTE: Begin FK:
20070706 07:25:28.853282000 DBMS_COAD_DIAG NOTE: End FK:
20070706 07:25:28.853359000 DBMS_COAD_DIAG NOTE: Begin RD:
20070706 07:25:29.660471000 DBMS_COAD_DIAG NOTE: End RD:
20070706 07:25:29.661363000 DBMS_COAD_DIAG NOTE: Begin CM:
20070706 07:25:29.665106000 DBMS_COAD_DIAG NOTE: End CM:
SQL> EXECUTE dbms_cube_advise.trace(0);
DBMS_COAD_DIAG: Changing diagLevel from [1] to [0]
PL/SQL procedure successfully completed.