DB2 は、文字ラージ・オブジェクト (CLOB)、2 バイト文字ラージ・オブジェクト (DBCLOB)、 および バイナリー・ラージ・オブジェクト の、3 つのタイプのラージ・オブジェクト (LOB) を サポートします。DB2 LOB サポートの一般情報については、以下の DB2 ブックを参照してください。
連合データベース・システムでは、リモート・データ・ソース上の LOB にアクセスして 取り扱うことができます。LOB は非常に大きなデータになることがあるため、リモート・データ・ソースからの LOB の転送にはかなりの時間がかかることがあります。DB2 連合データベースは、データ・ソースからの LOB データの転送を最小化しようとするとともに、DB で LOB を具体化することなく、 要求された LOB データをデータ・ソースから要求しているアプリケーションに直接引き渡そうと します。
このセクションでは、次の点について説明します。
DB2 連合システムは、LOB ストリーミングおよび LOB の具体化という 2 つの LOB 検索メカニズムを 使用します。
LOB ストリーミングで、LOB データは段階的に検索されます。DB2 は、完全にプッシュダウンされる 照会の結果セットにあるデータに対して LOB ストリーミングを使用します。たとえば、次の照会を 考えてみてください。
SELECT empname, picture FROM orc_emp_table WHERE empno = '01192345'
ここで、picture は LOB 列を表し、orc_emp_table は 社員データを含む Oracle の表を指すニックネームを表します。DB2 照会プロセッサーが Oracle データ・ソースにある照会全体を実行することにした場合、DB2 照会プロセッサーは ストリーミングを行うために picture 列にマークを付けます。実行時に、 LOB がストリーミングを行うためにマークされていることを DB2 が通知すると、DB2 は データ・ソースから LOB を段階的に検索します。検索が終わると、DB2 はアプリケーション・メモリー・スペースに データを転送します。
LOB の具体化で、リモート LOB データは DB2 によって検索され、 連合サーバーにローカルに格納されます。DB2 が LOB の具体化を使うのは、以下の場合です。
アプリケーションは、リモート・データ・ソースに格納されている LOB に対して LOB ロケーターを要求することができます。LOB ロケーターはホスト変数に 格納されている 4 バイトの値で、プログラムはこれを使用してデータベース・システムに 保持されている LOB 値 (または LOB 式) を参照します。LOB ロケーターを使用すると、 プログラムは、正規のホスト変数に格納されている LOB 値と同じように、LOB 値を 操作することができます。LOB ロケーターを使用することで、LOB 値をサーバーから アプリケーションに (また、アプリケーションからサーバーに) トランスポートする 必要がなくなります。LOB ロケーターの追加情報については、 「アプリケーション開発の手引き」を参照してください。
DB2 は、リモート・データ・ソースから LOB を検索し、LOB を DB2 に格納してから、 格納した LOB に LOB ロケーターを実行することができます。LOB ロケーターがリリースされるのは、 以下の場合です。
LOB の使用や検索に際しては、以下の点を考慮してください。
DB2 LOB データ・タイプを、データ・ソースにある LOB 以外のデータ・タイプにマップできる ケースが 2、3 あります。DB2 LOB タイプの列と、データ・ソースの対応列との間のマッピングを 作成する必要がある場合、対応するタイプとして、できれば LOB データ・タイプを使用することをお勧めします。
マッピングを作成するには、作成タイプ・マッピング DDL ステートメントを使用します。例:
CREATE TYPE MAPPING my_oracle_lob FROM sysibm.clob TO SERVER TYPE oracle TYPElong
パラメーターの意味は次の通りです。
リモート LOB を検索するアプリケーションが、ステートメントを処理するための システム・リソースが不足していることを示すエラー・メッセージを返した場合には、 データベース構成ファイルにある、アプリケーションのヒープ・サイズ・パラメーター、 APPLHEAPSZ の値を増やしてください。例:
DB2 UPDATE DB CFG FOR EMPLOYEE USING APPLHEAPSZ 512
。ここで、EMPLOYEE は 調節しているデータベース名で、512 はアプリケーションのヒープ・サイズ・パラメーターの 値です。