プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

77 DBMS_HS_PARALLEL

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

この章では、次の項目について説明します。

DBMS_HS_PARALLELの使用方法

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

DBMS_HS_PARALLELサブプログラムの要約

表77-1 DBMS_HS_PARALLELパッケージのサブプログラム

サブプログラム 説明

CREATE_OR_REPLACE_VIEW


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

CREATE_TABLE_TEMPLATE


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

DROP_VIEW


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

LOAD_TABLE


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


CREATE_OR_REPLACE_VIEW

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

構文

CREATE_OR_REPLACE_VIEW (remote_table, database_link, oracle_view, parallel_degree)

パラメータ

表77-2 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です。


使用上の注意

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

    ORA-00955: name is already used by an existing object
    
  • ビューは、読取り専用ビューとして作成されます。ビューを挿入または更新しようとすると、次のOracleのエラー・メッセージが表示されます。

    ORA-01733: virtual column not allowed here
    
  • リモート表またはデータベース・リンクが存在しない場合は、次のいずれかのOracleエラー・メッセージが表示されます。

    ORA-00942: table or view does not exist
    or
    ORA-02019: connection description for remote database not found
    
  • CREATE_OR_REPLACE_VIEWプロシージャを実行するには、CREATE VIEWCREATE TABLECREATE TYPECREATE PACKAGEおよびCREATE FUNCTION権限が必要です。

  • 次のいずれかのOracleエラー・メッセージが発生した場合、Oracle初期化パラメータ・ファイルのPROCESSESおよびSESSIONSパラメータの値を増やしてください。

    ORA-12801: error signaled in parallel query server P003
    or
    ORA-00018: maximum number of session exceeded
    
  • CREATE_OR_REPLACE_VIEWプロシージャによって、いくつかの内部オブジェクトが作成されるため、DROP_VIEWプロシージャを使用してビューおよび内部オブジェクトを削除します。SQLのDROP VIEW文ではビューのみが削除され、内部オブジェクトは削除されません。

CREATE_TABLE_TEMPLATE

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

構文

CREATE_TABLE_TEMPLATE (remote_table, database_link, oracle_table, create_table_template_string)

パラメータ

表77-3 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テンプレートを示します。


DROP_VIEW

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

構文

DROP_VIEW (oracle_view)

パラメータ

表77-4 DROP_VIEWパラメータ

パラメータ 説明

oracle_view

IN VARCHAR2 NOT NULL

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


LOAD_TABLE

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

構文

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

パラメータ

表77-5 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

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


使用上の注意

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

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

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

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

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

  • 次のいずれかのOracleエラー・メッセージが発生した場合、Oracle初期化パラメータ・ファイルのPROCESSESおよびSESSIONSパラメータの値を増やしてください。

    ORA-12801: error signaled in parallel query server P003
    or
    ORA-00018: maximum number of session exceeded
    
  • 並列処理を行うためには、次のいずれかが必要です。

    • リモート表がレンジ・パーティション化されている。

    • 数値列のヒストグラム情報が利用可能である。

    • 数値の索引または主キーが存在する。

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