ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

61 DBMS_HS_PARALLEL

DBMS_HS_PARALLEL PL/SQLパッケージを使用すると、異種ターゲットにアクセスする場合に並列処理が可能となります。このパッケージは、大規模な外部表からデータを取り出すときのパフォーマンスを改善するように設計されています。

DBMS_HS_PARALLELは、実行者の権限を使用するCURRENT_USERの認証IDでコンパイルされます。つまり、このパッケージのすべてのプロシージャは、コール・ユーザーの権限で実行されます。

DBMS_HS_PARALLELパッケージのプロシージャは、次のとおりです。


LOAD_TABLE

このプロシージャは、リモートの表からローカルのOracle表にデータを並列にロードします。ローカルのOracle表が存在しない場合は、自動的に作成されます。

次に、LOAD_TABLEの構文を示します。

LOAD_TABLE (remote_table, database_link, oracle_table, truncate, parallel_degree, row_count)

次の表に、LOAD_TABLEのパラメータを示します。

表61-1 LOAD_TABLEのパラメータ

パラメータ 説明

remote_table

IN VARCHAR2 NOT NULL

リモート・データベース表の名前。 [remote_schema_name.]remote_table_nameの形式で指定します。

database_link

IN VARCHAR2 NOT NULL

リモート・データベース・リンクの名前。コールは、異機種間サービスのデータベース・リンクにのみ適用できます。

oracle_table

IN VARCHAR2

データのロード先となるローカルOracle表の名前。[schema_name.]oracle_table_nameの形式で指定します。デフォルトのスキーマ名は現行のユーザーです。oracle_tableパラメータが指定されない場合、リモート表の名前がローカルのOracle名として使用されます。

truncate

IN BOOLEAN

Oracle表を、データのロード前に切り捨てるかどうかを決定します。値は、TRUEまたはFALSEのいずれかです。デフォルト値はTRUEです。この場合は最初にOracle表が切り捨てられます。FALSEに設定すると、データがロードされるまでOracle表は切り捨てられません。

parallel_degree

IN NUMBER

操作の並列処理数は、レンジ・パーティション数(該当する場合)またはCPU数に基づいて計算されます。値の範囲は、2から16です。

row_count

OUT NUMBER

表のロード操作で追加された行数を示します。



LOAD_TABLEの使用方法

このプロシージャでは、リモート表のデータがローカルのOracle表へロードされるだけです。キー、索引、制約またはトリガーなどの他の依存関係は作成されません。パフォーマンスが大幅に向上するため、表データをロードした後にこれらの依存関係を作成することをお薦めします。依存関係の作成をデータのロード前にするか後にするかは、リモート表のデータおよび依存関係に関する情報に基づいて決定する必要があります。

ローカル表が存在しない場合は、LOAD_TABLEプロシージャによって、リモート表と完全に列が一致する単純な(パーティション化されていない)ローカル表が作成され、その後データがローカル表に挿入されます。

リモート表またはデータベース・リンクが存在しない場合は、エラー・メッセージが戻されます。

ローカル表がリモート表と互換性がない場合は、エラー・メッセージが戻されます。

LOAD_TABLEプロシージャを実行するには、CREATE TABLECREATE TYPECREATE PACKAGEおよびCREATE FUNCTION権限が必要です。

Oracleのエラー・メッセージ「ORA-12801: パラレル問合せサーバーP003にエラー・シグナルが発生しました」または「ORA-00018: 最大セッション数を超えました」のいずれかが表示される場合は、Oracleの初期化パラメータ・ファイル内でPROCESSESおよびSESSIONSパラメータの値を増やします。

並列処理を行うためには、次のいずれかが必要です。

ローカル表を削除するには、DROP TABLE SQL文を使用します。


CREATE_TABLE_TEMPLATE

このプロシージャは、リモート表から収集した情報に基づいてCREATE TABLEテンプレートを作成します。この情報を使用すると、最適なOracleのCREATE TABLE句を追加できます。

次に、CREATE_TABLE_TEMPLATEの構文を示します。

CREATE_TABLE_TEMPLATE (remote_table, database_link, oracle_table, create_table_template_string)

次の表に、CREATE_TABLE_TEMPLATEのパラメータを示します。

表61-2 CREATE_TABLE_TEMPLATEのパラメータ

パラメータ 説明

remote_table

IN VARCHAR2 NOT NULL

リモート・データベース表の名前。[remote_schema_name.]remote_table_nameの形式で指定します。

database_link

IN VARCHAR2 NOT NULL

リモート・データベース・リンクの名前。コールは、異機種間サービスのデータベース・リンクにのみ適用できます。

oracle_table

IN VARCHAR2

データのロード先となるローカルOracle表の名前。[schema_name.]oracle_table_nameの形式で指定します。デフォルトのスキーマ名は現行のユーザーです。oracle_tableパラメータが指定されない場合、リモート表の名前がローカルのOracle名として使用されます。

create_table_template_string

OUT VARCHAR2

プロシージャが戻されたときにOracle CREATE TABLE SQLテンプレートを示します。



CREATE_OR_REPLACE_VIEW

このプロシージャは、リモート表からデータを並列に取り出すために参照される読取り専用ビューを作成(または置換)します。

次に、CREATE_OR_REPLACE_VIEWの構文を示します。

CREATE_OR_REPLACE_VIEW (remote_table, database_link, oracle_view, parallel_degree)

次の表に、CREATE_OR_REPLACE_VIEWのパラメータを示します。

表61-3 CREATE_OR_REPLACE_VIEWパラメータ

パラメータ 説明

remote_table

IN VARCHAR2 NOT NULL

リモート・データベース表の名前。[remote_schema_name.]remote_table_nameの形式で指定します。

database_link

IN VARCHAR2 NOT NULL

リモート・データベース・リンクの名前。コールは、異機種間サービスのデータベース・リンクにのみ適用できます。

oracle_view

IN VARCHAR2

Oracleビューの名前。 [schema_name.]oracle_view_nameの形式で指定します。デフォルトのスキーマ名は現行のユーザーです。 oracle_viewパラメータが指定されない場合は、リモート表の名前がビュー名として使用されます。

parallel_degree

IN NUMBER

操作の並列処理数は、レンジ・パーティション数(該当する場合)またはCPU数に基づいて計算されます。値の範囲は、2から16です。



CREATE_OR_REPLACE_VIEWの使用方法

指定したOracleビューが作成されます。その後のこのビューへの参照では、内部のデータベース・オブジェクトが使用され、リモートのOracle以外の表データが並列に取り出されます。Oracleビューがすでに存在する場合は、Oracleのエラー・メッセージ「ORA-00955: すでに使用されているオブジェクト名です。」が表示されます。

ビューは、読取り専用ビューとして作成されます。ビューを挿入または更新しようとすると、Oracleのエラー・メッセージ「ORA-01733: ここでは仮想列は使用できません。」が表示されます。

リモート表またはデータベース・リンクが存在しない場合は、Oracleのエラー・メッセージ「ORA-00942: 表またはビューが存在しません。」または「ORA-02019: 指定されたリモート・データベースは存在しません。」が表示されます。

CREATE_OR_REPLACE_VIEWプロシージャを実行するには、CREATE VIEWCREATE TABLECREATE TYPECREATE PACKAGEおよびCREATE FUNCTION権限が必要です。

Oracleのエラー・メッセージ「ORA-12801: パラレル問合せサーバーP003にエラー・シグナルが発生しました」または「ORA-00018: 最大セッション数を超えました」のいずれかが表示される場合は、Oracleの初期化パラメータ・ファイル内でPROCESSESおよびSESSIONSパラメータの値を増やします。

CREATE_OR_REPLACE_VIEWプロシージャによって、いくつかの内部オブジェクトが作成されるため、DROP_VIEWプロシージャを使用してビューおよび内部オブジェクトを削除します。SQLのDROP VIEW文ではビューのみが削除され、内部オブジェクトは削除されません。


DROP_VIEW

このプロシージャは、CREATE_OR_REPLACE_VIEWプロシージャによって作成されたビューおよび内部オブジェクトを削除します。 CREATE_OR_REPLACE_VIEWプロシージャによってビューが作成されていない場合は、エラー・メッセージが戻されます。

次に、DROP_VIEWの構文を示します。

DROP_VIEW (oracle_view)

次の表に、DROP_VIEWのパラメータを示します。

表61-4 DROP_VIEWパラメータ

パラメータ 説明

oracle_view

IN VARCHAR2 NOT NULL

CREATE_OR_REPLACE_VIEWプロシージャによって作成されたOracleビューの名前。 CREATE_OR_REPLACE_VIEWプロシージャによってビューが作成されていない場合は、エラーが戻されます。