管理ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

ALDSP リソースのコンフィグレーション

この章では、管理プロパティを作成する、メモリの管理およびキャッシュを有効化するなどタスクを含む ALDSP データスペースのコンフィグレーション方法について説明します。内容は以下のとおりです。

 


データスペースのキャッシュおよびログをコンフィグレーションする

キャッシングおよびロギングなどのデータスペースに対する設定がシステム管理カテゴリにおける [一般] タブを使用して、表示およびコンフィグレーションできます。

一般データスペース設定のコンフィグレーション

  1. システム管理カテゴリを選択して、ナビゲーション ツリーからデータスペースを選択します。図 4-1 に示すように、[一般] タブが表示されます。
  2. 図 4-1 [全般] データスペース設定ページ


    [全般] データスペース設定ページ

  3. データスペースの一般コンフィグレーションを変更するには、ロックを取得します。
  4. このページを使用して、データ キャッシングおよびロギング レベルの詳細を有効化できます。データ キャッシングの詳細については、『クエリ結果キャッシュのコンフィグレーション』を参照してください。ロギングの詳細については、『監査情報およびログ情報の操作』を参照してください。
  5. [保存] をクリックして変更をアクティブ化する。

 


物理ソース カテゴリの使用

物理ソース カテゴリでは、リソースのエンド ポイントのコンフィグレーションおよび変更、物理データ ソースの場所の表示、置換 SQL 文の作成ができます。

この節では、ALDSP Administration Console の物理ソース カテゴリを使用してこれらの機能をコンフィグレーションする方法について説明します。この章の内容は以下のとおりです。

データ ソースの物理的な場所の表示

定義されたリレーショナル データベースを使用するデータ サービスおよび関数ライブラリのリストを表示できます。[使用場所] タブをクリックすると、データ サービスとその固有のパスのリストが表示されます (図 4-2 を参照)。

図 4-2 データ サービスとリレーショナルの物理的な依存関係

データ サービスとリレーショナルの物理的な依存関係

リソース リストからデータ サービスを選択してデータ サービスに関するメタデータを表示できます。

データ ソースのエンド ポイントの変更

開発サーバからプロダクション サーバにデータスペースを移動するには、データソースの場所または他のアーティファクトの名を変更する必要があります。たとえば、機密情報などの保護された情報を守るために開発時にサンプルのデータ ソースを使用している場合には、ある時点でテスト用のデータ ソースを実際のデータのある新しいデータ ソースに置換する必要があります。図 4-3 に示すように、物理ソース カテゴリを使用してこれらの変更ができます。

図 4-3 リレーショナル ソースのエンド ポイントの設定

リレーショナル ソースのエンド ポイントの設定

データ ソースのエンド ポイントを変更することによって、データ ソースの名と場所、および従属アーティファクトの対象名を変更することもできます。リレーショナル ソースの場合は、カタログ名、スキーマ名、パッケージ名、テーブル名、ストアド プロシージャ名、ビュー名およびリレーショナル関数が含まれています。エンド ポイントの変更は、元の値に戻されるか、さらに変更されるまで有効です。

エンド ポイント名を元の値にする。

  1. [ロックして編集] をクリックして、ロックを取得する。
  2. [表示されます] をクリックします。このオプションでは、元の名前に直接戻されます。以前設定した値に戻されることはありません。いくつかの中間対象名を割り当ててから、[表示されます] をクリックします。値は [元の値] カラムにある同じ値に戻ります。
  3. [保存] をクリックして変更をアクティブ化する。
注意 : アーティファクトのエンド ポイントを変更する場合、アーティファクトのいくつかのプロパティは古いソースと一致する必要があります。たとえば、リレーショナル データ ソースに対するベンダのタイプ、バージョンなどのプロパティは古いソースと同じでなければなりません。

表 4-1 に、エンド ポイント設定を変更できるアーティファクトを示します。

表 4-1 ALDSP Administration Console を使用して変更したエンド ポイントのアーティファクト
データ ソースのタイプ
アーティファクト
リレーショナル
データ ソースの名前と場所
 
カタログ
 
スキーマ
 
パッケージ
 
テーブル
 
ビュー
 
リレーショナル関数
 
ストアド プロシージャ
Web サービス
Web サービスの名前と場所
 
サービス
 
ポート
 
オペレーション
XML
データ ソースの名前と場所
文字区切り形式ファイル
データ ソースの名前と場所

SQL 文の置換

ALDSP はリレーショナル データ ソースにアクセスするため SQL を使用します。コンパイル時に、組み込みクエリ オプティマイザが、バックエンド ソースに対する最適な実行方式を決定します。その後 SQL クエリが生成され、基底のデータベースに送信されます。

リレーショナル ラッパーによって生成される SQL クエリは、基底の各データベースに固有のものです。生成される SQL クエリは多くの場合で有効な結果を返しますが、生成されるクエリをさらに最適化したほうが望ましい場合もあります。ほとんどの RDBMS システムでは、そうした最適化が実行ヒントを介して行われます。

SQL 文の置換によって、生成される SQL クエリにヒントを追加することができます。これを行うには、ALDSP によってデフォルトで生成されるクエリの代わりに実行される、編集された SQL 文を指定します。

警告 : ALDSP によって生成される SQL 文とは異なり、置換される SQL 文は検証なしで基底のデータベースに渡されます。このため、データベースにヒントを提供する以外の目的でこの機能を使用しないことをお勧めします。さらに、デプロイする前に、置換される SQL 文と生成される SQL 文をテストで比較して、予期されるパフォーマンス上の利点が得られることを確認するようお勧めします。

図 4-4 に示すように、物理ソース カテゴリで使用可能な [置換された SQL 文] タブを使用して、ALDSP Administration Console に置換 SQL 文が作成され、登録されます。

図 4-4 [置換された SQL 文] ダイアログ ボックス

SQL 文の置換の仕組み

ALDSP サーバでは、元の生成された SQL クエリとユーザが指定する任意の置換クエリとの間に置換テーブルが保持されます。ユーザによって指定された SQL クエリのみが置換されます。

ALDSP の管理者は、ALDSP Administration Console を使用して置換クエリを定義および管理します。

置換クエリは、元の SQL クエリの代わりに実行されます。ALDSP 実行時エンジンは、元のクエリの型/カラム情報を使用して SQL 結果セットを読み込みます。「SQL 文の置換の要件」で示されている条件に違反した、不正な置換に関する問題があると、以下のような問題が発生する場合があります。

置換されるクエリで外部化されたエンド ポイントをサポートする

生成されるクエリでも置換クエリでも、外部化されたエンド ポイントのサポートには特別な構文が使用されます (詳細については、「データ ソースのエンド ポイントの変更」を参照)。次の置換クエリでは、こうした構文 (強調箇所) が示されています。

SELECT /*+ FIRST_ROWS (10)*/ t1."BILL_TO_ID" AS c1, t1."C_ID" AS c2, t1."DATE_INT" AS c3, t1."ESTIMATED_SHIP_DT" AS c4, 
t1."HANDLING_CHRG_AMT" AS c5, t1."ORDER_DT" AS c6, t1."ORDER_ID" AS c7, t1."SALE_TAX_AMT" AS c8,
t1."SHIP_METHOD_DSC" AS c9, t1."SHIP_TO_ID" AS c10, t1."SHIP_TO_NM" AS c11, t1."STATUS" AS c12,
t1."SUBTOTAL_AMT" AS c13, t1."TOTAL_ORDER_AMT" AS c14, t1."TRACKING_NO" AS c15
FROM {RTLAPPLOMS}.{CUSTOMER_ORDER} t1
注意 : 置換される SQL 文に SQL フラグメント (文字列リテラルなど) を追加する場合は、二重の開始中括弧を使用する規則にも従う必要があります。
注意 : 次に例を示します。
SELECT t1.ID FROM CUSTOMER() WHERE $i/ID > `a{bee}c' return $i/ID

上記の文は次のように変換されます。

SELECT t1.ID FROM {CUSTOMER} t1 WHERE t1.ID > `a{{bee}c'

要求に応じて、元のクエリと同じ名前のプレースホルダを使用する置換クエリが指定されます。SQL 生成ステージの最後に、元の名前は現在のエンド ポイント名に置換されます。エンド ポイントの設定が見つからない場合は、元の名前が使用されます。

SQL 文の置換の要件

置換される SQL クエリに関しては、以下の要件があります。

置換 SQL クエリ文の作成

置換 SQL クエリの作成

  1. ロックを取得するには、[ロックして編集] をクリックします。
  2. カテゴリ リストから物理ソース カテゴリを選択して、ナビゲーション ペインから [リレーショナル データベース] オプションを選択します。
  3. 置換クエリを作成するリレーショナル データ ソースに移動して選択し、[置換される SQL 文] タブを選択します。
  4. [新規] をクリックする。図 4-5 に示すように、SQL 文の置換制限を指定するページが表示されます。
  5. 図 4-5 SQL 文の置換制限


    SQL 文の置換の要件

  6. このページに以下の詳細を指定する。

作成日時と最終更新日時が、システムによって自動追跡されます。置換クエリの使用の例は、SQL 文の置換の例に示しています。

SQL 文の置換の例

SQL 文の置換を行う順序に決まりはありません。そのため、この節の例とその手順は、SQL 文の置換を作成およびテストする 1 つの方法にすぎません。

  1. 以下のアクションを実行して、環境を設定します。
  1. 基本の SQL 文の監査プロパティを [Always] に設定します (図 4-6 を参照)。つまり、基本の SQL 文が常に返されるようになります。(個別の監査プロパティの設定」も参照してください。)
  2. 図 4-6 basesql プロパティの設定 (常に返されるようにする)


    basesql プロパティの設定 (常に返されるようにする)

  3. ALDSP Administration Console でリレーショナル データ ソースを選択します (図 4-4 を参照)。
  4. [置換された SQL 文] オプションを選択します。
  5. [新規] をクリックして、表示されるダイアログ ボックスで以下の項目を入力します。
  1. [保存] をクリックして変更をアクティブ化する。
  2. Eclipse IDE データスペースで、クエリ (CUSTOMER など) テストを実行します。図 4-7 では、生成される SQL 文の basesql バージョンが示されています。
  3. 図 4-7 basesql が強調表示された RTLApp CUSTOMER_ORDER() クエリの出力


    basesql が強調表示された RTLApp CUSTOMER_ORDER() クエリの出力

  4. 生成したクエリの basesql バージョンが表示されるまで [コンソール] タブを下にスクロールします (図 4-7 を参照)。クエリのこのバージョンをクリップボードにコピーします。クエリの例を以下に示します。
  5. SELECT t1."BIRTH_DAY" AS c1, t1."CUSTOMER_ID" AS c2, t1."CUSTOMER_SINCE" AS c3,
          t1."DEFAULT_SHIP_METHOD" AS c4, t1."EMAIL_ADDRESS" AS c5, t1."EMAIL_NOTIFICATION" AS c6,
          t1."FIRST_NAME" AS c7, t1."LAST_NAME" AS c8, t1."LOGIN_ID" AS c9, t1."NEWS_LETTTER" AS c10,
          t1."ONLINE_STATEMENT" AS c11, t1."SSN" AS c12, t1."TELEPHONE_NUMBER" AS c13
        FROM {RTLCUSTOMER}.{CUSTOMER} t1
  6. ALDSP Administration Console の [置換された SQL 文] 領域に戻り、[生成された SQL 文] フィールドに basesql 文を貼り付けます。
  7. [置換された SQL 文] フィールドに basesql 文を貼り付けます。
  8. 基底のデータベースから提供されるサポートされているヒントに基づいて、置換される文を編集します。クエリの例を以下に示します。ここでは、結果を Oracle データベースで最初の 10 行に制限しています (強調箇所)。
  9. SELECT /*+ FIRST_ROWS (10)*/ t1."BIRTH_DAY" AS c1, t1."CUSTOMER_ID" AS c2, t1."CUSTOMER_SINCE" AS c3,
          t1."DEFAULT_SHIP_METHOD" AS c4, t1."EMAIL_ADDRESS" AS c5, t1."EMAIL_NOTIFICATION" AS c6,
          t1."FIRST_NAME" AS c7, t1."LAST_NAME" AS c8, t1."LOGIN_ID" AS c9, t1."NEWS_LETTTER" AS c10,
          t1."ONLINE_STATEMENT" AS c11, t1."SSN" AS c12, t1."TELEPHONE_NUMBER" AS c13
        FROM {RTLCUSTOMER}.{CUSTOMER} t1
  10. [保存] をクリックして変更をアクティブ化する。
  11. Eclipse IDE に戻り、テスト モードでクエリを再実行します。[出力] ペインの SQL 文領域に置換クエリが表示されます。
  12. プラン ビューで CUSTOMER () クエリを選択します。[クエリ プランの表示] をクリックします。結果として表示されるプランに、置換される SQL 文の名前とともに置換される SQL が表示されます。
  13. 図 4-8 置換される SQL クエリを表示するクエリ プラン


    置換される SQL クエリを表示するクエリ プラン

 


サーバのスレッド数の設定

最適なスレッド数のコンフィグレーションは、ALDSP をデプロイするマシンの物理的なリソース、予期される負荷、およびデプロイするデータスペースのタイプに応じて変わります。スレッド数を増やすことで処理を高速化できますが、メモリが消費されます。優先およびリソースの可用性によって、スレッド数を増やす必要があります。

優先を決定およびサーバ スレッド数を設定する方法については、「www.dev2dev.com」の「ALDSP FAQ」を参照してください。

ALDSP Administration Console では、以下のオプションを使用してサーバのスレッド数が設定されます。

サーバのスレッド数を設定するには、

  1. システム管理カテゴリから [ランタイム] タブを選択します。
  2. ロックを取得します。
  3. 図 4-9 に示すように、[サーバ リソース] セクションでは、キャッシュしたクエリ プランの最大数および 1 つのクエリに対する最大スレッド数を指定します。
  4. 図 4-9 ALDSP Administration Console : [ランタイム] タブ


    ALDSP Administration Console: [ランタイム] タブ

  5. [保存] をクリックして変更をアクティブ化する。

WebLogic Server のパフォーマンス チューニングの詳細については、『WebLogic Server パフォーマンス チューニング』ガイドを参照してください。

 


項目ベース メモリの管理

メモリの管理を有効にすると、ALDSP はメモリで管理したソート演算子および結合演算子を使用します。メモリで管理した演算子は、大きなデータセットの存在下でメモリの利用を制限するためディスクを使用します。各演算子は、時刻、メモリに項目の最大数を設定することが許可されています。処理する項目の数は最大数を超えると、演算子はタスクを終了するにはディスクを使用します。ここで、「項目」は処理する (結合またはソート) ものです。

注意 : 別のクエリ ワークロードは、通常異なるサイズの項目が含まれます。

たとえば、2 つのソート演算子および 3 つの結合演算子を含むクエリ プランと想定します。演算子ごとに項目の最大数は 40,000 であると仮定してみましょう。クエリによって処理される全体な大量のデータにかかわらず、このクエリ プランは、同時にメモリで最も (2 + 3) * 40,000 = 200,000 項目が含まれています。

演算子の最大数は、ALDSP 対応サーバによって指定した時点で処理されるすべてのクエリ プランに介して同時に実行される演算子の総数を参照します。演算子の最大数および項目の最大数を一緒にサーバのメモリ利用の総数を管理するおよび「out-of-memory」例外に対する保護を提供できます。必要に応じて、ワークロードおよびデータ特性によってこれらの値を調整する必要があります。項目のサイズは実際のメモリ利用に影響するので、項目の数はメモリ利用の粗測量のみである。

メモリ管理を有効化およびコンフィグレーションするには、

  1. システム管理カテゴリから [ランタイム] タブをクリックします。
  2. ロックを取得します。
  3. メモリ管理のセクションから (図 4-9 を参照)、[メモリ管理の有効化] を選択します。
  4. [演算子の最大数] のボックスを使用して、データスペースごとに演算子の最大数を指定します。データスペースごとに演算子のメモリ利用を制限することができます。
  5. メモリで 1 つの演算子によって、ソートまたは結合される (項目) 最大数を指定します。この最大数を超えると、一時的なファイルのシステム スペースに格納します。
  6. [保存] をクリックして変更をアクティブ化する。

 


管理プロパティの使用

管理プロパティとは、ALDSP Administration Console を使用してコンフィグレーションできるユーザ定義のプロパティです。管理プロパティの値は、XQuery 関数 (データ サービス関数またはセキュリティの XQuery 関数) で使用できます。

注意 : セキュリティの XQuery 関数の詳細については、「ALDSP リソースの保護」を参照してください。

管理プロパティを使用することで、データ サービス関数またはセキュリティの XQuery 関数の本文を変更することなく管理者によって簡単に変更できる関数パラメータを指定できます。

データスペース内の任意のデータ サービスは管理プロパティの値を使用できます。プロパティ値には、BEA 関数 get-property() を使用する XQuery を介してアクセスできます。この関数はプロパティ名を引数として取り、値を文字列として返します。また、パラメータのデフォルト値として機能する引数も取ります。デフォルト値は、そのプロパティがコンソールでコンフィグレーションされていない場合に使用されます。

以下の例では、管理プロパティを使用する XQuery 関数ライブラリの関数を示します。

declare function f1:getMaximumAccountViewable() as xsd:decimal { 
let $amount := fn-bea:get-property("maxAccountValue", "1000.00")
cast as xsd:decimal
return $amount
};

管理プロパティを管理するには、次の手順に従います。

  1. ナビゲーション ペインでデータスペースの名前をクリックします。
  2. システム管理カテゴリから [管理プロパティ] タブをクリックします。現在定義されているプロパティ名のリストがテーブルに表示されます (図 4-10 を参照)。
  3. 図 4-10 [管理プロパティ] タブ


    [管理プロパティ] タブ

  4. [ロックして編集] を選択して、ロックを取得する。
  5. プロパティを追加するには、次の手順に従います。
    1. [管理プロパティの追加] 表の [プロパティ名] フィールドにプロパティの名前を入力します。
    2. 名前は、プロパティ値へのアクセスに使用される get-property() 関数に渡される name プロパティと同じにする必要があります。次に例を示します。

      fn-bea:get-property("maxAccountValue", "1")
    3. 必要に応じて、プロパティの初期値を入力します。
    4. この値は後で変更できます。

    5. [プロパティの追加] をクリックします。
    6. [管理プロパティの編集] 表にプロパティが表示されます。

  6. プロパティ値を変更するには、次の手順に従います。
    1. ロックを取得します。
    2. [管理プロパティの編集] 表の [プロパティ値] フィールドに新しい値を入力します。
    3. [保存] をクリックして変更をアクティブ化する。
  7. プロパティを削除するには、次の手順に従います。
    1. ロックを取得して、[管理プロパティの編集] 表からプロパティを選択します。
    2. [削除] をクリックします。
    3. プロパティの削除を確認するには、[変更のアクティブ化] をクリックします。
注意 : 削除したプロパティを使用する get-property() 呼び出しでは、プロパティのデフォルト値が使用されます。

 


アクティブなクエリおよび更新のモニタ

コンソールでのオプレション カテゴリを使用して、長期にわたって実行するアクティブなクエリおよびデータスペースの更新をモニタすることができます。図 4-11 では、RTLApp データスペースについて実行中のアド ホック クエリを示します。

注意 : アクティブなクエリおよび更新はデータスペースレベルでモニタできます。
図 4-11 アクティブなアド ホック クエリのステータスのモニタ

アクティブなアド ホック クエリのステータスのモニタ

アクティブな クエリまたは更新がサーバで長時間にわたって実行されている場合、テーブルに情報が表示されます。このテーブルでは、[関数名] フィールドの下に XQuery 関数をリストします。

クエリによってデータを取得するために予想以上の時間がかかると、[クエリの停止] をクリックしてクエリを停止することができます。

アド ホック クエリの場合、[関数] フィールドの関数名をクリックしてアド ホック クエリを表示できます。これによって、図 4-11 に示すように、サーバで実行中のアド ホック クエリが表示できます。

図 4-12 ALDSP Administration Console でのアド ホック クエリの表示

ALDSP Administration Console でアド ホック クエリの表示

アクティブなクエリと同様にアクティブな更新もモニタできます。

 


トランザクション アイソレーション レベルの設定

場合によっては、別のデータスペースによってテーブルがロックされているために ALDSP でデータベース テーブルからデータを読み込めないことがあります。この場合、ALDSP によって発行されたクエリは、そのデータスペースがロックを解放するまでキューに入れられます。この状態を回避するには、トランザクション アイソレーションを設定して WebLogic Server 上の JDBC 接続プールでコミットされていないデータを読み込めるようにします。

トランザクション アイソレーション レベルを設定するには、次の手順に従います。

  1. Web ブラウザで次の URL にアクセスし、WebLogic Administration Console を起動します。
  2. http://<HostName>:<Port>/console

    たとえば、WebLogic Server のローカル インスタンス (自分のマシンで実行されているインスタンス) の Administration Console を起動するには、Web ブラウザのアドレス フィールドに次の URL を入力します。

  3. [サービス|JDBC|データ ソース|datasourcename] を展開します。
  4. 図 4-13 に示すように [接続プール] タブを選択します。
  5. 図 4-13 WebLogic Administration Console [接続] タブ


    WebLogic Administration Console [接続] タブ

  6. [詳細] セクションを拡張します。ページが拡張され、[詳細オプション] セクションが表示されます。
  7. ロックを取得します。
  8. [初期化 SQL] フィールドに次のように入力します。
  9. SQL SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

  10. [保存] をクリックして変更をアクティブ化する。

  ページの先頭       前  次