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.