DBMS_CUBEには、OLAPキューブおよびディメンションを作成するサブプログラム、および問合せのためにデータをロードして処理するサブプログラムが含まれています。
|
関連項目: ビジネス・インテリジェンス・アプリケーションおよび分析アプリケーションをサポートするOLAPオプションの使用の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
この章では、次の項目について説明します。
キューブおよびキューブ・ディメンションは、複数ディメンションの分析をサポートする優れたデータ・オブジェクトです。キューブおよびディメンションは、アナリティック・ワークスペースと呼ばれるコンテナに格納されています。OLAPオプションを使用すると、Oracle Databaseで複数ディメンションのオブジェクトと分析を使用できます。
キューブおよびディメンションを自動リフレッシュし、クエリー・リライトを実行するために、キューブをキューブ・マテリアライズド・ビューとして使用できます。複数のDBMS_CUBEサブプログラムで、リレーショナル・マテリアライズド・ビューのかわりとしてのキューブ・マテリアライズド・ビューの作成およびメンテナンスがサポートされています。これらのサブプログラムの詳細は、「SQL集計管理の使用方法」を参照してください。
キューブおよびディメンションのメタデータはテンプレートと呼ばれるXML文書に定義されていて、CREATE_CUBEファンクションまたはDERIVE_FROM_MVIEWファンクションを使用してリレーショナル・マテリアライズド・ビューから導出できます。Analytic Workspace Managerというグラフィック・ツールを使用して、アナリティック・コンテンツでキューブを拡張したり、新しいキューブおよびキューブ・ディメンションに対してメタデータを最初から作成できます。
その他のいくつかのDBMS_CUBEサブプログラムでは、XMLテンプレートからアナリティック・ワークスペースを作成し、キューブとディメンションに格納されたデータをリフレッシュする場合にAnalytic Workspace ManagerのかわりとなるSQLを提供しています。IMPORT_XMLプロシージャは、キューブおよびキューブ・ディメンションを含むアナリティック・ワークスペースをXMLテンプレートから作成します。BUILDプロシージャは、データ・ソースからキューブおよびディメンションにデータをロードし、問合せ用のデータを準備するために必要な処理手順を実行します。
SQL集計管理はDBMS_CUBEのPL/SQLサブプログラムのグループで、既存のリレーショナル・マテリアライズド・ビューからのキューブ・マテリアライズド・ビューの迅速なデプロイをサポートしています。キューブ・マテリアライズド・ビューは、Oracle Databaseの自動リフレッシュ機能およびクエリー・リライト機能のために拡張されたキューブです。単一のキューブ・マテリアライズド・ビューでは、ファクト表上にあるサマリーの多数のリレーショナル・マテリアライズド・ビューを置き換えることができるため、すべてのサマリー・データへのレスポンス時間を均一にできます。
キューブ・マテリアライズド・ビューによって、詳細なリレーショナル表のサマリーを問い合せるアプリケーションで、OLAPオプションの高速更新機能および高速問合せ機能を使用できるようになります。サマリー・データが生成されてキューブに格納され、クエリー・リライトによって、問合せが自動的にキューブ・マテリアライズド・ビューにリダイレクトされます。アプリケーションの問合せのパフォーマンスが向上します。
キューブ・マテリアライズド・ビューの作成プロセスでは、DBMS_CUBEによって、キューブおよびキューブ・ディメンションを含むすべての機能を備えたアナリティック・ワークスペースも作成されます。キューブには、リレーショナル・マテリアライズド・ビューのデータが格納される表のかわりに、キューブ・マテリアライズド・ビューのデータが格納されます。また、キューブでは、情報が豊富なコンテンツでデータベースを拡張するための様々な分析関数もサポートされています。
キューブ・マテリアライズド・ビューは、他のマテリアライズド・ビューとともに、データ・ディクショナリに登録されます。キューブ・マテリアライズド・ビューは、CB$接頭辞によって識別されます。
DBMS_CUBEサブプログラムでは、キューブ・マテリアライズド・ビューのライフサイクル管理もサポートされています。
|
関連項目: キューブ・マテリアライズド・ビューおよび拡張OLAP分析の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
SQL集計管理では、既存のリレーショナル・マテリアライズド・ビューを使用して、キューブ・マテリアライズド・ビューの生成に必要なすべての情報を導出します。リレーショナル・マテリアライズド・ビューは、キューブ・マテリアライズド・ビューに格納されたデータの詳細レベルを決定します。関連付けられたリレーショナル・ディメンション・オブジェクトは、マテリアライズド・ビュー副問合せのGROUP BY句で指定される最下位レベルからディメンション階層の最上位レベルまで、集計の範囲を決定します。
リレーショナル・マテリアライズド・ビューは、次の要件を満たしている必要があります。
1つ以上の列に対する明示的なGROUP BY句。
選択リストまたはGROUP BY句に式がないこと。
SUM、MIN、MAX、AVG数値集計メソッドの1つ以上。
外部結合がないこと。
リレーショナル・ディメンションに関連付けられた1つ以上の単純列を持つサマリー・キー。
または
1つ以上の単純列を持ち、階層またはレベルを持たないサマリー・キー。
ファクト列に対する任意の数値データ・タイプ。すべてのファクトはNUMBERに変換されます。
リライトが可能です。REWRITE_CAPABILITYはGENERALにする必要があり、NONEにはできません。『Oracle Databaseリファレンス』のALL_MVIEWSエントリを参照してください。
定義問合せの集計関数では、DISTINCTまたはUNIQUEキーワードは使用できません。たとえば、AVG(DISTINCT units)は、STRICTモードではエラーの原因になり、LOOSEモードでは無視されます。
キューブ・マテリアライズド・ビューを表示する場合は、LOOSEおよびSTRICTの2つのモードから選択できます。STRICTモードでは、要件から逸脱すると例外が発生し、マテリアライズド・ビューが作成されません。LOOSEモード(デフォルト)では、一部の逸脱は許容されますが、マテリアライズド・ビューの内容に影響があります。リレーショナル・マテリアライズド・ビューにこれらの要素があると、次の警告メッセージが生成されます。
定義問合せの複雑な式は無視され、キューブ・マテリアライズド・ビューには表示されません。
AVGファンクションはSUMおよびCOUNTに変更されます。
SUM、MIN、MAXまたはAVGファンクションを伴わないCOUNTファンクションは無視されます。
STDDEVおよびVARIANCEファンクションは無視されます。
WHERE句での条件のフィルタ処理方法を選択することもできます。フィルタ処理がオフの場合、条件は無視されます。オンの場合、有効な条件はキューブ・マテリアライズド・ビューで表示されますが、ディメンション・レベル間で条件が非対称な場合は例外が発生します。
キューブ・マテリアライズド・ビューを作成するには、次の権限が必要です。
CREATE [ANY] MATERIALIZED VIEW権限
CREATE [ANY] DIMENSION権限
ADVISOR権限
クエリー・リライトを使用して別のスキーマからキューブ・マテリアライズド・ビューにアクセスするには、次の権限が必要です。
GLOBAL QUERY REWRITE権限
リレーショナル・ソース表に対するSELECT権限
キューブ・マテリアライズド・ビューがサポートされているアナリティック・ワークスペース(AW$name)に対するSELECT権限
キューブに対するSELECT権限
キューブのディメンションに対するSELECT権限
キューブ・マテリアライズド・ビューに対してではなく、キューブ・マテリアライズド・ビューがサポートされているデータベース・オブジェクトに対するSELECT権限が必要なことに注意してください。
SQL集計管理サブプログラムのすべての例で、サンプルの販売履歴スキーマが使用されます。このスキーマはCAL_MONTH_SALES_MVおよびFWEEK_PSCAT_SALES_MVの2つのリレーショナル・マテリアライズド・ビューとともにOracle Databaseにインストールされます。
次の例では、キューブ・マテリアライズド・ビューの作成の基本として、CAL_MONTH_SALES_MVを使用しています。CAL_MONTH_SALES_MVの作成には、次の問合せが使われました。CAL_MONTH_SALES_MVは、SALES表に格納されている日次販売データを月ごとに要約します。
SELECT query FROM user_mviews
WHERE mview_name='CAL_MONTH_SALES_MV';
QUERY
--------------------------------------------
SELECT t.calendar_month_desc
, sum(s.amount_sold) AS dollars
FROM sales s
, times t
WHERE s.time_id = t.time_id
GROUP BY t.calendar_month_desc
DBMS_CUBEは、リレーショナル・ディメンションを使用して、キューブ・マテリアライズド・ビューのレベルおよび階層を導出します。次の問合せは、スキーマ内のほとんどのディメンション表に対してリレーショナル・ディメンションを持つSHスキーマを示しています。
SELECT dimension_name FROM user_dimensions; DIMENSION_NAME ------------------------------------- CUSTOMERS_DIM PRODUCTS_DIM TIMES_DIM CHANNELS_DIM PROMOTIONS_DIM
次のPL/SQLスクリプトでは、CREATE_MVIEWファンクションを使用して、CAL_MONTH_SALES_MVからキューブ・マテリアライズド・ビューを作成します。CREATE_MVIEWによって、キューブ・マテリアライズド・ビューをすぐにリフレッシュするためのオプションのBUILDパラメータが設定されます。
SET serverout ON format wrapped
DECLARE
salesaw varchar2(30);
BEGIN
salesaw := dbms_cube.create_mview('SH', 'CAL_MONTH_SALES_MV',
'build=immediate');
END;
/
次のメッセージは、スクリプトがCB$CAL_MONTH_SALESを正常に作成し、リフレッシュしたことを示します。
Completed refresh of cube mview "SH"."CB$CAL_MONTH_SALES" at 20081112 08:42:58.0 03. Created cube organized materialized view "CB$CAL_MONTH_SALES" for rewrite at 200 81112 08:42:58.004.
次の問合せを実行すると、SHスキーマ内のマテリアライズド・ビューが表示されます。
SELECT mview_name FROM user_mviews; MVIEW_NAME ------------------------------ CB$CAL_MONTH_SALES CB$TIMES_DIM_D1_CAL_ROLLUP CAL_MONTH_SALES_MV FWEEK_PSCAT_SALES_MV
次の2つの新しいマテリアライズド・ビューが、データ・ディクショナリに登録されます。
CB$CAL_MONTH_SALES: キューブ・マテリアライズド・ビュー
CB$TIMES_DIM_D1_CAL_ROLLUP: TIME_DIMカレンダ・ロールアップ階層のキューブ・ディメンション・マテリアライズド・ビュー
キューブ・ディメンション・マテリアライズド・ビューでは、キューブ・マテリアライズド・ビューのリフレッシュがサポートされています。ディメンション・マテリアライズド・ビューを直接管理しないでください。
キューブ・マテリアライズド・ビューの作成後、キューブ・マテリアライズド・ビューでサポートされるようになったファクトに対するすべてのリレーショナル・マテリアライズド・ビューでのクエリー・リライトを無効にします。リレーショナル・マテリアライズド・ビューは、最適なパラメータでキューブ・マテリアライズド・ビューが作成されたことを確認できたら削除できます。
ALTER MATERIALIZED VIEW cal_month_sales_mv DISABLE QUERY REWRITE; Materialized view altered.
CREATE_MVIEWファンクションではDISABLEQRWパラメータを使用することもできます。このパラメータによってソース・マテリアライズド・ビューでのクエリー・リライトが無効になります(表41-7を参照)。
キューブ・マテリアライズド・ビューに対する実行計画は、リレーショナル・マテリアライズド・ビューと同じ方法で作成できます。次のコマンドは、日レベルのデータを含むSALES表への問合せに対する実行計画を生成します。回答セットでは、四半期ごとに要約されたデータが必要です。リレーショナル・マテリアライズド・ビューのデータは月ごとに要約されているため、クエリー・リライトでは、この問合せに元のリレーショナル・マテリアライズド・ビューは使用されません。ただし、クエリー・リライトでは、月、四半期、年およびすべての年についてのサマリー・データに対して、新しいキューブ・マテリアライズド・ビューを使用できます。
EXPLAIN PLAN FOR SELECT
t.calendar_quarter_desc,
sum(s.amount_sold) AS dollars
FROM sales s,
times t
WHERE s.time_id = t.time_id
AND t.calendar_quarter_desc LIKE '2001%'
GROUP BY t.calendar_quarter_desc
ORDER BY t.calendar_quarter_desc;
この問合せは次の結果を戻します
CALENDAR_QUARTER_DESC DOLLARS --------------------- ---------- 2001-01 6547097.44 2001-02 6922468.39 2001-03 7195998.63 2001-04 7470897.52
次の実行計画は、クエリー・リライトがSALES表から再計算するかわりに、キューブ・マテリアライズド・ビューからサマリー・データCB$CAL_MONTH_SALESを戻すことを示しています。
SELECT plan_table_output FROM TABLE(dbms_xplan.display());
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------
Plan hash value: 2999729407
-----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 30 | 3 (34)| 00:00:01 |
| 1 | SORT GROUP BY | | 1 | 30 | 3 (34)| 00:00:01 |
|* 2 | MAT_VIEW REWRITE CUBE ACCESS | CB$CAL_MONTH_SALES | 1 | 30 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("CB$CAL_MONTH_SALES"."D1_CALENDAR_QUARTER_DESC" LIKE '2001%' AND
"CB$CAL_MONTH_SALES"."SYS_GID"=63)
15 rows selected.
自動的にリフレッシュするキューブ・マテリアライズド・ビューを作成できます。ただし、リフレッシュは、随時REFRESH_MVIEWプロシージャを使用して強制実行できます。
BEGIN
dbms_cube.refresh_mview('SH', 'CB$CAL_MONTH_SALES');
END;
/
Completed refresh of cube mview "SH"."CB$CAL_MONTH_SALES" at 20081112
14:30:59.534.
キューブ・マテリアライズド・ビューを削除する必要がある場合は、すべてのサポート・データベース・オブジェクト(アナリティック・ワークスペース、キューブ、キューブ・ディメンションなど)も削除するためにDROP_MVIEWプロシージャを使用します。
BEGIN
dbms_cube.drop_mview('SH', 'CB$CAL_MONTH_SALES');
END;
/
Dropped cube organized materialized view "SH"."CAL_MONTH_SALES" including
container analytic workspace "SH"."CAL_MONTH_SALES_AW" at 20081112 13:38:47.878.
CREATE_MVIEWファンクションは、キューブ・マテリアライズド・ビューに加えていくつかの優れたデータベース・オブジェクトを作成します。これらのオブジェクトは、ALL_CUBES、ALL_CUBE_DIMENSIONSなどのビューを問い合せてデータ・ディクショナリで検索できます。
この例では、次のサポート・オブジェクトが作成されています。
アナリティック・ワークスペースCAL_MONTH_SALES_AW(AW$CAL_MONTH_SALES_AW表)
キューブCAL_MONTH_SALES
キューブ・ディメンションTIMES_DIM_D1
ディメンション階層CAL_ROLLUP
ディメンション・レベルALL_TIMES_DIM、YEAR、QUARTERおよびMONTH
CAL_ROLLUP階層内のレベルに対する数値属性
メタデータをXMLテンプレートに保存し、それを使用して新しいアナリティック・ワークスペースを作成することで、Oracle OLAP 10gアナリティック・ワークスペースをOLAP 11gにアップグレードできます。元のアナリティック・ワークスペースにはそのままアクセス可能で、アップグレード・プロセスによって変更されません。
|
ヒント: アップグレードの実行には、Analytic Workspace Managerを使用することをお薦めします。『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
DBMS_CUBEにあるこれらのサブプログラムは、アップグレード・プロセスをサポートします。
前提条件は次のとおりです。
OLAP 10gアナリティック・ワークスペースは、CWMメタデータまたはOLAP標準形式(AWXML)メタデータを使用できます。
OLAP 10gアナリティック・ワークスペースでのカスタマイズはXMLテンプレートにエクスポートされない場合があります。OLAP 11gで再作成する必要があります。
元のリレーショナル・ソース・データは、新しいアナリティック・ワークスペースにロードするために使用できる必要があります。データが別のスキーマにある場合、または表の名前が異なる場合は、アップグレード後にディメンション・オブジェクトを新しいリレーショナル・ソースに再マップする必要があります。
OLAP 11gアナリティック・ワークスペースは、OLAP 10gアナリティック・ワークスペースと同じスキーマに作成できます。ただし、別のスキーマに作成する必要がある場合は、次の権限を持つ新しいユーザーを作成します。
OLAP 10gアナリティック・ワークスペース(GRANT SELECT ON schema.AW$analytic_workspace)に対するSELECT権限。
OLAP 10gアナリティック・ワークスペースのソース・データを含むすべてのデータベース表とビューに対するSELECT権限。
OLAP管理者の適切な権限。
Oracle 10gユーザーと同じデフォルトの表領域。
『Oracle OLAPユーザーズ・ガイド』を参照してください。
OLAP 11gとOLAP 10gではネームスペースが異なります。正常にアップグレードするには、11gのネーミング規則で複数回使用されている10gのオブジェクト名を特定し、それらに一意の名前を指定する必要があります。
Oracle 11gのOLAPオブジェクト名の一意性は、次のネームスペースによって制御されます。
スキーマ: キューブ、ディメンションおよびメジャー・フォルダの名前はスキーマ内で一意である必要があります。これらは、表、ビュー、索引、リレーショナル・ディメンションまたはその他の優れたオブジェクトの名前とは競合できません。ただし、これらのOLAP 11gオブジェクト名と10gオブジェクト名は、異なるネームスペースに存在するため、区別する必要はありません。
キューブ: メジャーの名前はキューブ内で一意である必要があります。
ディメンション: 階層、レベルおよび属性の名前はディメンション内で一意である必要があります。たとえば、ディメンション内に、Customersという階層とCustomersというレベルが存在することはできません。
初期化表および名前変更表を使用して、アップグレードした11gアナリティック・ワークスペース内のオブジェクトの名前を変更できます。
INITIALIZE_CUBE_UPGRADEプロシージャは、OLAP 11gネーミング規則での曖昧な名前を識別します。たとえば、10gディメンションには同じ名前の階層とレベルが含まれている場合があります。11gでは、同じネームスペースに階層とレベルが存在するために11gでは名前が一意ではなくなり、11gクライアントは、階層とレベルを名前で区別することはできません。
INITIALIZE_CUBE_UPGRADEは、CUBE_UPGRADE_INFOという表を作成してこれらのレベル、階層および属性に一意の名前を移入します。11gクライアントは、表に移入された一意の名前を使用して、OLAP 11gのメタデータを参照できます。10gのメタデータに曖昧な名前が含まれていると、OLAP 11gクライアントをアナリティック・ワークスペースに連結したり、CUBE_UPGRADE_INFO表なしでアップグレードを実行することはできません。
CUBE_UPGRADE_INFOを編集して、デフォルトの一意の名前を選択した名前に変更できます。また、行を追加して他のオブジェクトの名前を変更することもできます。11gクライアントの使用時に、新しいオブジェクト名が表示されます。10gクライアントの使用時には、元の名前が表示されます。ただし、この表はINITIALIZE_CUBE_UPGRADEプロシージャによって上書きされるため、カスタマイズした内容を名前変更表に入力する必要がある場合があります。
OLAP 10gからのアップグレード時には、CUBE_UPGRADE_INFO内の一意のオブジェクト名が新しいアナリティック・ワークスペース内の11gオブジェクトの名前として使用されます。ただし、INITIALIZE_CUBE_UPGRADEは、キューブ、ディメンションおよびメジャー・フォルダに一意の名前を自動的には指定しません。アップグレードを完了するには、11gネームスペース内でこれらのオブジェクトの名前が一意であることを確認する必要があります。CUBE_UPGRADE_INFO表または名前変更表でこれらのオブジェクトに新しい名前を指定できます。
OLAP 11gクライアントは、OLAP 10gアナリティック・ワークスペースと同じスキーマに存在する場合、自動的にCUBE_UPGRADE_INFOを使用します。
OLAP 11gアナリティック・ワークスペース用の新しいオブジェクト名を含む名前変更表を作成できます。その後、名前変更表をCREATE_IMPORT_OPTIONSおよびUPGRADE_AWプロシージャで使用できます。
同じスキーマ内でアップグレードする場合は、11gアナリティック・ワークスペース用に一意の名前を指定する必要があります。UPGRADE_AWプロシージャによってこのためのパラメータが提供されますが、提供されない場合は、名前変更表に新しい名前を指定する必要があります。11gキューブは10gキューブとは異なるネームスペースに作成されるため、キューブ名の複製によって曖昧にはなりません。
名前変更表に指定されている名前は、アップグレード時にのみ使用され、CUBE_UPGRADE_INFO表に入力されている名前に上書きされます。
名前変更表を作成するには、次の手順を実行します。
SQL*Plusまたは別のSQLクライアントを開き、Oracle Databaseに10gアナリティック・ワークスペースの所有者として接続します。
次のようなコマンドを発行します。
CREATE TABLE table_name (
source_id VARCHAR2(300),
new_name VARCHAR2(30),
object_type VARCHAR2(30));
次のように名前変更表に適切な値を移入します。
table_nameは、名前変更表の名前です。
source_idは、IMPORT_XMLに提供されるXML文書に記述されているオブジェクトの識別子です。この識別子は、次の形式である必要があります。
schema_name.object_name[.subobject_name]
new_nameは、source_idで指定されたオブジェクトへのインポート時に指定されるオブジェクト名です。
object_typeは、XMLで記述されるStandardDimension、DerivedMeasureなどのオブジェクト・タイプです。
たとえば、次のSQL文によって、アナリティック・ワークスペース、1つのキューブおよび4つのディメンションの新しい名前が表に移入されます。
INSERT INTO my_object_map VALUES('GLOBAL_AW.GLOBAL10.AW', 'GLOBAL11', 'AW');
INSERT INTO my_object_map VALUES('GLOBAL_AW.UNITS_CUBE', 'UNIT_SALES_CUBE', 'Cube');
INSERT INTO my_object_map VALUES('GLOBAL_AW.CUSTOMER', 'CUSTOMERS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.CHANNEL', 'CHANNELS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.PRODUCT', 'PRODUCTS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.TIME', 'TIME_PERIODS', 'TimeDimension');
シンプル・アップグレードでは、OLAP 10gアナリティック・ワークスペースからOLAP 11gアナリティック・ワークスペースが作成されます。
Oracle OLAP 10gアナリティック・ワークスペースのシンプル・アップグレードを実行するには、次の手順を実行します。
SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 11gアナリティック・ワークスペースのスキーマ所有者としてOracle Database 11gに接続します。
11gアナリティック・ワークスペース内のオブジェクトの名前を変更するために、「名前変更表」の説明に従って名前変更表を作成します。 (オプション)
「UPGRADE_AWプロシージャ」の説明に従ってアップグレードを実行します。
DBMS_CUBE.BUILDプロシージャを使用してデータをキューブにロードします。
例41-1 GLOBALアナリティック・ワークスペースへのシンプル・アップグレードの実行
この例では、GLOBAL10というOLAP 10gアナリティック・ワークスペースからGLOBAL11というOLAP 11gアナリティック・ワークスペースを作成します。GLOBAL10には同じスキーマ内のキューブ、ディメンション、メジャー・フォルダまたは表の名前の競合は存在しないため、この例では名前変更表は必要ありません。
BEGIN -- Upgrade the analytic workspace dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL11'); -- Load and aggregate the data dbms_cube.build(script => 'UNITS_CUBE, PRICE_AND_COST_CUBE'); END; /
カスタム・アップグレードでは、エクスポートおよびインポートのオプションを設定できます。
Oracle OLAP 10gアナリティック・ワークスペースのカスタム・アップグレードを実行するには、次の手順を実行します。
SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 11gアナリティック・ワークスペースのスキーマ所有者としてOracle Database 11gに接続します。
「初期化表」の説明に従って、初期化表を生成します。新しいデフォルトのオブジェクト名を確認し、必要に応じて変更します。
「名前変更表」の説明に従って、名前変更表を作成します。同じスキーマ内でアップグレードする場合は、名前変更表を使用して、11gアナリティック・ワークスペース用に一意の名前を指定する必要があります。そうでない場合、名前変更表は、アナリティック・ワークスペースのキューブ、ディメンション、メジャー・フォルダ間またはそれらの名前と宛先スキーマの既存のキューブ、ディメンション、メジャー・フォルダ、表間で名前が複製されたときにのみ必要となります。
次を行うSQLスクリプトを作成します。
「CREATE_EXPORT_OPTIONSプロシージャ」の説明に従って、エクスポート・オプション用のXML文書を作成します。アップグレードを実行するには、SUPPRESS_NAMESPACEオプションをTRUEに設定する必要があります。
「CREATE_IMPORT_OPTIONSプロシージャ」の説明に従って、インポート・オプション用のXML文書を作成します。
「EXPORT_XMLプロシージャ」の説明に従って、OLAP 11g形式でXMLテンプレートを作成します。
「IMPORT_XMLプロシージャ」の説明に従って、XMLテンプレートからOLAP 11gアナリティック・ワークスペースを作成します。
「BUILDプロシージャ」の説明に従って、新しいアナリティック・ワークスペースのデータをロードして集計します。
例41-2 GLOBALアナリティック・ワークスペースへのカスタム・アップグレードの実行
この例では、GLOBAL10アナリティック・ワークスペースのOLAP 10gメタデータをGLOBAL_AWスキーマ内のOLAP 11gメタデータにアップグレードします。
名前変更表によってアナリティック・ワークスペースの新しい名前が提供されます。名前変更表は、次のコマンドで定義されます。
CREATE TABLE my_object_map(
source_id VARCHAR2(300),
new_name VARCHAR2(30),
object_type VARCHAR2(30));
INSERT INTO my_object_map VALUES('GLOBAL_AW.GLOBAL10.AW', 'GLOBAL11', 'AW');
COMMIT;
次に、アップグレードを実行するためのスクリプトを示します。
set serverout on
DECLARE
importClob clob;
exportClob clob;
exportOptClob clob;
importOptClob clob;
BEGIN
-- Create table of reconciled names
dbms_cube.initialize_cube_upgrade;
-- Create a CLOB containing the export options
dbms_lob.createtemporary(exportOptClob, TRUE);
dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, preserve_table_owners=>TRUE);
-- Create a CLOB containing the import options
dbms_lob.createtemporary(importOptClob, TRUE);
dbms_cube.create_import_options(out_options_xml=>importOptClob, rename_table => 'MY_OBJECT_MAP');
-- Create CLOBs for the metadata
dbms_lob.createtemporary(importClob, TRUE);
dbms_lob.createtemporary(exportClob, TRUE);
-- Export metadata from a 10g analytic workspace to a CLOB
dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob);
-- Import metadata from the CLOB
dbms_cube.import_xml(in_xml => exportClob, options_xml=>importOptClob, out_xml=>importClob);
-- Load and aggregate the data
dbms_cube.build('UNITS_CUBE, PRICE_AND_COST_CUBE');
END;
/
表41-1 DBMS_CUBEサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
データを1つ以上のキューブおよびディメンションにロードし、問合せ用のデータを準備します。 |
|
|
EXPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。 |
|
|
IMPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。 |
|
|
リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。 |
|
|
リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューのXMLテンプレートを作成します。 |
|
|
キューブ・マテリアライズド・ビューを削除します。 |
|
|
アナリティック・ワークスペースのXMLをCLOBにエクスポートします。 |
|
|
アナリティック・ワークスペースのXMLをファイルにエクスポートします。 |
|
|
XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。 |
|
|
名前が競合しているOracle OLAP 10gオブジェクトを処理して、Oracle 11gクライアントがそれらにアクセスできるようにします。 |
|
|
キューブ・マテリアライズド・ビューをリフレッシュします。 |
|
|
アナリティック・ワークスペースをOracle OLAP 10gから11gにアップグレードします。 |
|
|
結果をデータベースにコミットしないで、XMLが有効かどうかをチェックします。 |
このプロシージャは、データを1つ以上のキューブおよびディメンションにロードし、そのキューブで集計値を生成します。結果は自動的にデータベースにコミットされます。
構文
DBMS_CUBE.BUILD (
script IN VARCHAR2,
method IN VARCHAR2 DEFAULT NULL,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
parallelism IN BINARY_INTEGER DEFAULT 0,
atomic_refresh IN BOOLEAN DEFAULT FALSE,
automatic_order IN BOOLEAN DEFAULT TRUE,
add_dimensions IN BOOLEAN DEFAULT TRUE,
scheduler_job IN VARCHAR2 DEFAULT NULL,
master_build_id IN BINARY_INTEGER DEFAULT 0,
nested IN BOOLEAN DEFAULT FALSE);
job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS'
パラメータ
表41-2 BUILDプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
キューブおよびディメンションのリストと作成オプション(「SCRIPTパラメータ」を参照)。 |
|
|
完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。 各キューブおよびディメンションに順番にメソッドを指定するか、またはすべてのキューブおよびディメンションに単一のメソッドを適用できます。指定したオブジェクトの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのオブジェクトに適用されます。
詳細は、「使用上の注意」を参照してください。 メソッドはディメンションには適用されません。 |
|
|
|
|
|
このジョブに割り当てられた並列処理の数(「使用上の注意」を参照)。 |
|
|
FALSEにすると、ユーザーは作成中に中間結果にアクセスできます。 |
|
|
|
|
|
|
|
|
ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。 |
|
|
作成に対する一意の名前。 |
|
|
すべてのオブジェクトが1つのアナリティック・ワークスペースに存在する必要があります。 |
|
|
このジョブに関連付けるクラス。 |
SCRIPTパラメータ
SCRIPTパラメータは、作成時に追加されるオブジェクトを識別し、各作成で実行される処理のタイプを指定します。このパラメータの構文は、次のとおりです。
[VALIDATE | NO COMMIT] objects [ USING ( commands ) ][,...]
各項目の意味は次のとおりです。
VALIDATEは、すべての作成手順を確認し、計画された手順を実行せずにCUBE_BUILD_LOGに送信します。生成されたすべてのSQLをログ表のOUTPUT列で確認できます。
NO COMMITは、現行の連結モード(またはアナリティック・ワークスペースが連結されていない場合は読取り専用)でオブジェクトを作成し、変更をコミットしません。このオプションでは、一時的にデータ値を変更できるため、what-if分析がサポートされます。詳細は、「SCRIPTパラメータ: USING句: SETコマンド」を参照してください。
objectsは、[aw_name.]object形式のカンマで区切られた1つ以上のキューブまたはディメンションの修飾名(UNITS_CUBE、GLOBAL.UNITS_CUBEなど)を示します。
SCRIPTパラメータ: USING句
USING句は、処理オプションを指定します。カンマで区切られた1つ以上のコマンドで構成されます。
|
注意: リライト・マテリアライズド・ビューを含むキューブでは、ANALYZEコマンドを除いてUSING句は使用できません。デフォルトの作成オプションが使用されます。 |
commandsには、次のいずれかを指定できます。
AGGREGATE USING [MEASURE]
「SCRIPTパラメータ: USING句: AGGREGATEコマンド」に記載されている構文を使用して、集計値を生成します。
ANALYZE
DBMS_AW_STATS.ANALYZEを実行して、キューブおよびディメンションのオプティマイザ統計を生成し格納します。
CLEAR [VALUES | LEAVES | AGGREGATES] [SERIAL | PARALLEL]
データ・リフレッシュ用にキューブを準備します。ディメンションに対して使用することもできますが、CLEARでは、すべてのディメンション・キーが削除されるため、ディメンションを使用するキューブのデータ値がすべて削除されます。
次のオプションの引数で、リフレッシュ・メソッドを制御します。引数を省略した場合、CLEARの動作はリフレッシュ・メソッドによって異なります。「C」(完全)リフレッシュ・メソッドではCLEAR VALUESが実行され、他のすべてのリフレッシュ・メソッドではCLEAR LEAVESが実行されます。
VALUES: キューブ内のデータをすべて消去します。すべてのファクトを再ロードし、すべての集計を再計算する必要があります。このオプションでは、COMPLETEリフレッシュ・メソッドがサポートされています。(CおよびFメソッドのデフォルト)
LEAVES: 詳細データを消去し、集計を保持します。すべてのファクトを再ロードし、すべての新しいファクトまたは変更されたファクトの集計を再計算する必要があります。このオプションでは、FASTリフレッシュ・メソッドがサポートされています。(?メソッドのデフォルト)
AGGREGATES: 詳細データを保持し、集計を消去します。すべての集計を再計算する必要があります。
次のオプションの引数でロード・メソッドを制御しますが、これらのオプションはリフレッシュ・オプションと組み合せることができます。
PARALLEL: 各パーティションが個別に消去されます。(デフォルト)。
SERIAL: すべてのパーティションがまとめて消去されます。
CLEARコマンドを省略した場合、DBMS_CUBEは新しいファクトおよび更新されたファクトをロードしますが、古い詳細データは削除しません。これは、ディメンションに対するLOAD NO SYNCと同様です
COMPILE [SORT | NO SORT | SORT ONLY]
ディメンションでサポートされる構造を作成します。(ディメンションのみ)
次のオプションで、ソート順序属性の使用を制御します。
SORT: ユーザー定義のソート順序属性によって、埋込み(ET)ビューのソート列に移入されます。(デフォルト)。
NO SORT: すべてのソート順序属性が無視されます。このオプションは、ソートに消費されるリソースが多くなりすぎる場合がある非常に大きいディメンション用です。
SORT ONLY: コンパイル手順でのみソートが実行されます。
EXECUTE PLSQL文字列
データベースでPL/SQLコマンドまたはスクリプトを実行します。
EXECUTE OLAP DML string [PARALLEL | SERIAL]
アナリティック・ワークスペースでOLAP DMLコマンドまたはプログラムを実行します。次のオプションで、コマンドまたはプログラムの実行を制御します。
PARALLEL: 各パーティションに対してコマンドまたはプログラムを1回実行します。このオプションを使用して、予測やモデルなどの複雑なDML操作のパフォーマンスを向上させることができます。
SERIAL: キューブ全体に対してコマンドまたはプログラムを1回実行します。(デフォルト)。
[INSERT | MERGE] INTO [ALL HIERARCHIES | HIERARCHIES (dimension.hierarchy)] VALUES (dim_key, parent, level_name)
1つ以上の階層に1つのディメンション・メンバーを追加します。INSERTはメンバーがすでに存在する場合にエラーをスローしますが、MERGEはスローしません。詳細は、「ディメンションのメンテナンス例」を参照してください。
dimension.hierarchy: 新しいメンバーが属する階層の名前。"PRODUCT"."PRIMARY"などのように名前の各部分を二重引用符で囲みます。
dim_key: ディメンション・メンバーのDIM_KEY値。
parent: ディメンション・キーの親。
level_name: ディメンション・キーのレベル。
UPDATE [ALL HIERARCHIES | HIERARCHIES (dimension.hierarchy)] SET PARENT = parent, LEVEL=level_name WHERE MEMBER = dim_key
既存のディメンション・メンバーのレベルまたは親を変更します。オプションについては、「INSERT」を参照してください。また、「ディメンションのメンテナンス例」も参照してください。
DELETE FROM DIMENSION WHERE MEMBER=dim_key
ディメンション・メンバーを削除します。詳細は、「ディメンションのメンテナンス例」を参照してください。
dim_key: 削除するディメンション・メンバーのDIM_KEY値。
SET dimension.attribute[qdr] = CAST('attribute_value' AS VARCHAR2))
ディメンション・メンバーの属性の値を設定します。詳細は、「ディメンションのメンテナンス例」を参照してください。
dimension.attribute: 属性の名前。"PRODUCT"."LONG_DESCRIPTION"などのように名前の各部分を二重引用符で囲みます。
qdr: "PRODUCT"='OPT MOUSE'などの修飾データ参照の形式で属性値が指定されたディメンション・メンバー。
attribute_value: 'Optical Mouse'などの属性の値。
FOR dimension_clause measure_clause BUILD (commands)
次の引数を使用して、特定のメジャーおよびディメンション値に作成を制限します。詳細は、「FOR句の例」を参照してください。
dimension_clause:
dimension ALL | NONE | WHERE condition | LEVELS (level [, level...])
dimensionは、キューブのディメンション・メンバーの名前です。
ALLは、一連のコマンドを実行する前にすべてのメンバーにディメンション・ステータスを設定します。
NONEは、ディメンション・メンバーの値をロードしません。
WHEREは、条件に一致するディメンション・メンバーの値をロードします。
LEVELSは、指定されたレベルのディメンション・メンバーの値をロードします。
levelは、指定されたディメンション・メンバーのレベルです。
measure_clause:
MEASURES (measure [, measure...])
measureは、キューブのメジャーの名前です。
commands: 他のUSINGコマンドのいずれか。
LOAD [SYNCH | NO SYNCH] [PRUNE | PARALLEL | SERIAL] [WHERE condition]
データをディメンションまたはキューブにロードします。
WHEREは、conditionに一致する、マップされたリレーショナル表内の値にロードを制限します。
conditionは、マップされた表の列に基づく有効な述語です。詳細は、「例」を参照してください。
次のオプションの引数は、ディメンションのみに適用されます。
SYNCHは、ディメンション・キーをリレーショナル・データ・ソースと一致させます。(デフォルト)。
NO SYNCHは、新規ディメンション・キーをロードしますが、古いキーは削除しません。
次のオプションの引数は、キューブのみに適用されます。
PRUNE: ファクト表で全表スキャンを実行して、ロードするパーティションを判別します。たとえば、キューブが月ごとにパーティション化され、ファクト表に過去2か月のみの値が含まれている場合は、過去2か月のパーティションをロードするジョブのみが開始されます。
PARALLEL: 各パーティションが個別にロードされます。(デフォルト)。
SERIAL: すべてのパーティションが1つのSELECT文でロードされます。
MODEL model_name [PARALLEL | SERIAL]
事前にキューブ用に作成されたモデルを実行します。次の引数を指定できます。
PARALLEL: 各パーティションでモデルが個別に実行されます。
SERIAL: すべてのキューブでモデルが同時に実行されます。(デフォルト)。
SET
「SCRIPTパラメータ: USING句: SETコマンド」に記載されている構文を使用してキューブへのライトバックをサポートします。(キューブのみ)
SOLVE [PARALLEL | SERIAL]
キューブ用に定義したルール(集計演算子、事前計算の仕様など)を使用して、キューブを集計します。(キューブのみ)
次の引数を指定できます。
PARALLEL: 各パーティションが個別に解決されます。(デフォルト)。
SERIAL: すべてのパーティションが同時に解決されます。
SCRIPTパラメータ: USING句: AGGREGATEコマンド
スクリプトのAGGREGATEコマンドは、1つ以上のメジャーに対して集計ルールを指定します。
|
注意: AGGREGATEコマンドは、未圧縮のキューブでのみ使用できます。 |
AGGREGATEの構文は、次のとおりです。
{ AGGREGATE USING MEASURE
WHEN measure1 THEN operator1
WHEN measure2 THEN operator2...
ELSE default_operator
|
[AGGREGATE USING] operator_clause }
processing_options
OVER { ALL | dimension | dimension HIERARCHIES (hierarchy)}
USING MEASURE句
この句を使用すると、キューブ内の様々なメジャーに対して、それぞれ異なる集計演算子を指定できます。
operator_clause
operator(WEIGHTBY expression | SCALEBY expression)
WEIGHTBYは、集計前に各データ値を式で乗算します。
SCALEBYは、集計前に各データ値に式の値を追加します。
表41-3 集計演算子
| 演算子 | オプション | 説明 |
|---|---|---|
|
|
|
データ値を追加し、その合計を追加したデータ値の数で割ります。 |
|
|
|
最初の実際のデータ値。 |
|
|
|
データ値を追加し、その合計をディメンション階層の子の数で割ります。非NAの子のみをカウントするAVERAGEとは異なり、HAVERAGEでは、各子が値を持っているかどうかに関係なく、1つの親の論理的な子がすべてカウントされます。 |
|
|
|
階層の最初のデータ値(値がNAの場合でも)。 |
|
|
|
階層の最後のデータ値(値がNAの場合でも)。 |
|
|
|
最後の実際のデータ値。 |
|
|
|
各親の子の中で最大のデータ値。 |
|
|
|
各親の子の中で最小のデータ値。 |
|
|
|
データ値を追加します。(デフォルト)。 |
処理オプション
次の処理オプションを集計用に指定できます。
(ALLOW | DISALLOW) OVERFLOW
小数部オーバーフローを許可するかどうかを指定します。小数部オーバーフローは、計算の結果が大きすぎて、数値の指数部分で表現できない場合に発生します。
ALLOW: オーバーフローが発生する計算がエラーなしで実行され、結果はNULLとなります。(デフォルト)。
DISALLOW: オーバーフローを含む計算の実行が停止され、エラー・メッセージが生成されます。
(ALLOW | DISALLOW) DIVISION BY ZERO
0(ゼロ)で割り算できるかどうかを指定します。
ALLOW: 0 (ゼロ)の割り算を含む計算はエラーなしで実行されますが、NULL値が戻されます。(デフォルト)。
DISALLOW: 0(ゼロ)の割り算を含む計算の実行が停止され、エラー・メッセージが生成されます。
(CONSIDER | IGNORE) NULLS
NULLが計算に含まれるかどうかを指定します。
CONSIDER: NULLが計算に含まれます。NULL値が含まれる計算では、NULL値が戻されます。
IGNORE: 実際のデータ値のみが計算に使用されます。NULLは存在しないものとして処理されます。(デフォルト)。
MAINTAIN COUNT
平均の計算に使用するために、ディメンション・メンバーの最新数を保存します。オンザフライでメンバーをカウントするには、このオプションを省略します。
SCRIPTパラメータ: USING句: SETコマンド
スクリプト内のSETコマンドは、格納されているメジャー内の1つ以上のセルに値を割り当てます。CASE文には、この構文があります。
SET target = expression
各項目の意味は、次のとおりです。
targetは、メジャーまたは修飾データ参照です。
expressionは、targetに適したデータ・タイプの値を戻します。
修飾データ参照
修飾データ参照(QDR)は、問合せの継続中ディメンション・オブジェクトを1つ以上のディメンション内の1つのメンバーに制限します。
QDRの構文は、次のとおりです。
expression [ { dimension = member }[ , { dimension = member } ...] ]
各項目の意味は、次のとおりです。
expressionは、ディメンション式(通常はメジャーの名前)です。
dimensionは、式の一次ディメンションです。
memberは、ディメンションの値です。
太字で示されている外側の大カッコはリテラル構文要素であり、オプションの引数は示していません。通常のテキストで示されている内側の大カッコはオプションの引数の境界を示しており、構文要素ではありません。
次の例では、2007年の売上値が戻されます。
global.sales[global.time = 'CY2007' ]
次の例では、2007年の米国のみでの売上値が戻されます。
sales[customer = 'US', time = 'CY2007' ]
詳細は、SETコマンドの修飾データ参照の例を参照してください。
使用上の注意
作成メソッド
C、Sおよび?メソッドは常に成功し、任意のキューブで使用できます。
FおよびPメソッドでは、作成済の高速マテリアライズド・ビューまたはリライト・マテリアライズド・ビューがキューブに存在している必要があります。
並列度
パーティション化されたキューブは、並列処理でロードおよび集計できます。たとえば、5つのパーティションがあるキューブでは、最大で5つのプロセスを使用できます。ディメンションは常に、直列でロードされます。
作成で実際に割り当てられる並列処理の数は、次の要素の最小値で制御されます。
作成中のキューブの数および各キューブのパーティションの数。
BUILDプロシージャのPARALLELISM引数の設定。
JOB_QUEUE_PROCESSESデータベース初期化パラメータの設定。
UNITS_CUBEにパーティションが12個あり、PARALLELISMを10に設定し、JOB_QUEUE_PROCESSESを4に設定するとします。OLAPでは、スレーブ・プロセスとして作成ログに表示される4つのプロセスが使用されます。
PARALLEL_DEGREE_POLICYデータベース初期化パラメータがAUTOまたはLIMITEDに設定されていると、SQLエンジンによって追加プロセスが割り当てられる場合があります。たとえば、OLAPが4つのプロセスを割り当てる場合、SQLエンジンがこれらのプロセスのうち2つは4つのプロセス、合計6つのプロセスで実行する必要があると判断する可能性があります。
作成ログ
OLAPは、作成に関する診断情報を提供する3つのログを生成します。
キューブ作成ログ
拒否値ログ
キューブ・ディメンション・コンパイル・ログ
Analytic Workspace Managerは、アナリティック・ワークスペースと同じスキーマにある表として、これらのログを自動的に作成します。Analytic Workspace Managerを使用しない場合は、DBMS_CUBE_LOGパッケージを使用して、PL/SQLにログを作成して管理できます。
また、$ORACLE_HOME/olap/admin/utlolaplog.sqlを実行してキューブ・ログ・ファイルを作成することもできます。このスクリプトは、さらに次の3つのビューを作成します。
次のレポートは、4つのディメンションと2つのキューブがあるGLOBALアナリティック・ワークスペースのオブジェクトの作成が正常に完了したことを示しています。
SELECT command, status, build_object, build_object_type type
FROM cube_build_report_latest;
COMMAND STATUS BUILD_OBJECT TYPE
------------------------- ---------- ------------------------------ ----------
BUILD COMPLETED BUILD
FREEZE COMPLETED BUILD
LOAD NO SYNCH COMPLETED CHANNEL DIMENSION
COMPILE COMPLETED CHANNEL DIMENSION
UPDATE/COMMIT COMPLETED CHANNEL DIMENSION
LOAD NO SYNCH COMPLETED CUSTOMER DIMENSION
COMPILE COMPLETED CUSTOMER DIMENSION
UPDATE/COMMIT COMPLETED CUSTOMER DIMENSION
LOAD NO SYNCH COMPLETED PRODUCT DIMENSION
COMPILE COMPLETED PRODUCT DIMENSION
UPDATE/COMMIT COMPLETED PRODUCT DIMENSION
LOAD NO SYNCH COMPLETED TIME DIMENSION
COMPILE COMPLETED TIME DIMENSION
UPDATE/COMMIT COMPLETED TIME DIMENSION
COMPILE AGGMAP COMPLETED PRICE_CUBE CUBE
UPDATE/COMMIT COMPLETED PRICE_CUBE CUBE
COMPILE AGGMAP COMPLETED UNITS_CUBE CUBE
UPDATE/COMMIT COMPLETED UNITS_CUBE CUBE
DBMS_SCHEDULER.CREATE_JOB COMPLETED PRICE_CUBE CUBE
DBMS_SCHEDULER.CREATE_JOB COMPLETED UNITS_CUBE CUBE
BUILD COMPLETED BUILD
LOAD COMPLETED PRICE_CUBE CUBE
SOLVE COMPLETED PRICE_CUBE CUBE
UPDATE/COMMIT COMPLETED PRICE_CUBE CUBE
BUILD COMPLETED BUILD
LOAD COMPLETED UNITS_CUBE CUBE
SOLVE COMPLETED UNITS_CUBE CUBE
UPDATE/COMMIT COMPLETED UNITS_CUBE CUBE
ANALYZE COMPLETED PRICE_CUBE CUBE
ANALYZE COMPLETED UNITS_CUBE CUBE
THAW COMPLETED BUILD
31 rows selected.
例
この例では、デフォルト・パラメータを使用してUNITS_CUBEを作成します。
EXECUTE DBMS_CUBE.BUILD('GLOBAL.UNITS_CUBE');
次の例では、UNITS_CUBEを作成し、TIMEおよびCHANNELという2つのディメンションを明示的に作成します。ディメンションでは完全(C)メソッドが使用され、キューブでは高速リフレッシュ(S)・メソッドが使用されます。
BEGIN
DBMS_CUBE.BUILD(
script=>'GLOBAL."TIME", GLOBAL.CHANNEL, GLOBAL.UNITS_CUBE',
method=>'CCS',
parallelism=>2);
END;
/
次の例では、WHERE句で識別して選択したデータのみをロードします。
BEGIN
DBMS_CUBE.BUILD(q'!
GLOBAL."TIME",
GLOBAL.CHANNEL,
GLOBAL.CUSTOMER,
GLOBAL.PRODUCT,
GLOBAL.UNITS_CUBE USING (LOAD NO SYNCH
WHERE UNITS_FACT.MONTH_ID LIKE '2006%'
AND UNITS_FACT.SALES > 5000)!');
END;
/
FOR句の例
この例では、時間ディメンションが暦年ごとにパーティション化され、CY2006で識別されたパーティションのみがDBMS_CUBEによって作成されます。HIER_ANCESTORは、OLAP式の構文の分析機能です。
BEGIN
dbms_cube.build(q'!
UNITS_CUBE USING
(
FOR "TIME"
WHERE HIER_ANCESTOR(WITHIN "TIME".CALENDAR LEVEL "TIME".CALENDAR_YEAR) = 'CY2006'
BUILD (LOAD, SOLVE)
)!',
parallelism=>1);
END;
/
次の例では、FOR句を使用して作成を2006年のSALESメジャーに制限します。すべてのオブジェクトが完全(C)メソッドを使用して作成されます。
BEGIN
DBMS_CUBE.BUILD(
script => '
GLOBAL."TIME",
GLOBAL.CHANNEL,
GLOBAL.CUSTOMER,
GLOBAL.PRODUCT,
GLOBAL.UNITS_CUBE USING
(
FOR MEASURES(GLOBAL.UNITS_CUBE.SALES)
BUILD(LOAD NO SYNCH WHERE GLOBAL.UNITS_FACT.MONTH_ID LIKE ''2006%'')
)',
method => 'C',
parallelism => 2);
END;
/
ライトバックの例
次に、USING句でのSETコマンドの様々な使用例を示します。
次の例では、Sales TargetをSalesの5%増に設定します。
DBMS_CUBE.BUILD('UNITS_CUBE USING(
SET UNITS_CUBE.SALES_TARGET = UNITS_CUBE.SALES * 1.05, SOLVE)');
次の例では、2007年5月のDeluxe Mouseの価格を$29.99に設定します。
DBMS_CUBE.BUILD('PRICE_CUBE USING(
SET PRICE_CUBE.UNIT_PRICE["TIME"=''2007.05'', "PRODUCT"=''DLX MOUSE'']
= 29.99, SOLVE)');
次の例には2つのSETコマンドが含まれていますが、キューブは再集計されません。
DBMS_CUBE.BUILD('PRICE_CUBE USING(
SET PRICE_CUBE.UNIT_PRICE["TIME"=''2006.12'', "PRODUCT"=''DLX MOUSE'']
= 29.49,
SET PRICE_CUBE.UNIT_PRICE["TIME"=''2007.05'', "PRODUCT"=''DLX MOUSE'']
= 29.99)');
ディメンションのメンテナンス例
次のスクリプトは、ディメンションのメンテナンスを示しています。OPT MOUSEという新しいディメンション・メンバーをすべての階層に追加し、一次階層でのその位置を変更し、長い説明を割り当ててから、ディメンションから削除しています。
BEGIN
dbms_output.put_line('Add optical mouse');
dbms_cube.build(q'!
"PRODUCT" using (MERGE INTO ALL HIERARCHIES
VALUES ('ITEM_OPT MOUSE', 'CLASS_SFT', "PRODUCT"."FAMILY"))
!');
dbms_output.put_line('Alter optical mouse');
dbms_cube.build(q'!
"PRODUCT" using (UPDATE HIERARCHIES ("PRODUCT"."PRIMARY")
SET PARENT = 'FAMILY_ACC', LEVEL = "PRODUCT"."ITEM"
WHERE MEMBER = 'ITEM_OPT MOUSE')
!');
dbms_output.put_line('Provide attributes to optical mouse');
dbms_cube.build(q'!
"PRODUCT" USING (SET "PRODUCT"."LONG_DESCRIPTION"["PRODUCT" = 'ITEM_OPT MOUSE']
= CAST('Optical Mouse' AS VARCHAR2))
!');
dbms_output.put_line('Delete optical mouse');
dbms_cube.build(q'!
"PRODUCT" USING (DELETE FROM DIMENSION WHERE MEMBER='ITEM_OPT MOUSE')
!');
END;
/
OLAP DMLの例
次の例では、OLAP DMLを使用してキューブ作成ログにコメントを追加します。
BEGIN
DBMS_CUBE.BUILD(q'!
global.units_cube USING (
EXECUTE OLAP DML 'SHOW STATLEN(units_cube_prt_list)' PARALLEL,
EXECUTE OLAP DML 'SHOW LIMIT(units_cube_prt_list KEEP ALL)' PARALLEL,
EXECUTE OLAP DML 'SHOW STATLEN(time)' parallel,
EXECUTE OLAP DML 'SHOW LIMIT(time KEEP time_levelrel ''CALENDAR_YEAR'')' parallel)!',
parallelism=>2,
add_dimensions=>false);
END;
/
次の問合せで、キューブ作成ログのコメントを表示します。
SELECT partition, slave_number, TO_CHAR(output) output
FROM cube_build_log
WHERE command = 'OLAP DML'
AND status = 'COMPLETED'
ORDER BY slave_number, time;
PARTITION SLAVE_NUMBER OUTPUT
------------ ------------ -------------------------------------------------------
P10:CY2007 1 <OLAPDMLExpression
Expression="TO_CHAR(statlen(units_cube_prt_list))"
Value="1"/>
P10:CY2007 1 <OLAPDMLExpression
Expression="TO_CHAR(limit(units_cube_prt_list keep al
l))"
Value="P10"/>
P10:CY2007 1 <OLAPDMLExpression
Expression="TO_CHAR(statlen(time))"
Value="17"/>
P10:CY2007 1 <OLAPDMLExpression
Expression="TO_CHAR(limit(time keep time_levelrel &ap
os;CALENDAR_YEAR'))"
Value="CALENDAR_YEAR_CY2007"/>
P9:CY2006 2 <OLAPDMLExpression
Expression="TO_CHAR(statlen(units_cube_prt_list))"
Value="1"/>
P9:CY2006 2 <OLAPDMLExpression
Expression="TO_CHAR(limit(units_cube_prt_list keep al
l))"
Value="P9"/>
P9:CY2006 2 <OLAPDMLExpression
Expression="TO_CHAR(statlen(time))"
Value="17"/>
.
.
.
このプロシージャは、EXPORT_XMLプロシージャおよびEXPORT_XML_TO_FILEプロシージャの処理オプションについて記述する入力XML文書を作成します。
構文
DBMS_CUBE.CREATE_EXPORT_OPTIONS (
out_options_xml IN/OUT CLOB,
target_version IN VARCHAR2 DEFAULT NULL,
suppress_owner IN BOOLEAN DEFAULT FALSE,
suppress_namespace IN BOOLEAN DEFAULT FALSE,
preserve_table_owners IN BOOLEAN DEFAULT FALSE,
metadata_changes IN CLOB DEFAULT NULL);
パラメータ
表41-4 CREATE_EXPORT_OPTIONSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
EXPORT_XMLプロシージャの |
|
|
EXPORT_XMLまたはEXPORT_XML_TO_FILEによって生成されたXML文書がインポートされるOracle Databaseのバージョンを指定します。11.2、11.2.0.2.0などの2桁から5桁の数字を指定できます。このパラメータは、デフォルトでは現行のデータベース・バージョンになるため、通常は省略できます。 |
|
|
XML要素での所有者属性およびオブジェクト名での所有者修飾子の使用を制御します。XMLから所有者を削除するには |
|
|
XML要素でのネームスペース属性およびオブジェクト名でのネームスペース修飾子の使用を制御します。XMLからネームスペースを削除するには ネームスペースによって、Oracle 10gで作成されたオブジェクトをOracle 11gで作成されたオブジェクトと共存させることができます。ネームスペースの設定または変更はできません。 |
|
|
UNITS_HISTORY_FACTのかわりにGLOBAL.UNITS_HISTORY_FACTなど、マッピング要素で表の名前を修飾するときに所有者の使用を制御します。表の所有者を保持するには |
|
|
エクスポートされたオブジェクトの記述を上書きする、オブジェクトの11g XML記述を含んでいます。XML文書には、変更された要素を一意に識別するために必要な属性を含むそれらの要素のすべての親XML要素が含まれている必要があります。Name属性が存在する場合はそれを使用します。詳細は、「例」を参照してください。 |
例
次の例では、エクスポート・オプションのXML文書を生成します。
DECLARE optionsClob CLOB; BEGIN dbms_lob.createtemporary(optionsClob, false, dbms_lob.CALL); dbms_cube.create_export_options(out_options_xml=>optionsClob, suppress_namespace=>TRUE); dbms_output.put_line(optionsClob); END; /
DBMS_OUTPUT.PUT_LINEプロシージャによって次のXML文書が表示されます(読みやすさを考慮して書式設定されています)。
<?xml version="1.0"?>
<Export TargetVersion="11.2.0.2">
<ExportOptions>
<Option Name="SuppressOwner" Value="FALSE"/>
<Option Name="SuppressNamespace" Value="TRUE"/>
<Option Name="PreserveTableOwners" Value="FALSE"/>
</ExportOptions>
</Export>
次の例では、CHANNELディメンションの米語での長い記述属性のマッピングに対するメタデータの変更を含むXML文書を生成します。
DECLARE importClob clob; exportClob clob; overClob clob; exportOptClob clob; importOptClob clob; BEGIN dbms_lob.createtemporary(overClob, TRUE); dbms_lob.open(overClob, DBMS_LOB.LOB_READWRITE); dbms_lob.writeappend(overClob,58, '<Metadata Version="1.3" MinimumDatabaseVersion="11.2.0.2">'); dbms_lob.writeappend(overClob,34, '<StandardDimension Name="CHANNEL">'); dbms_lob.writeappend(overClob,75, '<Description Type="Description" Language="AMERICAN" Value="Sales Channel"/>'); dbms_lob.writeappend(overClob,20, '</StandardDimension>'); dbms_lob.writeappend(overClob,11, '</Metadata>'); dbms_lob.close(overClob); -- Enable 11g clients to access 10g metadata dbms_cube.initialize_cube_upgrade; -- Create a CLOB containing the export options dbms_lob.createtemporary(exportOptClob, TRUE); dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, metadata_changes=>overClob); -- Create a CLOB containing the import options dbms_lob.createtemporary(importOptClob, TRUE); dbms_cube.create_import_options(out_options_xml=>importOptClob, rename_table => 'MY_OBJECT_MAP'); -- Create CLOBs for the metadata dbms_lob.createtemporary(importClob, TRUE); dbms_lob.createtemporary(exportClob, TRUE); -- Export metadata from a 10g analytic workspace to a CLOB dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob); -- Import metadata from the CLOB dbms_cube.import_xml(in_xml => exportClob, options_xml=>importOptClob, out_xml=>importClob); -- Load and aggregate the data dbms_cube.build(script=>'UNITS_CUBE, PRICE_AND_COST_CUBE'); END; /
次に、exportClobのコンテンツを示します(読みやすさを考慮して書式設定が追加されています)。このXML文書によってChannelについての記述がSales Channelに変更されます。
<Metadata Version="1.3" MinimumDatabaseVersion="11.2.0.2">
<StandardDimension Name="CHANNEL">
<Description Type="Description" Language="AMERICAN" Value="Sales Channel"/>
</StandardDimension>
</Metadata>
このプロシージャは、IMPORT_XMLプロシージャの処理オプションについて記述する入力XML文書を作成します。
構文
DBMS_CUBE.CREATE_IMPORT_OPTIONS (
out_options_xml IN/OUT CLOB,
validate_only IN BOOLEAN DEFAULT FALSE,
rename_table IN VARCHAR2 DEFAULT NULL);
パラメータ
表41-5 CREATE_IMPORT_OPTIONSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
IMPORT_XMLプロシージャの |
|
|
|
|
|
インポートしたオブジェクトの新しい名前を識別する、[ |
例
この例では、検証のみおよび名前変更表を指定します。インポートで使用されるインポートCLOBの例については、「IMPORT_XMLプロシージャ」を参照してください。
DECLARE importClob clob; BEGIN dbms_lob.createtemporary(importClob, TRUE); dbms_cube.create_import_options(out_options_xml => importClob, rename_table => 'MY_OBJECT_MAP', validate_only => TRUE); dbms_output.put_line(importClob); END; /
次のXML文書が生成されます。
<?xml version="1.0"?>
<Import>
<ImportOptions>
<Option Name="ValidateOnly" Value="TRUE"/>
<Option Name="RenameTable" Value="MY_OBJECT_MAP"/>
</ImportOptions>
</Import>
このファンクションは、リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。
構文
DBMS_CUBE.CREATE_MVIEW (
mvowner IN VARCHAR2,
mvname IN VARCHAR2,
sam_parameters IN CLOB DEFAULT NULL)
RETURN VARCHAR2;
パラメータ
表41-6 CREATE_MVIEWファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リレーショナル・マテリアライズド・ビューの所有者。 |
|
|
リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。 表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。 |
|
|
'parameter1=value1, parameter2=value2,...'形式のパラメータ。「SQL集計管理パラメータ」を参照してください。 |
SQL集計管理パラメータ
CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションでは、表41-7に示すSQL集計管理(SAM)パラメータが使用されます。一部のパラメータでは、高度な分析を行うキューブの開発がサポートされています。他のパラメータでは、Javaアプリケーションの開発がサポートされています。デフォルト設定は、リレーショナル・マテリアライズド・ビューにかわって置き換えられたキューブ・マテリアライズド・ビューに適した設定になっています。
表41-7 SQL集計管理パラメータ
| パラメータ | 説明 |
|---|---|
|
|
キューブ内のすべてのディメンション階層に、再上位レベルおよびレベル・メンバーを追加します。関連付けられたリレーショナル・ディメンションに階層がない場合は、ディメンション階層が作成されます。
|
|
|
ディメンション・キーの作成を制御します。
|
|
|
属性を階層レベル、ディメンション・レベルまたはその両方のいずれにマップするかを指定します。
|
|
|
キューブを所有するアナリティック・ワークスペースの名前を指定します。1から30バイトの長さの単純なデータベース・オブジェクト名を選択します。デフォルト名は |
|
|
キューブ・マテリアライズド・ビューの作成後、すぐにデータ・リフレッシュを実行するかどうかを指定します。
注意: このパラメータは |
|
|
キューブ・マテリアライズド・ビューの検証および作成を制御します。ファンクションは、この設定に関係なく、キューブとそれに関連するキューブ・ディメンションを含むアナリティック・ワークスペースを作成します。
注意: 次の設定では、キューブ・マテリアライズド・ビューが作成されません。キューブ・マテリアライズド・ビューがないアナリティック・ワークスペースを削除するには、Analytic Workspace Managerを使用してください。
|
|
|
リレーショナル・マテリアライズド・ビューから導出されるキューブの名前を指定します。1から30バイトの長さの単純なデータベース・オブジェクト名を選択します。デフォルト名は |
|
|
JavaプログラムによるXML文書へのアクセスをサポートします。
|
|
|
ソース・リレーショナル・マテリアライズド・ビューのクエリー・リライトの無効化を制御します。
注意: このパラメータは |
|
|
|
|
|
パーティション化されたキューブのパーティション・レベルより上位の集計値の生成を制御します。
|
|
|
ログ・メッセージを送信して格納します。デフォルトでは、メッセージは使用できません。
|
|
|
キューブのパーティション化を制御します。
|
|
|
キューブ・マテリアライズド・ビュー内の属性の外観を制御します。
|
|
|
集計および格納されるデータの割合を指定します。残りの値は、セッション中に問合せからの要求に応じて計算されます。
パーティション・キューブの最上位パーティションの割合を指定します。デフォルト値は35:0で、この値では、最下位パーティションの35%および最上位パーティションの0%を事前計算するように指定されます。キューブがパーティション化されていない場合、2番目の数値は無視されます。 |
|
|
複数列キーがキューブで表示される方法を制御します。
|
|
|
リレーショナル・マテリアライズド・ビューとキューブ・マテリアライズド・ビューの間の忠実度の損失を、警告メッセージとするか例外とするかを制御します。「リレーショナル・マテリアライズド・ビューの要件」を参照してください。
|
|
|
リレーショナル・マテリアライズド・ビューの定義問合せの
|
|
|
最上位ディメンション・オブジェクトの名前を一意にするかどうかを制御します。ディメンション・オブジェクトはリレーショナル・オブジェクトとは異なるネームスペースを持つため、ネームスペース間で競合が発生する可能性があります。
|
|
|
リレーショナル・マテリアライズド・ビューの定義問合せの
|
|
|
生成されたXML文書を検証するかどうかを制御します。
|
例
SQL集計管理サブプログラムのすべての例で、サンプルの販売履歴スキーマが使用されます。このスキーマはCAL_MONTH_SALES_MVおよびFWEEK_PSCAT_SALES_MVの2つのリレーショナル・マテリアライズド・ビューとともにOracle Databaseにインストールされます。
次のスクリプトは、CAL_MONTH_SALES_MVをリレーショナル・マテリアライズド・ビューとして使用してキューブ・マテリアライズド・ビューを作成します。すべてデフォルト・オプションを使用しています。
SET serverout ON format wrapped
DECLARE
salesaw varchar2(30);
BEGIN
salesaw := dbms_cube.create_mview('SH', 'CAL_MONTH_SALES_MV');
END;
/
次の例では、FWEEK_PSCAT_SALES_MVからキューブ・マテリアライズド・ビューを作成するために、いくつかのパラメータを設定しています。これらのパラメータによってキューブ・マテリアライズド・ビューを変更する方法は、次のとおりです。
ADDTOPS: 単一の値で構成される最上位レベルを階層に追加します。販売履歴のすべてのディメンションには、すでに最上位レベルがあります。
PRECOMPUTE: マテリアライズされた集計の割合を35:0から40:10に変更します。
EXPORTXML: XML文書のテキスト・ファイルを作成します。
BUILD: データ・リフレッシュを実行します。
DECLARE
salescubemv varchar2(30);
sam_param clob := 'ADDTOPS=FALSE,
PRECOMPUTE=40:10,
EXPORTXML=WORK_DIR/sales.xml,
BUILD=IMMEDIATE';
BEGIN
salescubemv := dbms_cube.create_mview('SH', 'FWEEK_PSCAT_SALES_MV',
sam_param);
END;
/
このファンクションは、既存のリレーショナル・マテリアライズド・ビューから導出した情報を使用して、マテリアライズド・ビューの機能を持つキューブを定義するXMLテンプレートを生成します。
構文
DBMS_CUBE.DERIVE_FROM_MVIEW (
mvowner IN VARCHAR2,
mvname IN VARCHAR2,
sam_parameters IN CLOB DEFAULT NULL)
RETURN CLOB;
パラメータ
表41-8 DERIVE_FROM_MVIEWファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リレーショナル・マテリアライズド・ビューの所有者。 |
|
|
リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。 表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。 |
|
|
'parameter1=value1, parameter2=value2,...'形式のパラメータのオプションのリスト。「SQL集計管理パラメータ」を参照してください。 |
使用上の注意
XMLテンプレートからキューブ・マテリアライズド・ビューを作成する場合は、IMPORT_XMLプロシージャを使用してください。その後、REFRESH_MVIEWプロシージャを使用して、キューブ・マテリアライズド・ビューのデータをリフレッシュします。
「SQL集計管理の使用方法」を参照してください。
DECLARE
salescubexml clob := null;
sam_param clob := 'exportXML=WORK_DIR/sales_cube.xml';
BEGIN
salescubexml := dbms_cube.derive_from_mview('SH', 'CAL_MONTH_SALES_MV',
sam_param);
END;
/
このプロシージャは、データベースからキューブ・マテリアライズド・ビューおよびすべての関連するオブジェクトを削除します。これらのオブジェクトには、ディメンション・マテリアライズド・ビュー、キューブ、キューブ・ディメンション、レベル、階層およびアナリティック・ワークスペースが含まれます。
構文
DBMS_CUBE.DROP_MVIEW (
mvowner IN VARCHAR2,
mvname IN VARCHAR2,
sam_parameters IN CLOB DEFAULT NULL);
使用上の注意
このプロシージャは、CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションを使用して作成したキューブ・マテリアライズド・ビューを削除する場合に使用してください。キューブまたはディメンションを変更した場合、DROP_MVIEWではキューブ・マテリアライズド・ビューを削除できない可能性があります。
CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションで使用される一部のCUBEMVOPTIONパラメータは、マテリアライズド・ビューを作成しません。アナリティック・ワークスペース、キューブおよびキューブ・ディメンションを削除するには、Analytic Workspace Managerを使用してください。
EXPORTXMLパラメータを使用すると、キューブ・マテリアライズド・ビューを再作成した後に、XML文書を使用してそのキューブ・マテリアライズド・ビューを削除できます。IMPORT_XMLプロシージャを使用してください。
「SQL集計管理の使用方法」を参照してください。
例
現行のスキーマに4つのマテリアライズド・ビューがあります。CB$CAL_MONTH_SALESはSALES表のキューブ・マテリアライズド・ビューです。CB$TIMES_DIM_D1_CAL_ROLLUPはTIMESディメンション表のTIMES_DIMディメンションのキューブ・ディメンション・マテリアライズド・ビューです。他はリレーショナル・マテリアライズド・ビューです。
SELECT mview_name FROM user_mviews; MVIEW_NAME ------------------------------ CB$CAL_MONTH_SALES CB$TIMES_DIM_D1_CAL_ROLLUP CAL_MONTH_SALES_MV FWEEK_PSCAT_SALES_MV
次のコマンドは、CB$CAL_MONTH_SALESおよびCB$TIMES_DIM_D1_CAL_ROLLUPの両方を削除します。
EXECUTE dbms_cube.drop_mview('SH', 'CB$CAL_MONTH_SALES');
Dropped cube organized materialized view "SH"."CAL_MONTH_SALES"
including container analytic workspace "SH"."CAL_MONTH_SALES_AW"
at 20081110 16:31:40.056.
データ・ディクショナリに対する次の問合せで、マテリアライズド・ビューが削除されたことを確認します。
SELECT mview_name FROM user_mviews; MVIEW_NAME ------------------------------ CAL_MONTH_SALES_MV FWEEK_PSCAT_SALES_MV
このプロシージャは、OLAPメタデータをCLOBに書き込みます。
構文
DBMS_CUBE.EXPORT_XML
(object_ids IN VARCHAR2,
out_xml IN/OUT CLOB;
DBMS_CUBE.EXPORT_XML
(object_ids IN VARCHAR2,
options_xml IN CLOB,
out_xml IN/OUT CLOB;
DBMS_CUBE.EXPORT_XML
(object_ids IN VARCHAR2,
options_dirname IN VARCHAR2,
options_filename IN VARCHAR2,
out_xml IN/OUT CLOB;
パラメータ
表41-10 EXPORT_XMLプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
次のいずれかの識別子です。
名前をカンマで区切って複数のオブジェクトを指定できます。 注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。 |
|
|
|
|
|
エクスポート・オプションのXML文書を含むファイル。 |
|
|
エクスポート・オプションのXML文書を含むCLOB変数。この文書を生成するには、CREATE_EXPORT_OPTIONSプロシージャを使用します。 |
|
|
|
エクスポート・オプション
エクスポート・オプションのデフォルト設定は多くの場合適切であるため、options_xmlまたはoptions_dirnameおよびoptions_filenameパラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 11gにアップグレードするときは、デフォルト設定を変更するXML文書を指定する必要があります。次の例では、すべてのパラメータをFalseからTrueに変更し、スキーマに対して適切に設定します。
<?xml version="1.0"?>
<Export>
<ExportOptions>
<Option Name="SuppressNamespace" Value="True"/>
<Option Name="SuppressOwner" Value="True"/>
<Option Name="PreserveTableOwners" Value="True"/>
</ExportOptions>
</Export>
このXML文書は、手動で作成するか、またはCREATE_EXPORT_OPTIONSプロシージャを使用して作成できます。
例
同じスキーマへのアップグレードでのEXPORT_XMLの使用例については、「OLAP 10gからOLAP 11gへのアナリティック・ワークスペースのアップグレード」を参照してください。
次のPL/SQLスクリプトは、GLOBAL11というOLAP 11gアナリティック・ワークスペースをGLOBAL_AWスキーマからGLOBALスキーマにコピーします。アップグレードは実行されません。
別のスキーマにアップグレードするには、例を次のように変更します。
INITIALIZE_CUBE_UPGRADEプロシージャをコールします。
パラメータ設定SUPPRESS_NAMESPACE=>TRUEを追加してCREATE_EXPORT_OPTIONSプロシージャをコールします。
PL/SQLクライアントは、GLOBALとしてデータベースに接続する必要があります。GLOBALユーザーは、GLOBAL_AW.AW$GLOBALおよびすべてのリレーショナル・データ・ソースでSELECT権限を持つ必要があります。
BEGIN -- Create a CLOB for the export options dbms_lob.createtemporary(optionsClob, TRUE); dbms_cube.create_export_options(out_options_xml=>optionsClob, suppress_owner=>TRUE, preserve_table_owners=>TRUE); -- Create a CLOB for the XML template dbms_lob.createtemporary(exportClob, TRUE); -- Export metadata from an analytic workspace to a CLOB dbms_cube.export_xml(object_ids=>'GLOBAL_AW.GLOBAL11.AW', options_xml=>optionsClob, out_xml=>exportClob); -- Import metadata from the CLOB dbms_cube.import_xml(in_xml=>exportClob); -- Load and aggregate the data dbms_cube.build(script=>'GLOBAL.UNITS_CUBE, GLOBAL.PRICE_AND_COST_CUBE'); END; /
このプロシージャは、OLAPメタデータをファイルにエクスポートします。このファイルは、IMPORT_XMLプロシージャを使用して、新しいまたは既存のアナリティック・ワークスペースにインポートできます。このようにして、別のスキーマまたはデータベースにアナリティック・ワークスペースのコピーを作成できます。
このプロシージャは、Oracle OLAP 10gアナリティック・ワークスペースに含まれるCWMまたはOLAP標準形式(AWXML)メタデータをOLAP 11g形式にアップグレードするプロセスの一部としても使用できます。
構文
DBMS_CUBE.EXPORT_XML_TO_FILE
(object_ids IN VARCHAR2,
output_dirname IN VARCHAR2,
output_filename IN VARCHAR2;
DBMS_CUBE.EXPORT_XML_TO_FILE
(object_ids IN VARCHAR2,
options_dirname IN VARCHAR2,
options_filename IN VARCHAR2,
output_dirname IN VARCHAR2,
output_filename IN VARCHAR2;
パラメータ
表41-11 EXPORT_XML_TO_FILEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
次のいずれかの識別子です。
名前をカンマで区切って複数のオブジェクトを指定できます。 注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。 |
|
|
|
|
|
エクスポート・オプションのXML文書を含むファイルの名前。「エクスポート・オプション」を参照してください。 |
|
|
|
|
|
このプロシージャによって作成されるテンプレート・ファイルの名前。 |
エクスポート・オプション
エクスポート・オプションのデフォルト設定はほとんどの場合に適切であり、options_dirnameおよびoptions_filenameパラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 11gにアップグレードするときは、デフォルト設定を変更するXML文書を次のように指定する必要があります。
<?xml version="1.0"?>
<Export>
<ExportOptions>
<Option Name="SuppressNamespace" Value="True"/>
<Option Name="SuppressOwner" Value="True"/>
<Option Name="PreserveTableOwners" Value="True"/>
</ExportOptions>
</Export>
このXML文書は、手動で作成するか、またはCREATE_EXPORT_OPTIONSプロシージャを使用して作成できます。
例
次の例は、デフォルトのエクスポート設定を使用して、global.xmlという名前のXMLファイルをOLAP 11g形式で生成します。メタデータは、すべてのアナリティック・ワークスペースおよびGLOBAL_AWのCWMメタデータから導出されます。出力ファイルは、WORK_DIRデータベース・ディレクトリで生成されます。
execute dbms_cube.export_xml_to_file('GLOBAL_AW', 'WORK_DIR', 'global.xml');
次の例でも、options.xmlに設定されたエクスポート・オプションを使用して、global.xmlという名前のXMLファイルをOLAP 11g形式で生成します。メタデータは、GLOBAL_AWスキーマのGLOBALアナリティック・ワークスペースから導出されます。オプション・ファイルと出力ファイルは、どちらもWORK_DIRデータベース・ディレクトリにあります。
execute dbms_cube.export_xml_to_file('GLOBAL_AW.GLOBAL.AW', 'WORK_DIR', 'options.xml', 'WORK_DIR', 'global.xml');
このプロシージャは、XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。
構文
DBMS_CUBE.IMPORT_XML
(dirname IN VARCHAR2,
filename IN VARCHAR2 );
DBMS_CUBE.IMPORT_XML
(dirname IN VARCHAR2,
filename IN VARCHAR2,
out_xml IN/OUT CLOB );
DBMS_CUBE.IMPORT_XML
(input_dirname IN VARCHAR2,
input_filename IN VARCHAR2
options_dirname IN VARCHAR2,
options_filename IN VARCHAR2,
out_xml IN/OUT CLOB );
DBMS_CUBE.IMPORT_XML
(in_xml IN CLOB );
DBMS_CUBE.IMPORT_XML
(in_xml IN CLOB,
out_xml IN/OUT CLOB );
DBMS_CUBE.IMPORT_XML
(in_xml IN CLOB,
options_xml IN CLOB,
out_xml IN/OUT CLOB );
パラメータ
表41-12 IMPORT_XMLプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。 |
|
|
アナリティック・ワークスペースについて記述しているXML文書を含むファイル。 |
|
|
アナリティック・ワークスペースについて記述しているXML文書を含むCLOB。 |
|
|
アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。 |
|
|
アナリティック・ワークスペースについて記述しているXML文書を含むファイル。 |
|
|
インポート・オプションのファイルを含むデータベース・ディレクトリの名前(大/小文字区別)。 |
|
|
インポート・オプションのファイル。 |
|
|
インポート・オプションについて記述しているXML文書。この文書を生成するには、CREATE_IMPORT_OPTIONSプロシージャを使用します。 |
|
|
アナリティック・ワークスペースについて記述しているXML文書、またはエラーについて記述しているXML文書(検証専用)。 |
使用上の注意
XMLで、アナリティック・ワークスペース全体または1つ以上のキューブまたはディメンションの定義、変更または削除を行うことができます。キューブまたはディメンションのみを定義する場合は、既存のアナリティック・ワークスペース内で行う必要があります。
EXPORTXMLパラメータを指定したDROP_MVIEWプロシージャで生成されたXML文書を使用して、IMPORT_XMLによってアナリティック・ワークスペースを削除することもできます。
例
この例では、データベース・ディレクトリXML_DIRにあるGLOBAL.XMLという名前のファイルから、XMLテンプレートをロードします。
EXECUTE dbms_cube.import_xml('XML_DIR', 'GLOBAL.XML');
次の例では、OLAP 10gテンプレートをエクスポートし、11gにアップグレードする前にIMPORT_XMLを使用してそれを検証します。
DECLARE
exportOptClob clob;
importOptClob clob;
importClob clob;
exportClob clob;
BEGIN
-- Create a CLOB for the export options
dbms_lob.createtemporary(exportOptClob, TRUE);
dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, preserve_table_owners=>TRUE);
-- Create a CLOB for the XML template
dbms_lob.createtemporary(exportClob, TRUE);
-- Create a CLOB for import options
dbms_lob.createtemporary(importOptClob, TRUE);
dbms_cube.create_import_options(out_options_xml=>importOptClob, validate_only=>TRUE);
-- Create a CLOB for the change log
dbms_lob.createtemporary(importClob, TRUE);
-- Enable 11g clients to access 10g metadata
dbms_cube.initialize_cube_upgrade;
-- Export metadata from an analytic workspace to a CLOB
dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob);
/* Import metadata from the CLOB. No objects are committed to the database
because the validate_only parameter of CREATE_IMPORT_OPTIONS is set to
TRUE.
*/
dbms_cube.import_xml(in_xml=>exportClob, options_xml=>importOptClob, out_xml=>importClob);
-- Output the metadata changes
dbms_output.put_line('This is the validation log:');
dbms_output.put_line(importClob);
END;
/
importClobのコンテンツにXMLが有効であることが表示されます。そうでない場合、<RootCommitResult>要素にエラー・メッセージが表示されます。
This is the validation log: <?xml version="1.0" encoding="UTF-16"?> <RootCommitResult> </RootCommitResult>
10gから11gのメタデータにアップグレードするコンテキストでのIMPORT_XMLの例については、「カスタム・アップグレード」を参照してください。
このプロシージャは、Oracle OLAP 10gで作成されたアナリティック・ワークスペースをOracle OLAP 11gクライアントで使用できるように処理します。現行のスキーマ内のすべてのアナリティック・ワークスペースを処理します。10gアナリティック・ワークスペースが存在する各スキーマに対してこのプロシージャを1回実行します。
この処理手順を実行しない場合、11gクライアントは、同じ名前のディメンションまたはキューブのサブオブジェクトが存在する10gアナリティック・ワークスペースを含むデータベースには接続できません。また、一部のDBMS_CUBEプロシージャおよびファンクション(EXPORT_XMLやEXPORT_XML_TO_FILEなど)は10gメタデータに対しては機能しません。
処理後、OLAP 11gクライアントは、競合するサブオブジェクト用にINITIALIZE_CUBE_UPGRADEによって提供された代替名を使用して接続します。OLAP 10gクライアントは、継続して元の名前を使用します。
INITIALIZE_CUBE_UPGRADEは、OLAP 10gオブジェクトをOLAP 11g形式にアップグレードしません。
「OLAP 10gからOLAP 11gへのアナリティック・ワークスペースのアップグレード」を参照してください。
使用上の注意
このプロシージャは、CUBE_UPGRADE_INFOという名前の表を作成し、データを移入します。その表がすでに存在している場合は切り捨てられ、切り捨てられた表にデータが再移入されます。
10gネームスペースでは同じディメンションまたはキューブ内に同じ名前のサブオブジェクトが存在できましたが、11gネームスペースではできません。INITIALIZE_CUBE_UPGRADEが、レベル、階層およびディメンション属性などのサブオブジェクトで、名前の競合を検出すると、CUBE_UPGRADE_INFOに行を作成して、個々に新しい一意の名前を付けます。行は、名前の変更が必要ないオブジェクトにも作成される場合があり、これらの行はCONFLICT列の0またはNULL値で区別されます。ディメンションやキューブなど最上位のオブジェクトはリストされません。
OLAP 11gクライアントでOLAP 10gオブジェクトの名前をカスタマイズする場合は、SQL INSERTおよびUPDATEを使用して表を編集できます。
UPGRADE_AW、EXPORT_XMLおよびEXPORT_XML_TO_FILEプロシージャは、元の名前ではなく、表のNEW_NAME列で指定された名前を使用して、CWMまたはOLAP標準形式(AWXML)アナリティック・ワークスペースでオブジェクトを特定します。
次の表に、CUBE_UPGRADE_INFOの列を示します。
| 列 | データ・タイプ | NULL | 説明 |
|---|---|---|---|
OWNER |
VARCHAR2 |
NOT NULL |
アナリティック・ワークスペースの所有者。 |
AW |
VARCHAR2 |
NOT NULL |
アナリティック・ワークスペースの名前。 |
AWXML_ID |
VARCHAR2 |
NOT NULL |
simple_name.[subtype_name].object_typeの形式で指定した、変更が必要なオブジェクトの完全論理名。たとえば、TIME.DIMENSIONおよびPRODUCT.COLOR.ATTRIBUTEとなります。 |
NEW_NAME |
VARCHAR2 |
NOT NULL |
アップグレード後にオブジェクトがOracle 11gで持つ名前。 |
OBJECT_CLASS |
VARCHAR2 |
-- | 計算済のメジャーではDerivedMeasure、その他すべてのオブジェクト・タイプでは空。 |
CONFLICT |
NUMBER |
-- | CUBE_UPGRADE_INFOに行が追加された理由を示します。
|
例
次のコマンドは、CUBE_UPGRADE_INFO表を作成し、データを移入します。
EXECUTE dbms_cube.initialize_cube_upgrade;
この表は、OLAP 10gアナリティック・ワークスペースにMARKET_SEGMENTという名前の階層とレベルがあることを示しており、この名前は変更されます。表には計算済のメジャーの行もありますが、これらのオブジェクトは名前を変更する必要がなく、CONFLICTの値は0です。
SELECT awxml_id, new_name, conflict FROM cube_upgrade_info; AWXML_ID NEW_NAME CONFLICT ---------------------------------------- ------------------------- ---------- CUSTOMER.MARKET_SEGMENT.HIERARCHY MARKET_SEGMENT_HIERARCHY 1 CUSTOMER.MARKET_SEGMENT.LEVEL MARKET_SEGMENT_LEVEL 1 UNITS_CUBE.EXTENDED_COST.MEASURE EXTENDED_COST 0 UNITS_CUBE.EXTENDED_MARGIN.MEASURE EXTENDED_MARGIN 0 UNITS_CUBE.CHG_SALES_PP.MEASURE CHG_SALES_PP 0 UNITS_CUBE.CHG_SALES_PY.MEASURE CHG_SALES_PY 0 UNITS_CUBE.PCTCHG_SALES_PP.MEASURE PCTCHG_SALES_PP 0 UNITS_CUBE.PCTCHG_SALES_PY.MEASURE PCTCHG_SALES_PY 0 UNITS_CUBE.PRODUCT_SHARE.MEASURE PRODUCT_SHARE 0 UNITS_CUBE.CHANNEL_SHARE.MEASURE CHANNEL_SHARE 0 UNITS_CUBE.MARKET_SHARE.MEASURE MARKET_SHARE 0 UNITS_CUBE.CHG_EXTMRGN_PP.MEASURE CHG_EXTMRGN_PP 0 UNITS_CUBE.CHG_EXTMRGN_PY.MEASURE CHG_EXTMRGN_PY 0 UNITS_CUBE.PCTCHG_EXTMRGN_PP.MEASURE PCTCHG_EXTMRGN_PP 0 UNITS_CUBE.PCTCHG_EXTMRGN_PY.MEASURE PCTCHG_EXTMRGN_PY 0 UNITS_CUBE.CHG_UNITS_PP.MEASURE CHG_UNITS_PP 0 UNITS_CUBE.EXTMRGN_PER_UNIT.MEASURE EXTMRGN_PER_UNIT 0 UNITS_CUBE.SALES_YTD.MEASURE SALES_YTD 0 UNITS_CUBE.SALES_YTD_PY.MEASURE SALES_YTD_PY 0 UNITS_CUBE.PCTCHG_SALES_YTD_PY.MEASURE PCTCHG_SALES_YTD_PY 0 UNITS_CUBE.SALES_QTD.MEASURE SALES_QTD 0 UNITS_CUBE.CHG_UNITS_PY.MEASURE CHG_UNITS_PY 0
このプロシージャは、キューブ・マテリアライズド・ビューのデータをリフレッシュします。
構文
DBMS_CUBE.REFRESH_MVIEW (
mvowner IN VARCHAR2,
mvname IN VARCHAR2,
method IN VARCHAR2 DEFAULT NULL,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
parallelism IN BINARY_INTEGER DEFAULT 0,
atomic_refresh IN BOOLEAN DEFAULT FALSE,
scheduler_job IN VARCHAR2 DEFAULT NULL,
sam_parameters IN CLOB DEFAULT NULL,
nested IN BOOLEAN DEFAULT FALSE );
パラメータ
表41-13 REFRESH_MVIEWプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
キューブ・マテリアライズド・ビューの所有者。 |
|
|
キューブ・マテリアライズド・ビューの名前。 |
|
|
完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。 各キューブに順番にメソッドを指定するか、またはすべてのキューブに単一のメソッドを適用できます。指定したキューブの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのキューブに適用されます。
|
|
|
|
|
|
このジョブに割り当てる並列処理の数。
|
|
|
|
|
|
ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。 |
|
|
なし |
|
|
すべてのオブジェクトが1つのアナリティック・ワークスペースに存在する必要があります。 |
使用上の注意
REFRESH_MVIEWはmvnameをキューブ名に変更し、そのキューブ名およびすべてのパラメータをBUILDプロシージャに渡します。これによって、BUILDプロシージャを使用してキューブ・マテリアライズド・ビューをリフレッシュできます。これらのパラメータの詳細は、「BUILDプロシージャ」を参照してください。
例
次の例では、CB$FWEEK_PSCAT_SALESという名前のキューブ・マテリアライズド・ビューのリフレッシュに、デフォルトの設定を使用しています。
SET serverout ON format wrapped
EXECUTE dbms_cube.refresh_mview('SH', 'CB$FWEEK_PSCAT_SALES');
次の例では、可能な場合は高速リフレッシュを使用し、エラーが発生した後もリフレッシュを続行し、2つの並列処理を使用するようにリフレッシュ・メソッドを変更しています。
EXECUTE dbms_cube.refresh_mview('SH', 'CB$FWEEK_PSCAT_SALES', '?', TRUE, 2);
REFRESH_MVIEWは、キューブ・マテリアライズド・ビューを正常にリフレッシュした後、次のようなメッセージを戻します。
Completed refresh of cube mview "SH"."CB$FWEEK_PSCAT_SALES" at 20081114 15:04:46.370.
このプロシージャは、OLAP 10gアナリティック・ワークスペースに含まれているメタデータのコピーからOracle OLAP 11gアナリティック・ワークスペースを作成します。元のOLAP 10gアナリティック・ワークスペースは影響を受けず、OLAP 11gアナリティック・ワークスペースと同じスキーマに同時に存在できます。
CUBE_UPGRADE_INFO表が存在しない場合、UPGRADE_AWはINITIALIZE_CUBE_UPGRADEを自動的に実行します。存在する場合、UPGRADE_AWはそれを上書きしないため、表に行った変更は保存されます。
「OLAP 10gからOLAP 11gへのアナリティック・ワークスペースのアップグレード」を参照してください。
構文
DBMS_CUBE.UPGRADE_AW
(sourceaw IN VARCHAR2,
destaw IN VARCHAR2,
upgoptions IN CLOB DEFAULT NULL);
パラメータ
表41-14 UPGRADE_AWプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
10gアナリティック・ワークスペースの名前。 |
|
|
生成された11gアナリティック・ワークスペースの新しい名前。 |
|
|
次のアップグレード・オプションの1つ以上('OPTION=VALUE'という形式の文字列として)。複数のオプションはカンマで区切ります。
|
例
この例では、MY_OBJECT_MAPという名前変更表を使用してGLOBAL10というOLAP 10gアナリティック・ワークスペースをGLOBAL11というOLAP 11gアナリティック・ワークスペースにアップグレードします。
BEGIN -- Upgrade the analytic workspace dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL11', upgoptions => 'RENAME_TABLE=MY_OBJECT_MAP'); -- Load and aggregate the data dbms_cube.build(script=>'UNITS_CUBE, PRICE_AND_COST_CUBE'); END; /
このプロシージャは、結果をデータベースにコミットすることなく、XMLが有効かどうかをチェックします。アナリティック・ワークスペースは作成されません。
構文
DBMS_CUBE.VALIDATE_XML
(dirname IN VARCHAR2,
filename IN VARCHAR2 );
DBMS_CUBE.VALIDATE_XML
(in_xml IN CLOB );
使用上の注意
テンプレートは、常に、テンプレートの生成に使用されたものと同じバージョンおよびリリースのOracle Databaseにロードする必要があります。異なるリリースのソフトウェアで生成された場合、XMLが無効になる可能性があります。
例
この例は、スキーマにある問題をレポートします。
EXECUTE dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML');
BEGIN dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML'); END;
*
ERROR at line 1:
ORA-37162: OLAP error
'GLOBAL.PRICE_CUBE.$AW_ORGANIZATION': XOQ-01950: The AWCubeOrganization for
cube "GLOBAL.PRICE_CUBE" contains multiple BuildSpecifications with the same
name.
'GLOBAL.UNITS_CUBE.$AW_ORGANIZATION': XOQ-01950: The AWCubeOrganization for
cube "GLOBAL.UNITS_CUBE" contains multiple BuildSpecifications with the same
name.
XOQ-01400: invalid metadata objects
ORA-06512: at "SYS.DBMS_CUBE", line 411
ORA-06512: at "SYS.DBMS_CUBE", line 441
ORA-06512: at "SYS.DBMS_CUBE", line 501
ORA-06512: at "SYS.DBMS_CUBE", line 520
ORA-06512: at line 1
問題を修正した後は、プロシージャはエラーをレポートしません。
EXECUTE dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML');
PL/SQL procedure successfully completed.
この例では、XMLテンプレートを一時CLOBにロードして検証します。このスクリプトは、データベース・ディレクトリXML_DIRにあるGLOBAL.XMLという名前のスクリプトです。
DEFINE xml_file = 'GLOBAL.XML';
SET ECHO ON;
SET SERVEROUT ON;
DECLARE
xml_file BFILE := bfilename('XML_DIR', '&xml_file');
in_xml CLOB;
out_xml CLOB := NULL;
dest_offset INTEGER := 1;
src_offset INTEGER := 1;
lang_context INTEGER := 0;
warning INTEGER;
BEGIN
-- Setup the clob from a file
DBMS_LOB.CREATETEMPORARY(in_xml, TRUE);
DBMS_LOB.OPEN(in_xml, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.OPEN(xml_file, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADCLOBFROMFILE(in_xml, xml_file, DBMS_LOB.LOBMAXSIZE,
dest_offset, src_offset, 0, lang_context, warning);
-- Validate the xml
DBMS_CUBE.VALIDATE_XML(in_xml);
END;
/