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
またはREAD
権限
キューブ・マテリアライズド・ビューがサポートされているアナリティック・ワークスペース(AW$
name
)に対する
SELECTまたはREAD
権限
キューブに対するSELECT
またはREAD
権限
キューブのディメンションに対するSELECT
またはREAD
権限
キューブ・マテリアライズド・ビューに対してではなく、キューブ・マテリアライズド・ビューをサポート
しているデータベース・オブジェクトに対するSELECT
またはREAD権限が必要なことに注意してください。
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 20130212 08:42:58.0 03. Created cube organized materialized view "CB$CAL_MONTH_SALES" for rewrite at 200 130212 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
パラメータを使用することもできます。このパラメータによってソース・マテリアライズド・ビューでのクエリー・リライトが無効になります(表42-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 20130212 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 20130212 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
階層内のレベルに対する数値属性
Oracle OLAPメタデータはOLAP 11gとOLAP 12cで同じなので、OLAP 11gアナリティック・ワークスペースをOLAP 12cにアップグレードする必要はありません。このトピックでは、Oracle OLAP 10gアナリティック・ワークスペースをOLAP 12cにアップグレードする方法を説明します。
OLAP 10gアナリティック・ワークスペースをOLAP 12cにアップグレードするには、OLAP 10gオブジェクトをXMLテンプレートとして保存し、そのXMLを別のスキーマにインポートします。元のアナリティック・ワークスペースにはそのままアクセス可能で、アップグレード・プロセスによって変更されません。
ヒント: アップグレードの実行には、Analytic Workspace Managerを使用することをお薦めします。『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
関連項目: Oracle Databaseのアップグレードについては、『Oracle Databaseアップグレード・ガイド』を参照してください。 |
DBMS_CUBE
にあるこれらのサブプログラムは、アップグレード・プロセスをサポートします。
前提条件は次のとおりです。
OLAP 10gアナリティック・ワークスペースでは、OLAP標準形式のメタデータを使用できます。
OLAP 10gアナリティック・ワークスペースでのカスタマイズはXMLテンプレートにエクスポートされない場合があります。OLAP 12cでこれらを再作成する必要があります。
元のリレーショナル・ソース・データは、新しいアナリティック・ワークスペースにロードするために使用できる必要があります。データが別のスキーマにある場合、または表の名前が異なる場合は、アップグレード後にディメンション・オブジェクトを新しいリレーショナル・ソースに再マップする必要があります。
OLAP 12cアナリティック・ワークスペースは、OLAP 10gアナリティック・ワークスペースと同じスキーマに作成できます。ただし、別のスキーマに作成する必要がある場合は、次の権限を持つ新しいユーザーを作成します。
OLAP 10g
アナリティック・ワークスペース(GRANT SELECT ON
schema.AW$
analytic_workspace)に対する
SELECTまたはREAD
権限。
OLAP 10g
アナリティック・ワークスペースのソース・データを含むすべてのデータベース表とビューに対するSELECT
またはREAD権限。
OLAP管理者の適切な権限。
Oracle 10gユーザーと同じデフォルトの表領域。
『Oracle OLAPユーザーズ・ガイド』を参照してください。
OLAP 10gとOLAP 12cではネームスペースが異なります。正常にアップグレードするには、12cのネーミング規則で複数回使用されている10gのオブジェクト名を特定し、それらに一意の名前を指定する必要があります。
Oracle 12cのOLAPオブジェクト名の一意性は、次のネームスペースによって制御されます。
スキーマ: キューブ、ディメンションおよびメジャー・フォルダの名前はスキーマ内で一意である必要があります。これらは、表、ビュー、索引、リレーショナル・ディメンションまたはその他の優れたオブジェクトの名前とは競合できません。ただし、これらのOLAP 12cオブジェクト名と10gオブジェクト名は、異なるネームスペースに存在するため、区別する必要はありません。
キューブ: メジャーの名前はキューブ内で一意である必要があります。
ディメンション: 階層、レベルおよび属性の名前はディメンション内で一意である必要があります。たとえば、ディメンション内に、Customersという階層とCustomersというレベルが存在することはできません。
初期化表および名前変更表を使用して、アップグレードした12cアナリティック・ワークスペース内のオブジェクトの名前を変更できます。
INITIALIZE_CUBE_UPGRADE
プロシージャは、OLAP 12cネーミング規則での曖昧な名前を識別します。たとえば、10gディメンションには同じ名前の階層とレベルが含まれている場合があります。12cでは、同じ12cネームスペースに階層とレベルが存在するために名前が一意ではなくなり、12cクライアントは、階層とレベルを名前で区別することはできません。
INITIALIZE_CUBE_UPGRADE
は、CUBE_UPGRADE_INFO
という表を作成してこれらのレベル、階層および属性に一意の名前を移入します。12cクライアントは、表に移入された一意の名前を使用して、OLAP 12cのメタデータを参照できます。10gのメタデータに曖昧な名前が含まれていると、OLAP 12c
クライアントをアナリティック・ワークスペースに連結したり、CUBE_UPGRADE_INFO表なしでアップグレードを実行したりすることはできません。
CUBE_UPGRADE_INFO
を編集して、デフォルトの一意の名前を選択した名前に変更できます。また、行を追加して他のオブジェクトの名前を変更することもできます。12cクライアントの使用時に、新しいオブジェクト名が表示されます。10gクライアントの使用時には、元の名前が表示されます。ただし、この表はINITIALIZE_CUBE_UPGRADE
プロシージャによって上書きされるため、カスタマイズした内容を名前変更表に入力する必要がある場合があります。
OLAP 10gからのアップグレード時には、CUBE_UPGRADE_INFO
内の一意のオブジェクト名が新しいアナリティック・ワークスペース内の12cオブジェクトの名前として使用されます。ただし、INITIALIZE_CUBE_UPGRADE
は、キューブ、ディメンションおよびメジャー・フォルダに一意の名前を自動的には指定しません。アップグレードを完了するには、12cネームスペース内でこれらのオブジェクトの名前が一意であることを確認する必要があります。CUBE_UPGRADE_INFO
表または名前変更表でこれらのオブジェクトに新しい名前を指定できます。
OLAP 12cクライアントは、OLAP 10g
アナリティック・ワークスペースと同じスキーマに存在する場合、自動的にCUBE_UPGRADE_INFOを使用します。
OLAP 12cアナリティック・ワークスペース用の新しいオブジェクト名を含む名前変更表を作成できます。その後、名前変更表をCREATE_IMPORT_OPTIONS
およびUPGRADE_AW
プロシージャで使用できます。
同じスキーマ内でアップグレードする場合は、12cアナリティック・ワークスペース用に一意の名前を指定する必要があります。UPGRADE_AW
プロシージャによってこのためのパラメータが提供されますが、提供されない場合は、名前変更表に新しい名前を指定する必要があります。12cキューブは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', 'GLOBAL12', '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 12cアナリティック・ワークスペースが作成されます。
Oracle OLAP 10gアナリティック・ワークスペースのシンプル・アップグレードを実行するには、次の手順を実行します。
SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 12cアナリティック・ワークスペースのスキーマ所有者としてOracle Database 12cに接続します。
12cアナリティック・ワークスペース内のオブジェクトの名前を変更するために、「名前変更表」の説明に従って名前変更表を作成します。 (オプション)
「UPGRADE_AWプロシージャ」の説明に従ってアップグレードを実行します。
DBMS_CUBE.BUILD
プロシージャを使用してデータをキューブにロードします。
例42-1 GLOBALアナリティック・ワークスペースへのシンプル・アップグレードの実行
この例では、GLOBAL10というOLAP 10g
アナリティック・ワークスペースからGLOBAL12というOLAP 12c
アナリティック・ワークスペースを作成します。GLOBAL10
には同じスキーマ内のキューブ、ディメンション、メジャー・フォルダまたは表の名前の競合は存在しないため、この例では名前変更表は必要ありません。
BEGIN -- Upgrade the analytic workspace dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL12'); -- Load and aggregate the data dbms_cube.build(script => 'UNITS_CUBE, PRICE_AND_COST_CUBE'); END; /
カスタム・アップグレードでは、エクスポートおよびインポートのオプションを設定できます。
Oracle OLAP 10gアナリティック・ワークスペースのカスタム・アップグレードを実行するには、次の手順を実行します。
SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 12cアナリティック・ワークスペースのスキーマ所有者としてOracle Database 12cに接続します。
「初期化表」の説明に従って、初期化表を生成します。新しいデフォルトのオブジェクト名を確認し、必要に応じて変更します。
「名前変更表」の説明に従って、名前変更表を作成します。同じスキーマ内でアップグレードする場合は、名前変更表を使用して、12cアナリティック・ワークスペース用に一意の名前を指定する必要があります。そうでない場合、名前変更表は、アナリティック・ワークスペースのキューブ、ディメンション、メジャー・フォルダ間またはそれらの名前と宛先スキーマの既存のキューブ、ディメンション、メジャー・フォルダ、表間で名前が複製されたときにのみ必要となります。
次を行うSQLスクリプトを作成します。
「CREATE_EXPORT_OPTIONSプロシージャ」の説明に従って、エクスポート・オプション用のXML文書を作成します。アップグレードを実行するには、SUPPRESS_NAMESPACE
オプションをTRUE
に設定する必要があります。
「CREATE_IMPORT_OPTIONSプロシージャ」の説明に従って、インポート・オプション用のXML文書を作成します。
「EXPORT_XMLプロシージャ」の説明に従って、OLAP 12c形式でXMLテンプレートを作成します。
「IMPORT_XMLプロシージャ」の説明に従って、XMLテンプレートからOLAP 12cアナリティック・ワークスペースを作成します。
「BUILDプロシージャ」の説明に従って、新しいアナリティック・ワークスペースのデータをロードして集計します。
例42-2 GLOBALアナリティック・ワークスペースへのカスタム・アップグレードの実行
この例では、GLOBAL10
アナリティック・ワークスペースのOLAP 10gメタデータをGLOBAL_AWスキーマ内のOLAP 12c
メタデータにアップグレードします。
名前変更表によってアナリティック・ワークスペースの新しい名前が提供されます。名前変更表は、次のコマンドで定義されます。
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', 'GLOBAL12', '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; /
表42-1 DBMS_CUBEサブプログラム
サブプログラム | 説明 |
---|---|
|
データを1つ以上のキューブおよびディメンションにロードし、問合せ用のデータを準備します。 |
|
EXPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。 |
|
IMPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。 |
|
リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。 |
|
リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューのXMLテンプレートを作成します。 |
|
キューブ・マテリアライズド・ビューを削除します。 |
|
アナリティック・ワークスペースのXMLをCLOBにエクスポートします。 |
|
アナリティック・ワークスペースのXMLをファイルにエクスポートします。 |
|
XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。 |
|
名前が競合しているOracle OLAP 10gオブジェクトを処理して、Oracle 12cクライアントがそれらにアクセスできるようにします。 |
|
キューブ・マテリアライズド・ビューをリフレッシュします。 |
|
アナリティック・ワークスペースをOracle OLAP 10gから12cにアップグレードします。 |
|
結果をデータベースにコミットしないで、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'
パラメータ
表42-2 BUILDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
キューブおよびディメンションのリストと作成オプション(「SCRIPTパラメータ」を参照)。 |
|
完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。 各キューブおよびディメンションに順番にメソッドを指定するか、またはすべてのキューブおよびディメンションに単一のメソッドを適用できます。指定したオブジェクトの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのオブジェクトに適用されます。
詳細は、「使用上の注意」を参照してください。 メソッドはディメンションには適用されません。 |
|
|
|
このジョブに割り当てられた並列処理の数(「使用上の注意」を参照)。 |
|
|
|
|
|
|
|
ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。 |
|
作成に対する一意の名前。 |
|
すべてのオブジェクトが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 | RETAIN] [PRUNE | PARALLEL | SERIAL] [WHERE
condition]
データをディメンションまたはキューブにロードします。
WHERE
は、condition
に一致する、マップされたリレーショナル表内の値にロードを制限します。
condition
は、マップされた表の列に基づく有効な述語です。詳細は、「例」を参照してください。
次のオプションの引数は、ディメンションのみに適用されます。
SYNCH
は、ディメンション・キーをリレーショナル・データ・ソースと一致させます。(デフォルト)。
NO SYNCH
は、新規ディメンション・キーをロードしますが、古いキーは削除しません。
ディメンション・キーの親がリレーショナル・データ・ソースで変更された場合、このオプションにより、アナリティック・ワークスペースの親子関係を変更するロードを実行できます。
RETAIN
は、新規ディメンション・キーをロードしますが、古いキーは削除しません。
このオプションでは、ディメンション・キーの親を変更できません。親が変更された場合、そのレコードがロードで拒否されます。ログが有効な場合は、拒否レコード・ログにエラーが生成されます。
次のオプションの引数は、キューブのみに適用されます。
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
は、集計前に各データ値に式の値を追加します。
表42-3 集計演算子
演算子 | オプション | 説明 |
---|---|---|
|
|
データ値を追加し、その合計を追加したデータ値の数で割ります。 |
|
|
最初の実際のデータ値。 |
|
|
データ値を追加し、その合計をディメンション階層の子の数で割ります。非NAの子のみをカウントするAVERAGEとは異なり、HAVERAGEでは、各子が値を持っているかどうかに関係なく、1つの親の論理的な子がすべてカウントされます。 |
|
|
階層の最初のデータ値(値がNAの場合でも)。 |
|
|
階層の最後のデータ値(値がNAの場合でも)。 |
|
|
最後の実際のデータ値。 |
|
|
各親の子の中で最大のデータ値。 |
|
|
各親の子の中で最小のデータ値。 |
|
オプションなし |
1つまたは複数のディメンションの値を集計しないでください。すべての集計値を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つ以上のセルに値を割り当てます。構文は次のとおりです。
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);
パラメータ
表42-4 CREATE_EXPORT_OPTIONSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
EXPORT_XMLまたはEXPORT_XML_TO_FILEによって生成されたXML文書がインポートされるOracle Databaseのバージョンを指定します。12.1、12.1.0.1.0などの2桁から5桁の数字を指定できます。このパラメータは、デフォルトでは現行のデータベース・バージョンになるため、通常は省略できます。 |
|
XML要素での所有者属性およびオブジェクト名での所有者修飾子の使用を制御します。XMLから所有者を削除するには |
|
XML要素でのネームスペース属性およびオブジェクト名でのネームスペース修飾子の使用を制御します。XMLからネームスペースを削除するには ネームスペースによって、Oracle 10gで作成されたオブジェクトをOracle 12cで作成されたオブジェクトと共存させることができます。ネームスペースの設定または変更はできません。 |
|
UNITS_HISTORY_FACTのかわりにGLOBAL.UNITS_HISTORY_FACTなど、マッピング要素で表の名前を修飾するときに所有者の使用を制御します。表の所有者を保持するには |
|
エクスポートされたオブジェクトの記述を上書きする、オブジェクトの12c 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="12.1.0.1"> <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="12.1.0.1">'); 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 Oracle Database 12c Release 1 (12.1) 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="12.1.0.1"> <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);
パラメータ
表42-5 CREATE_IMPORT_OPTIONSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
インポートしたオブジェクトの新しい名前を識別する、[ |
例
この例では、検証のみおよび名前変更表を指定します。インポートで使用されるインポート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;
パラメータ
表42-6 CREATE_MVIEWファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
リレーショナル・マテリアライズド・ビューの所有者。 |
|
リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。 表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。 |
|
'parameter1=value1, parameter2=value2,...'形式のパラメータ。「SQL集計管理パラメータ」を参照してください。 |
SQL集計管理パラメータ
CREATE_MVIEW
およびDERIVE_FROM_MVIEW
ファンクションでは、表42-7に示すSQL集計管理(SAM)パラメータが使用されます。一部のパラメータでは、高度な分析を行うキューブの開発がサポートされています。他のパラメータでは、Javaアプリケーションの開発がサポートされています。デフォルト設定は、リレーショナル・マテリアライズド・ビューにかわって置き換えられたキューブ・マテリアライズド・ビューに適した設定になっています。
表42-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;
パラメータ
表42-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 20130213 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;
パラメータ
表42-10 EXPORT_XMLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
次のいずれかの識別子です。
名前をカンマで区切って複数のオブジェクトを指定できます。 注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。 |
|
|
|
エクスポート・オプションのXML文書を含むファイル。 |
|
エクスポート・オプションのXML文書を含むCLOB変数。この文書を生成するには、CREATE_EXPORT_OPTIONSプロシージャを使用します。 |
|
|
エクスポート・オプション
エクスポート・オプションのデフォルト設定は多くの場合適切であるため、options_xml
またはoptions_dirname
およびoptions_filename
パラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 12cにアップグレードするときは、デフォルト設定を変更する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
の使用例については、「10gアナリティック・ワークスペースのアップグレード」を参照してください。
次のPL/SQLスクリプトは、GLOBAL12というOLAP 12c
アナリティック・ワークスペースを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.GLOBAL12.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アナリティック・ワークスペースに含まれるOLAP標準形式メタデータをOLAP 12c形式にアップグレードするプロセスの一部としても使用できます。
構文
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;
パラメータ
表42-11 EXPORT_XML_TO_FILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
次のいずれかの識別子です。
名前をカンマで区切って複数のオブジェクトを指定できます。 注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。 |
|
|
|
エクスポート・オプションのXML文書を含むファイルの名前。「エクスポート・オプション」を参照してください。 |
|
|
|
このプロシージャによって作成されるテンプレート・ファイルの名前。 |
エクスポート・オプション
エクスポート・オプションのデフォルト設定はほとんどの場合に適切であり、options_dirname
およびoptions_filename
パラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 12cにアップグレードするときは、デフォルト設定を変更するXML文書を次のように指定する必要があります。
<?xml version="2.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 12c形式で生成します。メタデータは、すべてのアナリティック・ワークスペースおよびGLOBAL_AW
のCWMメタデータから導出されます。出力ファイルは、WORK_DIR
データベース・ディレクトリで生成されます。
execute dbms_cube.export_xml_to_file('GLOBAL_AW', 'WORK_DIR', 'global.xml');
次の例でも、options.xmlに設定されたエクスポート・オプションを使用して、global.xmlという名前のXMLファイルをOLAP 12c形式で生成します。メタデータは、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 );
パラメータ
表42-12 IMPORT_XMLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。 |
|
アナリティック・ワークスペースについて記述しているXML文書を含むファイル。 |
|
アナリティック・ワークスペースについて記述しているXML文書を含むCLOB。 |
|
アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。 |
|
アナリティック・ワークスペースについて記述しているXML文書を含むファイル。 |
|
インポート・オプションのファイルを含むデータベース・ディレクトリの名前(大/小文字区別)。 |
|
インポート・オプションのファイル。 |
|
インポート・オプションについて記述しているXML文書。この文書を生成するには、CREATE_IMPORT_OPTIONSプロシージャを使用します。 |
|
アナリティック・ワークスペースについて記述しているXML文書、またはエラーについて記述しているXML文書(検証専用)。 |
使用上の注意
XMLで、アナリティック・ワークスペース全体または1つ以上のキューブまたはディメンションの定義、変更または削除を行うことができます。キューブまたはディメンションのみを定義する場合は、既存のアナリティック・ワークスペース内で行う必要があります。
EXPORTXML
パラメータを指定したDROP_MVIEW
プロシージャで生成されたXML文書を使用して、IMPORT_XML
によってアナリティック・ワークスペースを削除することもできます。
「10gアナリティック・ワークスペースのアップグレード」を参照してください。
例
この例では、データベース・ディレクトリXML_DIR
にあるGLOBAL.XML
という名前のファイルから、XMLテンプレートをロードします。
EXECUTE dbms_cube.import_xml('XML_DIR', 'GLOBAL.XML');
次の例では、OLAP 10gテンプレートをエクスポートし、12c
にアップグレードする前に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 Oracle Database 12c Release 1 (12.1) 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
から12cのメタデータにアップグレードするコンテキストでのIMPORT_XMLの例については、「カスタム・アップグレード」を参照してください。
このプロシージャは、Oracle OLAP 10gで作成されたアナリティック・ワークスペースをOracle OLAP 12cクライアントで使用できるように処理します。現行のスキーマ内のすべてのアナリティック・ワークスペースを処理します。10gアナリティック・ワークスペースが存在する各スキーマに対してこのプロシージャを1回実行します。
この処理手順を実行しない場合、12cクライアントは、同じ名前のディメンションまたはキューブのサブオブジェクトが存在する10gアナリティック・ワークスペースを含むデータベースには接続できません。また、一部のDBMS_CUBE
プロシージャおよびファンクション(EXPORT_XML
やEXPORT_XML_TO_FILE
など)は10gメタデータに対しては機能しません。
処理後、OLAP 12cクライアントは、競合するサブオブジェクト用にINITIALIZE_CUBE_UPGRADE
によって提供された代替名を使用して接続します。OLAP 10gクライアントは、継続して元の名前を使用します。
INITIALIZE_CUBE_UPGRADE
は、OLAP 10gオブジェクトをOLAP 12c形式にアップグレードしません。
「10gアナリティック・ワークスペースのアップグレード」を参照してください。
使用上の注意
このプロシージャは、CUBE_UPGRADE_INFO
という名前の表を作成し、データを移入します。その表がすでに存在している場合は切り捨てられ、切り捨てられた表にデータが再移入されます。
10gネームスペースでは同じディメンションまたはキューブ内に同じ名前のサブオブジェクトが存在できましたが、12cネームスペースではできません。INITIALIZE_CUBE_UPGRADE
が、レベル、階層およびディメンション属性などのサブオブジェクトで、名前の競合を検出すると、CUBE_UPGRADE_INFO
に行を作成して、個々に新しい一意の名前を付けます。行は、名前の変更が必要ないオブジェクトにも作成される場合があり、これらの行はCONFLICT
列の0またはNULL値で区別されます。ディメンションやキューブなど最上位のオブジェクトはリストされません。
OLAP 12c
クライアントで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 12cで持つ名前。 |
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 );
パラメータ
表42-13 REFRESH_MVIEWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
キューブ・マテリアライズド・ビューの所有者。 |
|
キューブ・マテリアライズド・ビューの名前。 |
|
完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。 各キューブに順番にメソッドを指定するか、またはすべてのキューブに単一のメソッドを適用できます。指定したキューブの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのキューブに適用されます。
BUILDプロシージャの詳細は、 |
|
|
|
このジョブに割り当てる並列処理の数。 BUILDプロシージャの詳細は、 |
|
|
|
ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。 |
|
なし |
|
すべてのオブジェクトが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 20130212 15:04:46.370.
このプロシージャは、OLAP 10gアナリティック・ワークスペースに含まれているメタデータのコピーからOracle OLAP 12cアナリティック・ワークスペースを作成します。元のOLAP 10gアナリティック・ワークスペースは影響を受けず、OLAP 12cアナリティック・ワークスペースと同じスキーマに同時に存在できます。
CUBE_UPGRADE_INFO
表が存在しない場合、UPGRADE_AW
はINITIALIZE_CUBE_UPGRADE
を自動的に実行します。存在する場合、UPGRADE_AW
はそれを上書きしないため、表に行った変更は保存されます。
「10gアナリティック・ワークスペースのアップグレード」を参照してください。
構文
DBMS_CUBE.UPGRADE_AW (sourceaw IN VARCHAR2, destaw IN VARCHAR2, upgoptions IN CLOB DEFAULT NULL);
パラメータ
表42-14 UPGRADE_AWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
10gアナリティック・ワークスペースの名前。 |
|
生成された12cアナリティック・ワークスペースの新しい名前。 |
|
次のアップグレード・オプションの1つ以上('OPTION=VALUE'という形式の文字列として)。複数のオプションはカンマで区切ります。
|
例
この例では、MY_OBJECT_MAPという名前変更表を使用してGLOBAL10
というOLAP 10gアナリティック・ワークスペースをGLOBAL12
というOLAP 12c
アナリティック・ワークスペースにアップグレードします。
BEGIN -- Upgrade the analytic workspace dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL12', 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; /