機械翻訳について

118 DBMS_LIBCACHE

このDBMS_LIBCACHEパッケージは、リモート・インスタンスからSQLおよびPL/SQLを抽出し、このSQLを実行せずにローカルでコンパイルして、Oracleインスタンスにライブラリ・キャッシュを作成する1つのサブプログラムから構成されています。 インスタンスのキャッシュをコンパイルするのは、アプリケーションがフェイルオーバーまたはスイッチオーバーの前に実行されるのに必要な情報を準備するためです。

この章のトピックは、次のとおりです:

118.1 DBMS_LIBCACHE概要

共有カーソルのコンパイルは、オープン、解析およびバインド操作で構成され、これに加えて最初の実行時にはタイプ・チェックおよび実行計画ファンクションが実行されます。 これらのステップはすべて、SELECT文のDBMS_LIBCACHEパッケージにより事前に実行されます。

オープンおよび解析ファンクションは、PL/SQLおよびDMLに対して事前に実行されます。 PL/SQLの場合、解析フェーズを実行すると、MCODE以外のすべてのライブラリ・キャッシュ・ヒープのロードに影響を与えます。

118.2 DBMS_LIBCACHEのセキュリティ・モデル

DBMS_LIBCACHEを実行するには、SQL文の場合と同じオブジェクトに直接アクセスする必要があります。 そのためには、リモート・システム上で元のシステムと同じユーザーIDを利用することをお薦めします。

複数のスキーマ・ユーザーが存在する場合は、個々のユーザーに対しDBMS_LIBCACHEをコールしてください。

また、DBMS_LIBCACHEは、一般的なユーザーPARSERを使用してコールすることも可能です。 ただし、このユーザーのロールに付与されたアクセス権ではオブジェクトを使用するSQLを解析できません。 これは、標準のPL/SQLセキュリティの制限です。

118.3 DBMS_LIBCACHEサブプログラムの要約

DBMS_LIBCACHEパッケージには、COMPILE_FROM_REMOTEプロシージャのサブプログラムが含まれます。

表118-1 DBMS_LIBCACHEパッケージ・サブプログラム

サブプログラム 説明

COMPILE_FROM_REMOTEプロシージャ

ソース・インスタンスからバッチでSQLを抽出し、ターゲット・インスタンスでSQLをコンパイルします。

118.3.1 COMPILE_FROM_REMOTEプロシージャ

このプロシージャは、ソース・インスタンスからバッチでSQLを抽出し、ターゲット・インスタンスでSQLをコンパイルします。

構文

DBMS_LIBCACHE.COMPILE_FROM_REMOTE ( 
   p_db_link                 IN     dbms_libcache$def.db_link%type, 
   p_username                IN     VARCHAR2 default null,
   p_threshold_executions    IN     NATURAL  default 3,
   p_threshold_sharable_mem  IN     NATURAL  default 1000,
   p_parallel_degree         IN     NATURAL  default 1);

パラメータ

表118-2 COMPILE_FROM_REMOTEプロシージャのパラメータ

パラメータ 説明

p_db_link

ソース名へのデータベース・リンク(必須)。 SQL文の抽出に使用されるインスタンスを指すデータベース・リンク。 ユーザーはソース・インスタンスでロールSELECT_ON_CATALOGを持つ必要があります。 セキュリティ向上のため、接続にパスワード・ファイルまたはLDAP認証を使用できます。 データベース・リンクはdbms_libcache$def.ACCESS_METHOD = DB_LINK_METHOD を使用するリリースの場合にのみ必須です。

p_instance_name

(将来の使用のために確保)。 SQL文の抽出に使用されるインスタンスの名前。 インスタンス名はローカル・インスタンスを除き、すべてのインスタンスに対して一意である必要があります。 大文字と小文字は区別されません。

p_username

ソース・ユーザー名(デフォルトはすべてのユーザー)。 SQL文の抽出に使用されるusernameの名前。 usernameはオプションのパラメータで、ユーザーIDがソース・インスタンスのユーザーIDと同じであると確実に解析されるようにするために使用されます。 ユーザーが単一のuser_id、たとえばAPPSとして接続するアプリケーションの場合、解析され、共有プールに記録されるuser_idAPPSです。 APPSによって解析されるSQL文のみを選択する場合は、フィールドに文字列'APPS'と入力します。 バッチで実行する文を選択する場合も、GLなどのスキーマ所有者を指定してプロシージャの実行を繰り返します。 ユーザー名を指定する場合は、有効な名前にしてください。 大文字と小文字は区別されません。

p_threshold_executions

実行数の下限で、これに満たないSQL文は解析の対象として選択されません。 このパラメータはオプションです。 このパラメータを使用すると、アプリケーションにおいて、たとえば4回以上などの実行回数の文を抽出し、コンパイルできます。 デフォルト値は1です。 これは、無効なSQL文も含め、実行されていないSQL文は抽出されないことを意味します。

p_threshold_sharable_mem

ソース・インスタンスのカーソルによって消費される共有メモリーの下限サイズ。 この値に満たないSQL文は、解析の対象として選択されません。 このパラメータはオプションです。 このパラメータを使用すると、アプリケーションにおいて、たとえば10000バイトより大きい共有メモリーの文を抽出し、コンパイルできます。

p_parallel_degree

解析処理を完了するために実行するパラレル・ジョブ数。 これらのタスクは、解析の対象に選択されたSQL文の部分範囲に対するパラレル・ジョブとして起動されます。 このパラメータは、現在実装されていないパラレル・コンパイル・ジョブ用に予約されています。