Exemple create clob

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus d'exemple
Rôle Création d'une table avec colonnes CLOB
Voir aussi Lob dump clob · Lob fragmentation user

Exemple create clob illustre la création d'une table contenant plusieurs colonnes de type CLOB, avec un stockage LOB dédié (tablespace et index de segment LOB séparés de la table elle-même).

Le titre de cette page est resté en français dans la bibliothèque source, alors que les scripts voisins de type « Example... » sont en anglais — c'est une incohérence historique de nommage conservée telle quelle lors de la migration.

Script

DROP TABLE xml_documents;

CREATE TABLE xml_documents (
    docname     VARCHAR2(200)
  , xmldoc      CLOB
  , log         CLOB
  , timestamp   DATE
)
LOB (xmldoc) STORE AS xml_documents_lob (
    TABLESPACE lob_data
    STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0 MAXEXTENTS UNLIMITED)
    INDEX xml_documents_lob_idx
)
LOB (log) STORE AS xml_log_lob (
    TABLESPACE lob_data
    STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0 MAXEXTENTS UNLIMITED)
    INDEX xml_log_lob_idx
)
TABLESPACE users
STORAGE (
    INITIAL     256K
    NEXT        256K
    MINEXTENTS  1
    MAXEXTENTS  121
    PCTINCREASE 0
);

Chaque colonne CLOB (xmldoc, log) reçoit sa propre clause LOB ... STORE AS, avec son propre segment de données (xml_documents_lob, xml_log_lob) et son propre index de LOB (xml_documents_lob_idx, xml_log_lob_idx) — isoler les LOB volumineux du tablespace de la table (ici users) évite qu'ils ne fragmentent son stockage et permet de les sauvegarder/dimensionner indépendamment.

Depuis Oracle8i, la clause INDEX ne sert plus qu'à nommer le segment d'index du LOB : contrairement à Oracle8, toute clause de tablespace ou de stockage placée à l'intérieur du bloc INDEX est ignorée. Le tablespace de l'index de LOB suit systématiquement celui du segment de données LOB déclaré juste au-dessus.

Voir aussi