プライマリ・コンテンツに移動
Oracle® Database SecureFilesおよびラージ・オブジェクト開発者ガイド
12cリリース1 (12.1)
B71284-05
目次へ移動
目次
索引へ移動
索引

前
次

4 Oracle LOB記憶域の使用

Oracle LOB記憶域にはSecureFiles LOB記憶域とBasicFiles LOB記憶域という2つのタイプがあり、これらは様々なタイプの表領域とともに使用されます。

LOB列型が含まれる表を設計、作成および変更します。

ここでは、次の項目について説明します。

LOB記憶域

初期のOracle Databaseリリースでは、LOB記憶域タイプのみサポートされていました。Oracle Database 11gでSecureFiles LOB記憶域が実装され、元の記憶域タイプの名前がBasicFiles LOB記憶域となり、これがデフォルトになりました。

BasicFiles LOB記憶域を使用して作成したLOBはBasicFiles LOBとされ、SecureFiles LOB記憶域を使用して作成したLOBはSecureFiles LOBと名付けられました。区別するためCREATE TABLE文が新しいキーワードに追加され、BASICFILEはBasicFiles LOB記憶域を示し、SECUREFILEはSecureFiles LOB記憶域を示しています。

Oracle Database 12c以降、SecureFiles LOB記憶域はCREATE TABLE文でデフォルトになりました。明示的に記憶域タイプが指定されていない場合、新規LOB列ではSecureFiles LOB記憶域が使用されます。

用語LOBは、(SecureFiles LOB記憶域タイプのみに適用できる)名前、またはアーカイブまたはリンクへの参照で記憶域タイプを明示的に示していない場合は両方の記憶域タイプのLOBを表しています。

初期化と互換性については、初期化、互換性およびアップグレードで説明しています

次の各項では、2つの記憶域タイプの詳細を説明します。

BasicFiles LOB記憶域

自動セグメント領域管理(ASSM)で管理されていない表領域のLOB記憶域には、BasicFiles LOB記憶域を使用する必要があります。

SecureFiles LOB記憶域

SecureFiles LOBはBasicFiles LOB記憶域とは異なり、自動セグメント領域管理(ASSM)で管理されている表領域にのみ作成できます。

SecureFiles LOB記憶域の設計はBasicFiles LOBと比較すると、よりパフォーマンスとスケーラビリティに優れており、従来のネットワーク・ファイルシステム以上のパフォーマンスを提供します。

SecureFiles LOB記憶域では、BasicFiles LOB記憶域オプションにはない圧縮、重複除外、暗号化の3つの機能をサポートしています。

CREATE TABLE文を使用して、圧縮、重複除外および暗号化を有効にしておくことをお薦めします。これらの機能をALTER TABLE文で有効にすると、表のすべてのSecureFiles LOBデータの読取り、変更および書込みが実行され、長時間に渡る可能性がある操作中にデータベースで表がロックされます。ただし、ALTER TABLE文には、この問題を回避するために役立つオンライン機能があります。

注意:

このような機能には、『Oracle Databaseライセンス情報』で説明されている特定のライセンス要件があります。

ここでは、次の項目について説明します。

拡張LOB圧縮について

拡張LOB圧縮では、ディスク領域を節約してパフォーマンスを改善するため、SecureFiles LOBデータを透過的に分析して圧縮します。

ライセンス要件: 拡張LOB圧縮を実装するには、Oracle Advanced Compressionオプションのライセンスが必要です。

拡張LOB重複除外について

拡張LOB重複除外は、LOB列またはパーティション内で重複するLOBデータをOracle Databaseで自動検出できるようにし、データのコピーを1つのみ格納することにより領域を節約できます。

ライセンス要件: 拡張LOB重複除外を実行するには、Oracle Advanced Compressionオプションのライセンスが必要です。

Oracle Streamsでは、重複除外されるSecureFiles LOBがサポートされないことにも注意してください。

SecureFiles暗号化について

SecureFiles暗号化では、LOBの新たな暗号化機能について説明します。データは透過的データ暗号化(TDE)使用して暗号化され、データの安全な格納だけでなく、ランダムな読取りおよび書込みアクセスが可能です。

ライセンス要件: SecureFiles暗号化を実行するには、Oracle Advanced Securityオプションのライセンスが必要です。

LOB記憶域でのCREATE TABLE

CREATE TABLE文は、SecureFilesまたはBasicFiles LOB記憶域、あるいはその両方に固有のパラメータを使用してLOB記憶域と連携して機能します。

例4-1では、Backus Naur (BNF)表記法のCREATE TABLEの構文を示し、LOB固有パラメータは太字で表しています。パラメータの詳細とCREATE TABLE文についてはCREATE TABLE LOB記憶域パラメータを参照し、完全な参照については『Oracle Database SQL言語リファレンス』を参照してください。

SHRINKオプションはSecureFiles LOBではサポートされていません。

例4-1 CREATE TABLE用のBNF

キーワードは太字で表されています。

CREATE [ GLOBAL TEMPORARY ] TABLE
   [ schema.]table OF
   [ schema.]object_type
   [ ( relational_properties ) ]
   [ ON COMMIT { DELETE | PRESERVE } ROWS ]
   [ OID_clause ]
   [ OID_index_clause ]
   [ physical_properties ]
   [ table_properties ] ;
 
<relational_properties> ::= 
{ column_definition
| { out_of_line_constraint
  | out_of_line_ref_constraint
  | supplemental_logging_props
  }
}
  [, { column_definition
     | { out_of_line_constraint
       | out_of_line_ref_constraint
       | supplemental_logging_props
       }
  ]...
 
<column_definition> ::= 
column data_type [ SORT ]
      [ DEFAULT expr ]
      [ ENCRYPT encryption_spec ]
      [ ( inline_constraint [ inline_constraint ] ... )
      | inline_ref_constraint 
      ]
 
<data_type> ::=
{ Oracle_built_in_datatypes
| ANSI_supported_datatypes
| user_defined_types
| Oracle_supplied_types
}
 
<Oracle_built_in_datatypes> ::=
{ character_datatypes
| number_datatypes
| long_and_raw_datatypes
| datetime_datatypes
| large_object_datatypes
| rowid_datatypes
}
 
<large_object_datatypes> ::= 
{ BLOB | CLOB | NCLOB| BFILE }
 
 <table_properties> ::=
  [ column_properties ]
  [ table_partitioning_clauses ]
  [ CACHE | NOCACHE ]
  [ parallel_clause ]
  [ ROWDEPENDENCIES | NOROWDEPENDENCIES ]
  [ enable_disable_clause ]
  [ enable_disable_clause ]...
  [ row_movement_clause ]
  [ AS subquery ]
 
<column_properties> ::=
  { object_type_col_properties
  | nested_table_col_properties
  | { varray_col_properties | LOB_storage_clause }
    [ (LOB_partition_storage
        [, LOB_partition_storage ]...
      )
    ]
  | XMLType_column_properties
  }
  [ { object_type_col_properties
    | nested_table_col_properties
    | { varray_col_properties | LOB_storage_clause }
      [ ( LOB_partition_storage
          [, LOB_partition_storage ]...
        )
      ]
    | XMLType_column_properties
    }
  ]...
 
<LOB_partition_storage> ::=
  PARTITION partition
  { LOB_storage_clause | varray_col_properties }
    [ LOB_storage_clause | varray_col_properties ]...
  [ ( SUBPARTITION subpartition
     { LOB_storage_clause | varray_col_properties }
       [ LOB_storage_clause
       | varray_col_properties
       ]...
    )
  ]
 
<LOB_storage_clause> ::=
  LOB
  { (LOB_item [, LOB_item ]...)
      STORE AS [ SECUREFILE | BASICFILE ] (LOB_storage_parameters)
  | (LOB_item)
      STORE AS [ SECUREFILE | BASICFILE ]
        { LOB_segname (LOB_storage_parameters)
        | LOB_segname
        | (LOB_storage_parameters)
        }
  }
 
<LOB_storage_parameters> ::=
  { TABLESPACE tablespace
  | { LOB_parameters [ storage_clause ]
    }
  | storage_clause
  }
    [ TABLESPACE tablespace
    | { LOB_parameters [ storage_clause ]
      }
    ]...
 
<LOB_parameters> ::=
  [ { ENABLE | DISABLE } STORAGE IN ROW
  | CHUNK integer
  | PCTVERSION integer
  | RETENTION [ { MAX | MIN integer | AUTO | NONE } ]
  | FREEPOOLS integer
  | LOB_deduplicate_clause
  | LOB_compression_clause
  | LOB_encryption_clause
  | { CACHE |  NOCACHE | CACHE READS } [ logging_clause ] } }
  ]
 
<logging_clause> ::=
  { LOGGING | NOLOGGING | FILESYSTEM_LIKE_LOGGING }
 
<storage_clause> ::=
  STORAGE
  ({ INITIAL integer [ K | M ]
   | NEXT integer [ K | M ]
   | MINEXTENTS integer
   | MAXEXTENTS { integer | UNLIMITED }
   | PCTINCREASE integer
   | FREELISTS integer
   | FREELIST GROUPS integer
   | OPTIMAL [ integer [ K | M ]
             | NULL
             ]
   | BUFFER_POOL { KEEP | RECYCLE | DEFAULT }
   }
     [ INITIAL integer [ K | M ]
     | NEXT integer [ K | M ]
     | MINEXTENTS integer
     | MAXEXTENTS { integer | UNLIMITED }
     | MAXSIZE { { integer { K | M | G | T | P } } | UNLIMITED }
     | PCTINCREASE integer
     | FREELISTS integer
     | FREELIST GROUPS integer
     | OPTIMAL [ integer [ K | M ]
               | NULL
               ]
     | BUFFER_POOL { KEEP | RECYCLE | DEFAULT }
     ]...
  )
 
<LOB_deduplicate_clause> ::=
  { DEDUPLICATE 
  | KEEP_DUPLICATES
  }
 
<LOB_compression_clause> ::=
  { COMPRESS [ HIGH | MEDIUM | LOW ]
  | NOCOMPRESS }
 
<LOB_encryption_clause> ::=
  { ENCRYPT [ USING 'encrypt_algorithm' ] 
    [ IDENTIFIED BY password ]
  | DECRYPT 
  }
 
<XMLType_column_properties> ::= 
XMLTYPE [ COLUMN ] column
   [ XMLType_storage ]
   [ XMLSchema_spec ]
 
<XMLType_storage> ::=
STORE AS
   { OBJECT RELATIONAL
   | [ SECUREFILE | BASICFILE ] { CLOB | BINARY XML }
       [ { LOB_segname [ (LOB_parameters) ]
         | LOB_parameters
         }
         ]
 
<varray_col_properties> ::=
VARRAY varray_item 
   { [ substitutable_column_clause ]
     STORE AS [ SECUREFILE | BASICFILE ] LOB
        { [ LOB_segname ] (LOB_parameters)
        | LOB_segname 
        }
   | substitutable_column_clause
   }

CREATE TABLE LOB記憶域パラメータ

CREATE TABLE文では、LOB記憶域、特にBasicFiles LOBまたはSecureFiles LOBに関連するパラメータを使用します。

表4-1はLOB記憶域に関連するCREATE TABLE文のパラメータを示し、パラメータがBasicFiles LOBまたはSecureFiles LOB記憶域のどちらに固有のものかも示しています。

表4-1 LOBに関連するCREATE TABLE文のパラメータ

パラメータ 説明

BASICFILE

BasicFiles LOB記憶域、LOBの元のアーキテクチャを示します。

互換性モードをOracle Database 11gに設定すると、完全な機能を実現するためにBASICFILEパラメータがデフォルトで有効になり、指定されます。

Oracle Database 12c以降では、BasicFiles LOB記憶域タイプを使用するには、明示的にパラメータBASICFILEを指定する必要があります。指定しない場合、CREATE TABLE文では現在のデフォルトであるSecureFiles LOBが使用されます。

初期化、互換性およびアップグレードを参照してください。

BasicFiles LOBの場合、いずれかのSecureFiles LOBオプションを指定すると、エラーが発生します。

SECUREFILE

SecureFiles LOB記憶域を指定します。

Oracle Database 12c以降では、パラメータSECUREFILEで指定されるSecureFiles LOB記憶域タイプがデフォルトになります。

SecureFiles LOBは、自動セグメント領域管理(ASSM)で管理される表領域でのみ作成できます。

CHUNK

BasicFiles LOBについては、LOBを格納する表を作成する場合にチャンク・サイズを指定します。

CHUNKは1つ以上のOracleブロックであり、LOBに対してアクセスまたは変更を行うときに、Oracle Databaseが使用するデータ・サイズに対応します。

SecureFiles LOBについては、これは下位互換性を維持するために提供されるアドバイザ・サイズです。

RETENTION

指定した方法でLOBデータの旧バージョンをLOB列に格納するように設定します。

Oracle Database Release 12cでは、このパラメータ名で保存ポリシーが指定されます。

RETENTIONには3つの値を指定できます。

  • MAXの場合、セグメントで使用される領域がMAXSIZEパラメータで指定されるサイズに到達するまで、旧バージョンのLOBデータ・ブロックを保存することを示します。MAXSIZEが指定されない場合、MAXAUTOと同様に機能します。

  • MINの場合、旧バージョンのLOBデータ・ブロックを指定した時間(秒)保存するように指定されます。

  • NONEの場合は、保存期間がなく、必要であるとみなされる方法で領域を再利用できることを示します。

  • AUTOの場合は、時間と領域の両方の面で必要性を考慮し、可能なかぎり効率的に記憶域を管理するように指定されます。

BasicFiles LOBで使用されるRETENTIONパラメータの詳細は、BasicFiles LOB用のRETENTIONパラメータを参照してください。

MAXSIZE

LOBで使用可能な記憶域の上限を指定します。

上限に達した場合、時間要件にかかわらず、必要に応じて、旧バージョンのLOBデータ・ブロックのプールから新規のLOBデータ・ブロックが取得されます。

FREEPOOLS

BasicFiles LOBのFREELISTグループの数を指定します(データベースが自動UNDOモードの場合)。リリース12cまでの互換モードでは、このパラメータはSecureFiles LOBの作成時に無視されます。

LOGGINGNOLOGGING、またはFILESYSTEM_LIKE_LOGGING

ロギング・オプションの指定:

  • LOGGINGはLOBを作成してLOBへの挿入を実行し、REDOログ・ファイルにログを記録することを示します。デフォルトはLOGGINGです。

  • NOLOGGINGはログを記録しないことを示します。

  • FILESYSTEM_LIKE_LOGGINGは、メタデータのみをログに記録することを示します。これはファイルシステムをジャーナルするメタデータと同様で、障害の平均リカバリ時間を削減できます。FILESYSTEM_LIKE_LOGGINGは、サーバー障害発生後、データが完全にリカバリ可能(インスタンス・リカバリ)であることを保証します。

    このオプションはBasicFiles LOBでは使用できません。

SecureFiles LOBについては、次が適用されます。

  • NOLOGGING設定はFILESYSTEM_LIKE_LOGGING.に内部的に変換されます

  • LOGGING設定は、ファイルシステムのデータ・ジャーナルと同様です。

  • LOGGING設定およびFILESYSTEM_LIKE_LOGGING設定は、完全なトランザクション・ファイルシステムを提供します。

BasicFiles LOB用のLOGGING/NOLOGGINGパラメータおよび読取り一貫性の保証を参照してください。

パーティション化されていないオブジェクトでは、この句に指定された値はオブジェクトに関連付けられたセグメントの実際の物理属性です。

パーティション・オブジェクトの場合、この句に指定する値は、PARTITION記述でロギング属性を指定しないかぎり、CREATE文(および後続のALTER ... ADD PARTITION文)で指定するすべてのパーティションに関連付けられたセグメントのデフォルトの物理属性となります。

注意:

LOBセグメントでは、NOLOGGING設定またはFILESYSTEM_LIKE_LOGGING設定を使用すると、バックアップ操作中にデータがディスクで変更される可能性があります。これにより、読取り非一貫性が発生します。これを防ぐには、LOGGINGをLOB記憶域に設定してLOBセグメントに対する変更をREDOログ・ファイルに保存する必要があります。

NOLOGGINGおよびFILESYSTEM_LIKE_LOGGINGでは、SecureFilesはインスタンス障害の後はリカバリ可能ですが、メディア障害後はリカバリできません。LOGGINGでは、SecureFilesはインスタンス障害とメディア障害の両方の後でリカバリ可能です。

データ保護、メディア障害、およびインスタンス障害の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

FREELISTSまたはFREELIST GROUPS

パーティション表でNULLセグメントに割り当てられるプロセス空きリスト、または空きリスト・グループの数をそれぞれ指定します。リリース12cまでの互換性モードでは、これらのパラメータはSecureFiles LOBの作成時に無視されます。

PCTVERSION

使用中のBasicFiles LOBデータ領域のうち、旧バージョンのLOBデータ・ページが占めることのできる割合を指定します。

リリース12cまでの互換モードでは、このパラメータはSecureFiles LOBの作成時に無視されます。

COMPRESSまたはNOCOMPRESS

COMPRESSオプションでは、拡張LOB圧縮をオンにし、NOCOMPRESSではオフにします。

表または索引圧縮を設定しても、拡張LOB圧縮には影響しないことに注意してください。

DEDUPLICATEまたはKEEP_DUPLICATES

DEDUPLICATEオプションでは拡張LOB重複除外が有効化され、LOB列、パーティション、またはサブパーティションの複数行で同一のSecureFiles LOBデータで同じデータ・ブロックを共有する必要があることを示します。データベースは同一の内容のSecureFiles LOBを単一のコピーに結合し、記憶域を削減して記憶域管理を簡素化します。このオプションの逆は、KEEP_DUPLICATESです。

ENCRYPTまたはDECRYPT

ENCRYPTオプションでは、SecureFiles暗号化をオンにし、Oracle Transparent Data Encryption(TDE)を使用してすべてのSecureFiles LOBデータを暗号化します。DECRYPTオプションでは、SecureFiles圧縮をオフにします。

CREATE TABLEおよびSecureFiles LOBの機能

CREATE TABLE文で使用するSecureFiles LOBの使用方法に関する注意と例に注意してください。

この項では、CREATE TABLE文で使用するSecureFiles LOBに固有の機能の使用方法に関する注意と例について説明します。

注意:

例で説明している句は、Backus Naur (BNF)表記法例4-1を参照しています。パラメータについては、CREATE TABLE LOB記憶域パラメータで説明しています。

ここでは、次の項目について説明します。

拡張LOB圧縮を使用したCREATE TABLE

特定の状況下では、拡張LOB圧縮とともにCREATE TABLE文を使用できます。

ここでは、次の項目について説明します。

拡張LOB圧縮での使用上の注意

CREATE TABLE文と拡張LOB圧縮を使用する場合は、次の点を考慮してください。

  • 拡張LOB圧縮は、サーバー側で実行され、LOBデータへのランダムな読取りおよび書込みを可能にします。utl_compressなどのクライアント側の圧縮ユーティリティでは、ランダム・アクセスは得られません。

  • 拡張LOB圧縮では、表または索引圧縮を有効にできません。逆に、表および索引圧縮でも拡張LOB圧縮を有効にできません。

  • LOWMEDIUMおよびHIGHオプションでは、異なる圧縮レベルを使用できます。圧縮度が高くなればなるほど、待機時間が長くなります。HIGH設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUMです。

    LOW圧縮オプションでは、ファイル圧縮でよく見られるCPUコストの大部分を軽減する非常に軽量の圧縮アルゴリズムが使用されます。LOWレベルで圧縮されたSecureFiles LOBにより、SecureFiles LOB記憶域を効率的に選択できるようになりました。LOWで圧縮されたSecureFiles LOBは、一般的にBasicFiles LOBよりもCPU時間と記憶域を消費せず、ディスクI/Oも減るためアプリケーションの実行を高速化できます。

  • 圧縮は、パーティション・レベルで指定できます。CREATE TABLE lob_storage_clauseでは、パーティションごとにパーティション化された表の圧縮を指定できます。

  • DBMS_LOB.SETOPTIONSプロシージャを使用して、SecureFiles LOBごとに圧縮を有効化および無効化できます。詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

CREATE TABLEおよび拡張LOB圧縮の例

次の例に、特定の圧縮シナリオでCREATE TABLE文を発行する方法を示します。

例4-2 LOW圧縮を使用したSecureFiles LOB列の作成

CREATE TABLE t1 (a CLOB)
    LOB(a) STORE AS SECUREFILE(
    COMPRESS LOW
    CACHE
    NOLOGGING
  );

例4-3 MEDIUM (デフォルト)圧縮を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB)
    LOB(a) STORE AS SECUREFILE (
         COMPRESS
         CACHE
         NOLOGGING
    );

例4-4 HIGH圧縮を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB)
    LOB(a) STORE AS SECUREFILE (
         COMPRESS HIGH
         CACHE
    );

例4-5 無効化された圧縮を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB)
    LOB(a) STORE AS SECUREFILE (
         NOCOMPRESS
         CACHE
    );

例4-6 1つのパーティションで圧縮を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( REGION VARCHAR2(20), a BLOB) 
     LOB(a) STORE AS SECUREFILE (
        CACHE
     )
     PARTITION BY LIST (REGION) (
          PARTITION p1 VALUES ('x', 'y')
               LOB(a) STORE AS SECUREFILE (
                   COMPRESS
                ),
          PARTITION p2 VALUES (DEFAULT)
     );

拡張LOB重複除外を使用したCREATE TABLE

CREATE TABLE文では、拡張LOB重複除外を使用できます。

ここでは、次の項目について説明します。

拡張LOB重複除外での使用上の注意

CREATE TABLEおよび拡張LOB重複除外を使用する場合は、次のことを考慮してください。

  • 同一のLOBがある場合、重複除外の対象となります。重複除外を使用可能にすることにより、コピー操作によるデータの重複を回避できます。

  • 重複検出は、LOBセグメント内で発生します。パーティション化およびサブパーティション化されたLOB列の場合、パーティションまたはサブパーティションにまたがって重複を検出することはできません。

  • 重複除外は、パーティション・レベルで指定できます。CREATE TABLE lob_storage_clauseを使用して、パーティションごとにパーティション化された表を指定できます。

  • DBMS_LOB.SETOPTIONSプロシージャを使用して、LOBごとに重複除外を有効化または無効化できます。

CREATE TABLEおよび拡張LOB重複除外の例

次の例に、特定の重複除外シナリオでCREATE TABLE文を発行する方法を示します。

例4-7 重複除外を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB)
    LOB(a) STORE AS SECUREFILE (
        DEDUPLICATE
        CACHE
    );

例4-8 無効化された重複除外を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB)
    LOB(a) STORE AS SECUREFILE (
         KEEP_DUPLICATES
         CACHE
    );

例4-9 1つのパーティションで重複除外を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( REGION VARCHAR2(20), a BLOB) 
     LOB(a) STORE AS SECUREFILE (
           CACHE
)
PARTITION BY LIST (REGION) (
     PARTITION p1 VALUES ('x', 'y')
          LOB(a) STORE AS SECUREFILE (
               DEDUPLICATE
          ),
     PARTITION p2 VALUES (DEFAULT)
);

例4-10 1つのパーティションで無効化された重複除外を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( REGION VARCHAR2(20), ID NUMBER, a BLOB)
     LOB(a) STORE AS SECUREFILE (
           DEDUPLICATE
           CACHE
)
PARTITION BY RANGE (REGION)
      SUBPARTITION BY HASH(ID) SUBPARTITIONS 2 (
        PARTITION p1 VALUES LESS THAN (51)
           lob(a) STORE AS a_t2_p1
           (SUBPARTITION t2_p1_s1 lob(a) STORE AS a_t2_p1_s1,
            SUBPARTITION t2_p1_s2 lob(a) STORE AS a_t2_p1_s2),
        PARTITION p2 VALUES LESS THAN (MAXVALUE)
           lob(a) STORE AS a_t2_p2 ( KEEP_DUPLICATES ) 
           (SUBPARTITION t2_p2_s1 lob(a) STORE AS a_t2_p2_s1,
            SUBPARTITION t2_p2_s2 lob(a) STORE AS a_t2_p2_s2)
      );

SecureFiles暗号化を使用したCREATE TABLE

CREATE TABLE文では、SecureFiles暗号化を使用できます。

ここでは、次の項目について説明します。

SecureFiles暗号化での使用上の注意

CREATE TABLEおよびSecureFiles暗号化を使用する場合は、次のことを考慮してください

  • 透過的データ暗号化(TDE)では、LOBデータ型の暗号化がサポートされます。

  • 暗号化は、ブロック・レベルで実行されます。

  • encrypt_algorithmは、暗号化アルゴリズムの名前を示します。有効なアルゴリズムは、AES192(デフォルト)、3DES168AES128およびAES256です。

  • 列の暗号化キーは、(指定されている場合は)PASSWORDから導出されます。

  • LOB暗号化のデフォルトはSALTです。NO SALTはサポートされていません。

  • LOB列内のすべてのLOBが暗号化されます。

  • DECRYPTは、LOBをクリアテキストのままにします。

  • LOBは、TDEと同様に列ごとのみで暗号化されます。LOB列内のすべてのパーティションが暗号化されます。

  • キー管理により、暗号化または復号化が制御されます。

  • TDEは、従来のインポートおよびエクスポート・ユーティリティまたはトランスポータブル表領域ベースのエクスポートではサポートされていません。かわりに、暗号化された列には、データ・ポンプexpdbおよびimpdbユーティリティを使用してください。

    関連項目:

    ADMINISTER KEY MANAGEMENT文を使用してTDEキーストアを作成する方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください

CREATE TABLEおよびSecureFiles暗号化の例

次の例に、特定の暗号化シナリオでCREATE TABLE文を発行する方法を示します。

例4-11 特定の暗号化アルゴリズムを使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB ENCRYPT USING 'AES128')
    LOB(a) STORE AS SECUREFILE (
         CACHE
    );

例4-12 すべてのパーティションで暗号化を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( REGION VARCHAR2(20), a BLOB)
  LOB(a) STORE AS SECUREFILE (
  ENCRYPT USING 'AES128'
  NOCACHE
  FILESYSTEM_LIKE_LOGGING
)
PARTITION BY LIST (REGION) (
PARTITION p1 VALUES ('x', 'y'),
PARTITION p2 VALUES (DEFAULT)
);

例4-13 パスワード・キーに基づいた暗号化を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB ENCRYPT IDENTIFIED BY foo)
    LOB(a) STORE AS SECUREFILE (
        CACHE
    );

暗号化オプションを文のLOB_deduplicate_clauseセクションで設定するため、次の例は同じ結果になります。

CREATE TABLE t1 (a CLOB)
    LOB(a) STORE AS SECUREFILE (
        CACHE
        ENCRYPT
        IDENTIFIED BY foo
    );

例4-14 無効化された暗号化を使用したSecureFiles LOB列の作成

CREATE TABLE t1 ( a CLOB )
    LOB(a) STORE AS SECUREFILE (
        CACHE DECRYPT
    );

LOB記憶域でのALTER TABLE

LOB記憶域は、ALTER TABLE文および特定のLOB関連パラメータを使用して変更できます。

ここでは、次の項目について説明します。

ALTER TABLEおよびLOB記憶域について

ALTER TABLEを使用して、LOB列の圧縮、重複除外または暗号化機能を有効にすることができます。

ALTER TABLE文はオンライン操作に対応しており(『Oracle Database SQL言語リファレンス』を参照)、Oracle DatabaseではSecureFiles LOB列でのパラレル操作がサポートされるため、この方法でリソースを有効に活用できます。

ALTER TABLEのかわりに、オンライン再定義を使用してこれらの機能を1つ以上有効にすることができます。ALTER TABLEと同じく、SecureFiles LOB列のオンライン再定義もパラレルで実行できます。オンライン再定義の詳細はBasicFiles LOBからSecureFiles LOBへの列の移行DBMS_REDEFINITIONパッケージの詳細は『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

SHRINKオプションはSecureFiles LOBではサポートされていません。

ALTER TABLE文のBNF

このBackus Naur (BNF)表記法は、LOB固有のパラメータが太字で示された状態でALTER TABLEの構文を提供します。

パラメータの詳細とALTER TABLE文についてはCREATE TABLE LOB記憶域パラメータを参照し、完全な参照については『Oracle Database SQL言語リファレンス』を参照してください。

ALTER TABLE [ schema.]table
  [ alter_table_properties
  | column_clauses
  | constraint_clauses
  | alter_table_partitioning
  | alter_external_table_clauses
  | move_table_clause
  ]
    [ enable_disable_clause
    | { ENABLE | DISABLE }
      { TABLE LOCK | ALL TRIGGERS }
    [ enable_disable_clause
    | { ENABLE | DISABLE }
      { TABLE LOCK | ALL TRIGGERS }
    ]...
  ] ;
 
 
<column_clauses> ::=
  { { add_column_clause
    | modify_column_clause
    | drop_column_clause
    }
    [ add_column_clause
    | modify_column_clause
    | drop_column_clause
    ]...
  | rename_column_clause
  | modify_collection_retrieval
    [ modify_collection_retrieval ]...
  | modify_LOB_storage_clause
    [ modify_LOB_storage_clause ] ...
  | alter_varray_col_properties
    [ alter_varray_col_properties ]
  }
 
<modify_LOB_storage_clause> ::=
MODIFY LOB (LOB_item) ( modify_LOB_parameters )
 
<modify_LOB_parameters> ::=
{ storage_clause
| PCTVERSION integer
| FREEPOOLS integer
| REBUILD FREEPOOLS
| LOB_retention_clause
| LOB_deduplicate_clause
| LOB_compression_clause
| { ENCRYPT encryption_spec | DECRYPT }
| { CACHE 
  | { NOCACHE | CACHE READS } [ logging_clause ]
  }
| allocate_extent_clause
| shrink_clause
| deallocate_unused_clause
} ...

ALTER TABLE LOB記憶域パラメータ

LOB記憶域に関連するALTER TABLE文の特定のパラメータを使用する必要があります。

パラメータは、示されているとおり、BasicFiles LOBまたはSecureFiles LOB記憶域に固有のものです。

表4-2 LOBに関連するALTER TABLE文のパラメータ

パラメータ 説明

RETENTION

指定した方法でLOBデータの旧バージョンをLOB列に格納するように設定します。RETENTIONの変更は、ALTER TABLE文の実行後に作成された領域にのみ影響します。

COMPRESSまたはNOCOMPRESS

拡張LOB圧縮を有効化または無効化します。LOBセグメント内のすべてのLOBが、この新規設定で変更されます。

DEDUPLICATEまたはKEEP_DUPLICATES

拡張LOB重複除外を有効化または無効化します。

DEDUPLICATEオプションを使用して、LOB列内の2つ以上の行の同一LOBデータ間で、同じデータ・ブロックが共有されるように指定できます。データベースは同一の内容のLOBを単一のコピーに結合し、記憶域を削減して記憶域管理を簡素化します。このオプションの逆は、KEEP_DUPLICATESです。

ENCRYPTまたはDECRYPT

SecureFiles LOB暗号化を有効化または無効化します。LOBセグメント内のすべてのLOBを、この新規設定で変更します。LOBセグメントは、LOB暗号化を有効化または無効化する目的でのみ変更可能です。つまり、ALTERは、暗号化アルゴリズムまたは暗号化キーを更新する目的には使用できません。暗号化アルゴリズムまたは暗号化キーは、ALTER TABLE REKEY構文を使用して更新します。

ALTER TABLE SecureFiles LOB機能

SecureFiles LOBに固有の特定の機能は、ALTER TABLE文と連携して機能します。

これらのSecureFiles LOB機能は、使用上の注意や例で説明されているように、ALTER TABLEと連携して機能します。

注意:

例で説明している句は、Backus Naur (BNF)表記法ALTER TABLE文のBNFを参照しています。

パラメータについては、ALTER TABLE LOB記憶域パラメータで説明しています。

ここでは、次の項目について説明します。

拡張LOB圧縮を使用したALTER TABLE

拡張LOB圧縮は、ALTER TABLE文と連携して機能します。

ここでは、次の項目について説明します。

拡張LOB圧縮での使用上の注意

ALTER TABLEおよび拡張LOB圧縮を使用する場合は、次のことを考慮してください。

  • この構文は、LOB列の圧縮モードを変更します。

  • DBMS_LOB.SETOPTIONSプロシージャを使用して、LOBごとに圧縮を有効化または無効化できます。

  • 圧縮は、表レベルまたはパーティション・レベルのいずれかで指定できます。

  • LOWMEDIUMおよびHIGHオプションでは、異なる圧縮レベルを使用できます。圧縮度が高くなればなるほど、待機時間が長くなります。HIGH設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUMです。拡張LOB圧縮を使用したCREATE TABLEを参照してください。

ALTER TABLEおよび拡張LOB圧縮の例

次の例に、特定の圧縮シナリオでALTER TABLE文を発行する方法を示します。

例4-15 SecureFiles LOB列の変更によるLOW圧縮の有効化

ALTER TABLE t1 MODIFY
   LOB(a) (
           COMPRESS LOW
   );

例4-16 SecureFiles LOB列の変更による圧縮の無効化

ALTER TABLE t1 MODIFY 
    LOB(a) (
         NOCOMPRESS
    );

例4-17 SecureFiles LOB列の変更によるHIGH圧縮の有効化

ALTER TABLE t1 MODIFY 
    LOB(a) (
         COMPRESS HIGH
    );

例4-18 SecureFiles LOB列の変更による1つのパーティションでの圧縮の有効化

ALTER TABLE t1 MODIFY PARTITION p1
    LOB(a) (
         COMPRESS HIGH
    );

拡張LOB重複除外を使用したALTER TABLE

拡張LOB重複除外は、ALTER TABLEと連携して機能します。

ここでは、次の項目について説明します。

拡張LOB重複除外での使用上の注意

ALTER TABLEおよび拡張LOB重複除外を使用する場合は、次のことを考慮してください。

  • ALTER TABLE構文は、LOBレベルの重複除外を有効化または無効化できます。

  • この構文は、LOB列の重複除外モードを変更します。

  • DBMS_LOB.SETOPTIONSプロシージャを使用して、LOBごとに重複除外を有効化または無効化できます。

  • 重複除外は、表レベルまたはパーティション・レベルで指定できます。複数のパーティション化されたLOBにまたがって重複除外を実行することはできません。

ALTER TABLEおよび拡張LOB重複除外の例

次の例に、特定の重複除外シナリオでALTER TABLE文を発行する方法を示します。

例4-19 SecureFiles LOB列の変更による重複除外の無効化

ALTER TABLE t1 MODIFY 
     LOB(a) (
         KEEP_DUPLICATES 
    );

例4-20 SecureFiles LOB列の変更による重複除外の有効化

ALTER TABLE t1 MODIFY 
    LOB(a) (
         DEDUPLICATE
    );

例4-21 SecureFiles LOB列の変更による1つのパーティションでの重複除外の有効化

ALTER TABLE t1 MODIFY PARTITION p1
    LOB(a) (
         DEDUPLICATE
    );

SecureFiles暗号化を使用したALTER TABLE

SecureFiles暗号化は、ALTER TABLE文と連携して機能します。

ここでは、次の項目について説明します。

SecureFiles暗号化での使用上の注意

ALTER TABLEおよびSecureFiles暗号化を使用する場合は、次のことを考慮してください。

  • ALTER TABLEでは、SecureFiles暗号化を有効化および無効化できます。この構文では、新しいキーまたはアルゴリズムを使用してLOB列に再度キーを付けることもできます。

  • ENCRYPTおよびDECRYPTオプションは、指定したSecureFiles LOB列内のすべてのLOBの暗号化を有効化または無効化します。

  • LOB暗号化のデフォルトはSALTです。NO SALTはサポートされていません。

  • DECRYPTオプションは、暗号化された列をクリアテキストの形式に変換します。

  • キー管理により、暗号化または復号化が制御されます。

  • LOBは、列ごとのみで暗号化されます。パーティション化されたLOBは、すべてのパーティションが暗号化されるか暗号化されないかのいずれかです。

ALTER TABLEおよびSecureFiles暗号化の例

次の例に、特定の暗号化シナリオでALTER TABLE文を発行する方法を示します。

例4-22 特定のアルゴリズムに基づいた暗号化によるSecureFiles LOB列の変更

3DES168を使用して、LOBの暗号化を有効化します。

ALTER TABLE t1 MODIFY 
      ( a CLOB ENCRYPT USING '3DES168');

これは、3DES168を使用してLOBの暗号化を有効化する別の例です。

ALTER TABLE t1 MODIFY LOB(a)
      (ENCRYPT USING '3DES168');

例4-23 パスワード・キーに基づいた暗号化によるSecureFiles LOB列の変更

SecureFiles LOB列の暗号化を有効化し、パスワードを使用して暗号化キーを作成します。

ALTER TABLE t1 MODIFY 
    ( a CLOB ENCRYPT IDENTIFIED BY foo);

例4-24 暗号化に再度キーを付けることによるSecureFiles LOB列の変更

新しいキーを使用してLOB列を再暗号化するには、表に再度キーを付けます。

ALTER TABLE t1 REKEY USING '3DES168';

初期化、互換性およびアップグレード

適切な互換性パラメータを使用してLOB初期化を実行する必要があります。

ここでは、次の項目について説明します。

互換性およびアップグレード

このドキュメントで説明されているすべての機能は、互換性を11.2.0.0.0以上に設定した場合に有効になります。11.2.0.0.0に設定した後は、ダウングレードはできません。

BasicFiles LOBをSecureFiles LOBにアップグレードする場合、データのアップグレードに通常使用される一般的な方法(CTAS/ITAS、オンライン再定義、エクスポート/インポート、列間でのコピー、またはビューおよび新規列の使用など)を使用する必要があります。これらのソリューションの多くは、入力LOB列のデータで使用されるディスク領域を2回使用する必要があります。ただし、パーティション化して、これらの操作をパーティションごとに実行することにより、必要なディスク領域を減らすことができます。

SecureFiles LOB用の初期化パラメータ

データベース管理者としては、DB_SECUREFILE初期化パラメータを使用して、COMPATIBILITYパラメータによってデフォルトで設定される初期設定を変更できます。

初期設定を変更することにより、SecureFiles LOBまたはBasicFiles LOBが作成または許可される状況を変更します。DB_SECUREFILEパラメータは通常、init.oraファイルで設定されます。互換性およびアップグレードを参照してください。

関連項目:

『Oracle Databaseリファレンス』

DB_SECUREFILE初期化パラメータは動的であり、ALTER SYSTEM文を使用して変更できます。例4-25に、パラメータ値を変更するフォーマットを示します。

DB_SECUREFILEの有効値は次のとおりです。

  • NEVERでは、SecureFiles LOBが作成されません。NEVERが指定された場合、SecureFiles LOBとして指定されたLOBはすべて、BasicFiles LOBとして作成されます。記憶域オプションが指定されていない場合、BasicFiles LOBのデフォルト値が使用されます。すべてのSecureFiles LOB特定の記憶域オプションおよび機能(圧縮、暗号化、重複除外など)で例外が発生します。

  • IGNOREでは、SecureFiles LOBは許可されず、BasicFiles LOBをSecureFiles LOBオプションで強制実行する原因となるエラーは無視されます。IGNOREが指定された場合、SECUREFILEキーワードおよびすべてのSecureFiles LOBオプションは無視されます。

  • PERMITTEDでは、ユーザーが指定していれば、SecureFiles LOBの作成が許可されます。それ以外の場合は、BasicFiles LOBが作成されます。

  • PERFERREDでは、BasicFiles LOBがLOBまたは親LOB (LOBがパーティションまたはサブパーティション内にある場合)で明示的に指定されていなければ、SecureFiles LOBの作成が試行されます。PREFERREDは、Oracle Database 12c以降のデフォルト値です。

  • ALWAYSでは、SecureFiles LOBを作成しようとしますが、SECUREFILEパラメータが明示的に指定されていないかぎり、ASSM表領域にないLOBをBasicFiles LOBとして作成します。指定されるBasicFiles LOB記憶域オプションはいずれも無視され、指定されていないすべての記憶域オプションには、SecureFiles LOBのデフォルト値が使用されます。

  • FORCEでは、ユーザーがBASICFILEを指定しても、すべてのLOBをSecureFiles LOBとして作成しようとします。このオプションはお薦めしません。かわりにPREFERREDまたはALWAYSを使用する必要があります。

例4-25 ALTER SYSTEMによるDB_SECUREFILEパラメータの設定

ALTER SYSTEM SET DB_SECUREFILE = 'ALWAYS';

BasicFiles LOBからSecureFiles LOBへの列の移行

複数の方法を使用してLOB列を移行できます。

ここでは、次の項目について説明します。

SecureFiles LOBへの移行時のREDOデータの生成防止

BasicFiles LOB列を移行するとREDOデータが生成され、パフォーマンス障害の原因となる場合があります。

移行処理中の表に対するREDOがログに記録されるのは、CREATE TABLE文にLOGGING句が設定されている場合のみです。

BasicFiles LOBからSecureFiles LOBへ変換中の列に対するREDOがログに記録されるのは、SecureFiles LOB列の記憶域設定がLOGGINGの場合のみです。LOB列のロギング設定(LOGGINGまたはNOLOGGING)は、LOBが作成された表領域から継承されます。

SecureFiles LOBへの移行中のREDO領域の生成は防止できます。

  • 任意の新しいSecureFiles LOB列に対してNOLOGGING記憶域パラメータを指定します。

    移行の完了後に、LOGGINGをオンにすることができます。

BasicFiles LOBのためのオンライン再定義

BasicFiles LOBからSecureFiles LOBへの移行では、メソッドとしてオンライン再定義をお薦めします。

オンライン再定義は表またはパーティション・レベルで実行できます。

オンライン再定義のメリット

  • 表またはパーティションをオフラインにする必要がない。

  • パラレルで実行可能。

オンライン再定義のデメリット

  • 必要な表またはパーティション全体、およびすべてのLOBセグメントに等しい追加の記憶域が必要

  • グローバル索引の再作成が必要。

BasicFiles LOBを含む表の移行時のオンライン再定義の例

オンライン再定義を使用して表を移行できます。

オンライン再定義には表をオフラインにする必要がないメリットがありますが、表で使用している領域に等しいか、それよりも大きな追加の空き領域が必要です。例4-26に、オンライン再定義を使用して表を移行する方法を示します。

例4-26 オンライン再定義の例

REM Grant privileges required for online redefinition.
GRANT EXECUTE ON DBMS_REDEFINITION TO pm;
GRANT ALTER ANY TABLE TO pm;
GRANT DROP ANY TABLE TO pm;
GRANT LOCK ANY TABLE TO pm;
GRANT CREATE ANY TABLE TO pm;
GRANT SELECT ANY TABLE TO pm;
REM Privileges required to perform cloning of dependent objects.
GRANT CREATE ANY TRIGGER TO pm;
GRANT CREATE ANY INDEX TO pm;
CONNECT pm
//  ALTER SESSION FORCE parallel dml;
DROP TABLE cust;
CREATE TABLE cust(c_id NUMBER PRIMARY KEY,
    c_zip NUMBER,
    c_name VARCHAR(30) DEFAULT NULL,
    c_lob CLOB
);
INSERT INTO cust VALUES(1, 94065, 'hhh', 'ttt');
-- Creating Interim Table
-- There is no requirement to specify constraints because they are
-- copied over from the original table.
CREATE TABLE cust_int(c_id NUMBER NOT NULL,
    c_zip NUMBER,
    c_name VARCHAR(30) DEFAULT NULL,
    c_lob CLOB
) LOB(c_lob) STORE AS SECUREFILE (NOCACHE FILESYSTEM_LIKE_LOGGING);
DECLARE
    col_mapping VARCHAR2(1000);
BEGIN
-- map all the columns in the interim table to the original table
    col_mapping :=
    'c_id c_id , '||
    'c_zip c_zip , '||
    'c_name c_name, '||
    'c_lob c_lob';
DBMS_REDEFINITION.START_REDEF_TABLE('pm', 'cust', 'cust_int', col_mapping);
END;
/
DECLARE
    error_count pls_integer := 0;
BEGIN
    DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('pm', 'cust', 'cust_int',
      1, TRUE,TRUE,TRUE,FALSE, error_count);
    DBMS_OUTPUT.PUT_LINE('errors := ' || TO_CHAR(error_count));
END;
/
EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('pm', 'cust', 'cust_int');
-- Drop the interim table
DROP TABLE cust_int;
DESC cust;
-- The following insert statement fails. This illustrates
-- that the primary key constraint on the c_id column is
-- preserved after migration.
INSERT INTO cust VALUES(1, 94065, 'hhh', 'ttt');
SELECT * FROM cust;

SecureFiles LOBのパラレル再定義

パラレル実行に十分なリソースがある場合は、SecureFiles LOB列の再定義をパラレルに実行できます。

オンライン再定義のパラレル実行を設定するには、ALTER SESSIONを実行します。

  • 例4-26の最後のセクションにあるCONNECT文の後ろに次の文を追加します。

    ALTER SESSION FORCE PARALLEL DML;

LOBおよびDBFS用のPL/SQLパッケージ

BasicFiles LOBおよびSecureFiles LOBとともに使用できるPL/SQLパッケージがあります。

SecureFiles LOBおよびDBFSに対応するために行われた変更は強調されています。

ここでは、次の項目について説明します。

SecureFiles LOBおよびDBFSで使用するDBMS_LOBパッケージ

DBMS_LOBパッケージでは、LOBの一部または完全なLOBを稼働、アクセスおよび操作するためのサブプログラムを提供しています。

DBMS_LOBパッケージはSecureFiles LOBとBasicFiles LOBのどちらにも適用されます。このパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』DBMS_LOBパッケージを参照してください。

「データベース・ファイルシステムの概要」で紹介されている、SecureFiles LOBとデータベース・ファイルシステム(DBFS)の追加によってDBMS_LOB定数およびサブプログラムに対して行われる変更の詳細は、「SecureFiles LOBおよびDBFSで使用するDBMS_LOB定数」および「SecureFiles LOBおよびDBFSで使用されるDBMS_LOBサブプログラム」を参照してください。

SecureFiles LOBおよびDBFSで使用するDBMS_LOB定数

特定の定数はDBFSリンク・インタフェースをサポートしています。

表4-3は、DBFSリンクのインタフェースをサポートする定数を示しています。PL/SQL DBMS_LOBパッケージで使用される定数の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

表4-3 DBFSリンク・インタフェースをサポートするDBMS_LOB定数

定数 説明
DBFS_LINK_NEVER

DBFSリンクの状態値

DBFS_LINK_YES

DBFSリンクの状態値

DBFS_LINK_NO

DBFSリンクの状態値

DBFS_LINK_CACHE

COPY_DBFS_LINK()およびMOVE_DBFS_LINK()で使用されるフラグ。

DBFS_LINK_NOCACHE

COPY_DBFS_LINK()およびMOVE_DBFS_LINK()で使用されるフラグ。

DBFS_LINK_PATH_MAX_SIZE

DBFSパラメータの最大長(1024)。

CONTENTTYPE_MAX_SIZE

コンテンツ・タイプの最大1バイトのASCII文字(128)。

SecureFiles LOBおよびDBFSで使用されるDBMS_LOBサブプログラム

DBMS_LOBサブプログラムには一定期間にわたっていくつかの変更が加えられていることに注意してください。

表4-4は、PL/SQLパッケージDBMS_LOBサブプログラムに加えられた変更をまとめたものです。

Oracle Database 11gリリース2より前から存在している一部のDBMS_LOB操作では、LOBがDBFSリンクの場合に例外エラーが発生することに注意してください。この問題を解決するには、アプリケーションでコールする前に、DBMS_LOB.COPY_FROM_LINKプロシージャをコールしてDBFSリンクをLOBと明示的に置換し、アプリケーションを変更します。コールが完了すると、必要に応じてDBMS_LOB.MOVE_TO_DBFS_LINKプロシージャにより、更新されたLOBがDBFSに戻されます。

Oracle Database 11gリリース2より前から存在しているその他のDBMS_LOB操作は、ストリーミングをサポートするファイルシステムにDBFSリンクが存在する場合に、透過的に動作します。ストリーミングがサポートされていないか無効の場合、これらの操作は失敗することに注意してください。

表4-4 DBMS_LOBのサブプログラム

サブプログラム 説明

APPEND

ソースLOBのコンテンツを宛先LOBに追加します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

COMPARE

2つのLOBの全体または一部を比較します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

CONVERTTOBLOB

CLOBまたはNCLOBの文字データを指定したキャラクタ・セットに変換し、バイナリ形式で宛先BLOBに書き込みます。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

CONVERTTOCLOB

BLOBのバイナリ・データを指定したキャラクタ・セットに変換し、文字形式で宛先CLOBまたはNCLOBに書き込みます。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

COPY

ソースLOBの全体または一部を宛先LOBにコピーします。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

COPY_DBFS_LINK

既存のDBFSを新しいLOBにコピーします。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

COPY_FROM_DBFS_LINK

指定したLOBデータをDBFS HSMストアからデータベースにコピーします。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

DBFS_LINK_GENERATE_PATHNAME

DBFSリンクを作成するための一意のファイル・パス名を戻します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

ERASE

LOBの全体または一部を消去します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

FRAGMENT_DELETE

LOBの指定したフラグメントを削除します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

FRAGMENT_INSERT

データのフラグメントをLOBに挿入します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

FRAGMENT_MOVE

LOBのフラグメントをLOB内の場所間で移動します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

FRAGMENT_REPLACE

LOBのフラグメントを新しいデータで置き換えます。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

GET_DBFS_LINK

LOBのDBFSパス名を戻します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

GET_DBFS_LINK_STATE

LOBのリンクの状態を戻します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

GETCONTENTTYPE

LOBデータのコンテンツ・タイプ文字列を取得します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

GETOPTIONS

特定のLOBの設定済のオプションを取得します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

対応するOCI LOB関数OCILobGetContentType()の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』も参照してください。

ISSECUREFILE

LOBがSecureFiles LOBかどうかを判別します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

LOADBLOBFROMFILE

BFILEデータをBLOBにロードします。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

LOADCLOBFROMFILE

BFILEデータをCLOBにロードします。

CLOBがリンクされると、例外が発生します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

LOADFROMFILE

BFILEデータをLOBにロードします。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

MOVE_TO_DBFS_LINK

指定したLOBデータをデータベースからDBFS HSMストアに移動します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

READ

LOBからデータを読み取ります。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

SET_DBFS_LINK

LOBとDBFSパス名を関連付けます。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

SETCONTENTTYPE

LOBデータのコンテンツ・タイプ文字列を戻します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

SETOPTIONS

特定のLOBで新しいオプションを設定します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

対応するOCI LOB関数OCILobSetContentType()の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』も参照してください。

SUBSTR

LOBのフラグメントを戻します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

TRIM

指定した長さまでLOBを切り捨てます。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

WRITE

LOBにデータを書き込みます。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

WRITEAPPEND

データをLOBの終わりに追加します。

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照。

DBMS_SPACEパッケージ

DBMS_SPACE PL/SQLパッケージを使用して、セグメントの増加と領域の要件を分析できます。

DBMS_SPACE PL/SQLパッケージでは、セグメントの増加および領域の要件を分析できます。

DBMS_SPACE.SPACE_USAGE()

既存のDBMS_SPACE.SPACE_USAGEプロシージャがオーバーロードされ、LOB領域使用量に関する情報が戻されます。

これは、LOBセグメント内のすべてのSecureFiles LOBによって使用されている、ブロック内のディスク領域容量を戻します。詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。