2.1 LOB列のある表の作成

CREATE TABLE文またはALTER TABLE ADD列文を使用して、新しいLOB列を作成できます。この項では、LOBに対する基本的なDDL操作について説明します。

次に、オブジェクト型のLOBやネストした表など、様々なLOB型の列を含む表を作成する例を示します。
CREATE USER pm identified by password;
GRANT CONNECT, RESOURCE to pm IDENTIFIED BY pm;
CONNECT pm/pm

-- Create an object type with a LOB
CREATE TYPE adheader_typ AS OBJECT ( 
   header_name    VARCHAR2(256),  
   creation_date  DATE,  
   header_text    VARCHAR(1024), 
   logo           BLOB );

CREATE TYPE textdoc_typ AS OBJECT ( 
   document_typ   VARCHAR2(32), 
   formatted_doc  BLOB);

-- Create a nested table type of Object type containing a LOB
CREATE TYPE Textdoc_ntab AS TABLE of textdoc_typ;

-- Create a table of Object type, and specify a default value for LOB column
CREATE TABLE adheader_tab of adheader_typ (
    logo DEFAULT EMPTY_BLOB(),
    CONSTRAINT header_name CHECK (header_name IS NOT NULL),
     header_text DEFAULT NULL);
-- Create a table with columns of different LOB types, 
-- and of object type with LOBs, and nested table containing LOB
CREATE TABLE print_media
(product_id NUMBER(6), 
ad_id NUMBER(6),
ad_composite BLOB,
ad_sourcetext CLOB, 
ad_finaltext CLOB,
ad_fltextn NCLOB,
ad_testdocs_ntab textdoc_tab,
ad_photo BLOB, 
ad_graphic BFILE,
ad_header adheader_typ,
press_release LONG) NESTED TABLE ad_textdocs_ntab STORE AS textdocs_nestedtab;

CREATE UNIQUE INDEX printmedia_pk
  ON print_media (product_id, ad_id);

図2-1 print_media表

print_media表
LOBに対して、次のような高度なDDL操作を実行することもできます。
  • LOB記憶域パラメータの指定: LOBデータが格納されるSECUREFILE/BASICFILETABLESPACEなどのパラメータ、ENABLE/DISABLE STORAGE IN ROWRETENTION、キャッシュ、ロギングなどを指定して、デフォルトのLOB記憶域設定をオーバーライドできます。COMPRESSIONDEDUPLICATIONおよびENCRYPTIONなどのSecureFile固有のパラメータを指定することもできます。
  • 既存のLOB列の変更: ALTER TABLE MODIFY LOB構文を使用して、LOBデータの移動を必要としないLOB記憶域パラメータを変更でき、ALTER TABLE MOVE LOB構文を使用して、LOBデータの移動を必要とするLOB記憶域パラメータを変更できます。
  • LOB列に対する索引の作成: LOB列に対してファンクション索引またはドメイン索引を作成できます。LOB列には、Bツリーまたはビットマップ索引を構築できません。
  • LOB列を含む表のパーティション化: Oracleでサポートされるすべてのパーティション化スキームは、LOBで完全にサポートされます。
  • 索引構成表でLOBを使用します。

関連項目:

永続LOB: 拡張DDL