プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド
12c (12.2.1.1.0)
E77227-02
目次へ移動
目次

前
前へ
次
次へ

接続プールについて

接続プールは物理レイヤーのオブジェクトで、データ・ソースへのアクセスを記述します。

接続プールには、Oracle BIサーバーとそのデータ・ソース間の接続の詳細が含まれます。

BIサーバーの物理レイヤーには、データベースごとに1つ以上の接続プールが格納されています。接続プールは、データ・ソースのスキーマをインポートして物理レイヤーを作成するときに自動的に作成されます。1つのデータベースに対して複数の接続プールを構成できます。接続プールを使用すると、複数の同時データ・ソース・リクエスト(問合せ)で単一のデータベース接続の共有が可能になり、データベースへの接続のオーバーヘッドを軽減できます。

注意:

初期化ブロックには専用接続プールを作成することをお薦めします。詳細は、初期化ブロックの接続プールについてを参照してください。

接続プールのそれぞれに、許容される最大同時接続数を指定する必要があります。この制限値に達すると、接続リクエストは、接続に空きができるまで待機します。

許容される同時接続数が増えると、接続プールからのアクセス先になる基礎データベースの負荷が増加する可能性があります。テストを実行しDBAと協議して、接続プールで指定した接続数をデータ・ソースで処理できることを確認してください。また、データ・ソースに接続数に基づくチャージバック・システムがある場合、同時接続数を制限してチャージバック・コストを低く保持することが必要な場合もあります。

データベース・リソースに関連して見込まれる負荷およびコストに加えて、Oracle BIサーバーではサーバーの起動時に接続のそれぞれに共有メモリーが割り当てられます。これによって接続数が上昇し、Oracle BIサーバーのメモリー使用量が増加します。

初期化ブロックの接続プールについて

初期化ブロックに専用の接続プールを作成する必要があります。

この接続プールは問合せに使用しないでください。

また、初期化ブロックのタイプごとに接続プールを分離することもお薦めします。このようにすることで、認証およびログイン固有の初期化ブロックでログイン・プロセスの速度が低下しないことが保証されます。次のタイプには独立した接続プールを設定する必要があります。

  • 言語、外部化文字列、グループ割当てなどの認証およびログイン固有の初期化ブロック。

  • セッション変数を設定するすべての初期化ブロック。

  • リポジトリ変数を設定するすべての初期化ブロック。これらの初期化ブロックは常に管理者権限を持つ資格証明を使用して実行する必要があります。

    これらの初期化ブロックの数、スケジュールされたリフレッシュ率、およびその実行のスケジュール時点は把握しておく必要があります。このシナリオでリソースに対する影響の極端な状況を考えてみましょう。たとえば、リフレッシュ率を分単位で設定し、同時にリフレッシュされる初期化ブロックが15を超えており、これらのシナリオのいずれかが最もユーザー・アクセスが多い時間フレームに発生するとします。

初期化ブロックは、ブロック別にOracle BIサーバーの変数の最大数が割り当てられるように設計する必要があります。たとえば、5つの変数がある場合、効率的でリソース集中度を低くするには、5つの変数のすべてが格納される単一の初期化ブロックを構成します。初期化ブロック1つを使用した場合、初期化文字列を使用し、バック・エンド表に対するコール1回だけで値が解決されます。変数ごとに1つずつ、合計5つの初期化ブロックを構成した場合は、バック・エンド表に対するコールが5回発生して割当てが実行されることになります。

Oracle BIサーバーの起動中に、初期化ブロックが特定の接続プールに対して失敗した場合、その接続プールを使用する初期化ブロックはそれ以上処理されません。そのかわり、接続プールはブラックリストに記載され、その接続プールの後続の初期化ブロックはスキップされます。この動作により、共有プールに多くの関連する初期化ブロックまたは変数がある場合でもOracle BIサーバーが適切なタイミングで開始します。

この場合、サーバー・ログに次のようなメッセージが表示されます。

[OracleBIServerComponent] [ERROR:1] [43143] Blacklisted connection pool 
name_of_connection_pool

このエラーが表示された場合は、特定の接続プールの初期化ブロックを確認し、それらのブロックが正しいことを確認します。