13.3 オブジェクト・キャッシュ内のLOB
LOBロケータ属性を使用してオブジェクト・キャッシュ内でオブジェクトを別のオブジェクトにコピーする場合、LOBロケータのみがコピーされます。
つまり、これら2つの異なるオブジェクト内のLOB属性には、唯一かつ同一のLOB値を参照する厳密に同一のロケータが含まれます。ターゲットLOBをフラッシュする場合のみ、LOB値の個別の物理コピーが作成されます。これは、ソースLOB値とは異なります。
関連項目:
ロケータの1つを使用して書込み操作が実行された場合、各オブジェクトでどのバージョンのLOB値が参照されるかについては、LOBの更新および読取り一貫性の例を参照してください。したがって、コピーのターゲットであったLOBを変更する場合、ターゲット・オブジェクトをフラッシュし、ターゲット・オブジェクトをリフレッシュしてから、ロケータ属性を介してLOBに書き込む必要があります。
LOBおよびBFILE属性について、次のオブジェクト・キャッシュの問題を考慮してください。
-
永続LOB属性: オブジェクト・キャッシュ内にオブジェクトを作成すると、LOB属性は空に設定されます。
オブジェクト・キャッシュ内に、永続LOB属性を持つオブジェクトを作成すると、そのLOB属性は暗黙的に空に設定されます。この空のLOBロケータを使用して、データをLOBに書き込むことはできません。最初にオブジェクトをフラッシュし、その後、表に行を挿入し、空のLOB(長さゼロ(0)のLOB)を作成する必要があります。
OCI_PIN_LATEST
関数を使用してオブジェクト・キャッシュ内のオブジェクトをリフレッシュすると、実際のLOBロケータが属性に読み取られ、OCI LOB APIをコールしてLOBにデータを書き込めます。 -
BFILE
属性: オブジェクト・キャッシュ内にオブジェクトを作成すると、BFILE
属性はNULL
に設定されます。BFILE
属性を持つオブジェクトを作成すると、BFILE
はNULL
に設定されます。BFILE
から読み取る前に、有効なDIRECTORY
オブジェクト名とファイル名を使用して更新する必要があります。
親トピック: 高度な設計時の考慮事項