1.5 LOBの制限事項
LOBデータを操作する際には、いくつかの制限を考慮する必要があります。
LOB列には次のルールと制限があります。
- LOBは主キー列として指定できません。
- 問合せの
ORDER
BY
句やGROUP
BY
句または集計ファンクションには、LOB列を指定できません。 SELECT
...DISTINCT
文やSELECT
...UNIQUE
文、または結合文には、LOB列を指定できません。ただし、列のオブジェクト型にその型で定義されたMAP
ファンクションまたはORDER
ファンクションが含まれている場合、SELECT
...DISTINCT
文、UNION
やMINUS
集合演算子を使用する問合せには、オブジェクト型列のLOB属性を指定できます。
- クラスタには、キー列としてもキー列以外の列としても、LOBを含めることはできません。
- 圧縮された
VARRAY
データ型はサポートされていますが、パフォーマンスは低下します。 - 次のデータ構造は、一時インスタンスとしてのみサポートされます。この種のインスタンスはデータベース表に格納できません。
- 任意のLOB型の
VARRAY
- LOB属性を持つオブジェクト型など、LOB型を含む任意の型の
VARRAY
- 任意のLOB型の
ANYDATA
- LOB型を含む任意の型の
ANYDATA
- 任意のLOB型の
- LOBセグメントの最初の(
INITIAL
)エクステントには、3つ以上のデータベース・ブロックを含める必要があります。 - 最小エクステント・サイズは14ブロックです。8Kブロック・サイズ(デフォルト)の場合は、112Kと同等になります。
AFTER UPDATE
DMLトリガーの作成時には、UPDATE
OF
句にLOB列を指定できません。OCI関数またはDBMS_LOB
パッケージを使用して、LOB列の値またはオブジェクト型列のLOB属性を変更した場合、AFTER UPDATE DML
トリガーを定義した表では、DMLトリガーが起動されません。- LOB列は索引キーの一部として指定できません。ただし、ファンクション索引またはドメイン索引の索引タイプ指定でLOB列を指定できます。また、Oracle Textを使用すると、
CLOB
列に索引を定義できます。 - SQL*Loaderでは、LOBから読み取られたフィールドは句の引数として使用できません。
CLOB
列に対する大/小文字を区別しない検索は、多くの場合成功しません。CLOB
列に対して次の大と小文字を区別しない検索を実行するとします。ALTER SESSION SET NLS_COMP=LINGUISTIC; ALTER SESSION SET NLS_SORT=BINARY_CI; SELECT * FROM ci_test WHERE LOWER(clob_col) LIKE 'aa%';
LOWER
関数がないとSELECTは失敗します。Oracle TextまたはDBMS_LOB.INSTR()
関数を使用して、大/小文字を区別しない検索を実行できます。
親トピック: ラージ・オブジェクトおよびSecureFilesの概要