Architecture Oracle : Les tables


précédentsommaire

5. Syntaxe de l'instruction ALTER TABLE

5.1. Syntaxe 9i, 10g

Est présentée dans ce chapitre la syntaxe de l'instruction ALTER TABLE des versions Oracle 9i et 10g.

Pour obtenir des informations sur les versions antérieures, consultez la documentation officielle,
notamment la syntaxe ALTER TABLE de la version Oracle 8i.





ALTER TABLE

Image non disponible

[column_clauses] [constraint_clauses] [alter_table_partitioning] [move_table_clause] [alter_enable_disable_clause]



alter_table_properties

Image non disponible

[physical_attributes_clause] [logging_clause] [data_segment_compression] [allocate_extent_clause] [deallocate_unused_clause] [upgrade_table_clause] [records_per_block_clause] [parallel_clause] [row_movement_clause]



physical_attributes_clause

Image non disponible

[storage_clause]

PCTUSED indique (en pourcentage) le niveau en deçà duquel le bloc sera disponible (affichage en début de freelist) pour de nouvelles insertions
PCTFREE indique (en pourcentage) l'espace que l'on souhaite conserver dans le bloc pour les mises à jour
INITRANS defini le nombre initial de transactions allouées à chaque bloc
MAXTRANS indique combien de transactions (maxi : 255) peuvent réaliser simultanément des changement dans un bloc



supplemental_log_grp_clause

Image non disponible

Cette clause permet d'ajouter ou de supprimer des groupes supplémentaires de redo log.
ADD SUPPLEMENTAL LOG GROUP permet d'ajouter des groupes de redo log
DROP SUPPLEMENTAL LOG GROUP permet de supprimer des groupes de redo log



allocate_extent_clause

Image non disponible

Cette clause permet d'allouer un nouvel extent sur une table, une partition ou sous-partition, la zone de débordement d'une IOT ou un index LOB.
Il n'est pas possible d'allouer un nouvel extent pour une table temporaire ou pour une partition par tranche (range) ou une partition composite.
L'utilisation de cette clause ne change pas les valeurs actuelles de NEXT et PCTINCREASE et n'affecte donc pas la taille de l'extent suivant alloué par Oracle.
SIZE spécifie la taille du nouvel extent en octets (suffixer la valeur avec K pour l'exprimer en Ko ou M pour l'exprimer en Mo)
DATAFILE 'filename' indique le datafile ou l'on souhaite créer l'extent
INSTANCE integer (valide uniquement avec Real Application Clusters) rend l'extent disponible dans le groupe de freelist associé à l'instance spécifiée



deallocate_unused_clause

Image non disponible

Cette clause permet de désallouer l'espace inutilisé en fin de table, de partition ou sous-partition, de zone de débordement d'une IOT ou d'un index LOB.
KEEP spécifie le nombre d'octets au dela du high water mark que le segment doit avoir après la désallocation
Après cette opération, Oracle positionne la valeur du paramètre NEXT à la taille du dernier extent qui a été désalloué.



upgrade_table_clause

Image non disponible

[column_properties]

Cette clause applicable sur les tables objet ou sur les colonnes objet des tables standard, permet de convertir les données conformément à la nouvelle version du type de référence.
INCLUDING DATA demande la conversion des données en conformité avec la nouvelle version du type
Il est possible de spécifier les informations de stockage via les clauses column_properties et LOB_partition_storage.
Pour obtenir les informations sur les tables dont les données sont basées sur une ancienne version du type, interrogez la colonne DATA_UPGRADED de la vue USER_TAB_COLUMNS.
NOT INCLUDING DATA demande que le contenu de la colonne reste inchangé



records_per_block_clause

Image non disponible

Cette clause permet de définir comment Oracle restreint le nombre d'enregistrements que peut contenir un bloc.
Cela permet de s'assurer que tout nouvel index bitmap créé sur la table sera le plus compressé possible.
MINIMIZE demande à Oracle de calculer le plus grand nombre d'enregistrements dans tous les blocs et limiter les futures insertions de telle manière qu'aucun bloc ne puisse contenir plus d'enregistrements
Oracle recommande de disposer d'un échantillon représentatif de données dans la table avant de spécifier MINIMIZE.
MINIMIZE ne peut pas être employé sur une table vide.
NOMINIMIZE (défaut) désactive la fonctionnalité



row_movement_clause

Image non disponible

Cette clause permet d'indiquer si les lignes d'une table peuvent être déplacées lors d'une compression de segment ou d'une mise à jour de données partitionnées.
ENABLE indique que l'on autorise le déplacement des lignes
DISABLE indique que l'on interdit le déplacement des lignes
Si vous stockez les ROWID d'une table dans votre application, interdisez le déplacement des lignes avec la clause DISABLE.
Vous ne pouvez pas spécifier cette clause pour une IOT non partitionnée.



alter_iot_clause

Image non disponible

[index_org_table_clause] [alter_overflow_clause]

Cette clause permet de modifier la définition d'une table organisée en index.
COALESCE demande à Oracle de combiner les blocs d'index de la clé primaire lorsque c'est possible pour libérer des blocs (peut être spécifié avec la clause PARALLEL)



index_org_table_clause

Image non disponible

[mapping_table_clause] [key_compression] [index_org_overflow_clause]

Cette clause permet de modifier la définition d'une table organisée en index.
PCTTHRESHOLD integer représente le pourcentage d'espace d'un bloc d'index réservé au stockage d'une ligne
Il doit être suffisant pour stocker la clé primaire.
Toutes les colonnes qui ne rentrent pas dans cet espace sont placées dans une zone de débordement.
integer doit être compris entre 1 et 50 (défaut)
PCTTHRESHOLD ne peut pas être utilisé sur une partition individuelle d'une IOT.



mapping_table_clause

Image non disponible

Utilisez cette clause pour stocker les ROWID dans une table relationnelle. cette table sera nécessaire pour créer un index bitmap sur l'IOT.



key_compression

Image non disponible

Cette clause permet d'activer la compression de clé sur l'IOT.
COMPRESS active la compression de la clé primaire
COMPRESS integer active la compression avec les integer premières colonnes de la clé primaire
NOCOMPRESS (défaut) interdit la compression de la clé primaire
Au niveau partition, la clause COMPRESS n'accepte pas le paramètre integer.



index_org_overflow_clause

Image non disponible

[segment_attributes_clause]

Cette clause permet de définir la zone de débordement d'une IOT dans laquelle seront placées les colonnes qui dépassent la valeur de PCTTHRESHOLD.
Lors de la création de l'IOT, Oracle évalue la taille maximum d'une ligne. si celle-ci ne tient pas dans le pourcentage PCTTHRESHOLD et que vous n'avez pas défini de zone d'overflow, Oracle génère une erreur.
Tous les attributs physiques et les clauses de stockage définis après le mot clé OVERFLOW s'appliquent donc aux colonnes placées dans la zone de débordement.
Si la table contient des colonnes LOB, celles-ci seront stockées en dehors de la table, même si la clause OVERFLOW est spécifiée.
INCLUDING column_name indique à partir de quelle colonne les données seront stockées dans la zone de débordement



segment_attributes_clause

Image non disponible

[physical_attributes_clause] [logging_clause]

tablespace défini le nom du tablespace dans lequel sera créée la table. si celui ci est homis, la table sera créée dans le tablespace par défaut de l'utilisateur



alter_overflow_clause

Image non disponible

[allocate_extent_clause] [deallocate_unused_clause]

Cette clause permet de modifier les caractéristiques d' une zone de débordement sur une IOT.
INCLUDING column_name indique à partir de quelle colonne les données seront stockées dans la zone de débordement
INCLUDING ne peut pas être spécifié sur des partitions individuelles.



add_overflow_clause

Image non disponible

[segment_attributes_clause]

Cette clause permet d'ajouter une zone de débordement sur une IOT.
Elle peut être également utilisée pour créer explicitement un nouvel extent ou désallouer l'espace inutilisé d'un segment d'overflow.
Si PARTITION n'est pas spécifié, Oracle alloue automatiquement une zone de débordement pour chaque partition.
Si vous voulez spécifier les attributs physiques pour une ou plusieurs partitions, vous devez spécifier chaque attributs de chaque partition. il n'est pas nécessaire d'indiquer le nom des partitions, mais elles doivent être spécifiées dans l'ordre où elles ont été créées.
(Vous pouvez retrouver l'ordre des partitions en interrogeant les colonnes PARTITION_NAME et PARTITION_POSITION de la vue USER_IND_PARTITIONS)
Tous les attributs physiques et les clauses de stockage définis après le mot clé OVERFLOW s'appliquent donc aux colonnes placées dans la zone de débordement.
Si la table contient des colonnes LOB, celles-ci seront stockées en dehors de la table, même si la clause OVERFLOW est spécifiée.



alter_mapping_table_clause

Image non disponible

[allocate_extent_clause] [deallocate_unused_clause]

Cette clause n'est valide que pour une IOT disposant d'une table de mapping.
UPDATE BLOCK REFERENCES permet de mettre à jour les références dans la table de mapping
allocate_extent_clause permet d'allouer un nouvel extent en fin de table de mapping
deallocate_unused_clause permet de désallouer l'espace inutilisé en fin de table de mapping



column_clauses

Image non disponible

[add_column_clause] [drop_column_clause] [rename_column_clause] [modify_collection_retrieval] [modify_LOB_storage_clause] [alter_varray_col_properties]

add_column_clause permet d'ajouter des colonnes à la table
modify_column_clauses permet de modifier les caractéristiques d'une colonne
drop_column_clauses permet de supprimer des colonnes
rename_column_clauses permet de renommer une colonne
modify_collection_retrieval permet de modifier le type de retour d'une collection
modify_LOB_storage_clause permet de modifier les attributs physique d'une colonne de type LOB
alter_varray_col_properties permet de modifier les attributs physique d'une colonne de type LOB dans laquelle est stocké un VARRAY



add_column_clause

Image non disponible

[column_properties]

Lors de l'ajout d'une colonne, la valeur initiale pour chaque ligne est NULL à moins que vous n'ayez spécifié la clause DEFAULT, auquel cas chaque ligne de la table est mise à jour avec cette valeur. Cette opération déclenche tous triggers de type AFTER UPDATE définis sur la table.
Si une valeur par défaut est définie sur la colonne, vous pouvez utiliser la clause DEFAULT pour remettre une valeur NULL par défaut.
Vous pouvez ajouter un segment d'overflow sur chaque partition d'une IOT.
Vous pouvez ajouter des colonnes de type LOB et spécifier les caractéristiques de stockage.
Si une vue créée avec une requête de type "SELECT*" existe avant l'ajout de la colonne, Oracle ne rajoute pas les nouvelles colonnes à la description de cette vue. Il faudra donc la recréer.

Restrictions liées à l'ajout de colonnes

  • Vous ne pouvez pas ajouter une colonne de type LOB sur une table en cluster
  • Si vous ajoutez une colonne de type LOB sur une table partitionnée par hash, le seul attribut qu'il est possible de modifier pour la nouvelle partition est TABLESPACE
  • Il n'est pas possible d'ajouter une colonne munie d'une contrainte NOT NULL si la table posséde déjà des lignes, sauf si la clause DEFAULT est définie

inline_constraint permet de définir une contrainte de niveau colonne
inline_ref_constraint permet de définir une contrainte de type REF



modify_column_clause

Image non disponible

[modify_col_properties] [modify_col_substitutable]

Permet de modifier la définition d'une colonne existante ou l'aspect substituable d'une colonne objet.

Le type de la colonne peut être modifié si toutes les lignes ont une valeur NULL, où si le nouveau type défini ne remet pas en cause les données existantes dans la colonne.
Vous pouvez modifier une colonne de type DATE en TIMESTAMP ou TIMESTAMP WITH LOCAL TIME ZONE.
Vous pouvez modifier une colonne de type TIMESTAMP WITH LOCAL TIME ZONE en DATE (mais les fractions de seconde et le décalage horaire sont perdus).
Vous pouvez modifier une colonne de type LONG en CLOB ou NCLOB et une colonne de type LONG RAW en BLOB.
Le seul type de contrainte applicable avec la clause MODIFY est NOT NULL, si aucune ligne de la table ne contient de NULL.
Pour définir de nouvelle contraintes (UNIQUE, PRIMARY KEY, REFERENCES, CHECK)sur une colonne existante, utilisez la clause add_column_clause.
Pour modifier une contrainte existante sur la colonne, utilisez la clause constraint_clauses.

Restrictions liées à la modification de colonnes

  • Vous ne pouvez pas modifier une colonne si un index de domaine y est défini. Vous devez préalablement supprimer cet index
  • Vous ne pouvez pas définir une colonne de type ROWID sur une IOT (par contre vous pouvez la définir de type UROWID)
  • Vous ne pouvez pas modifier le type d'une colonne REF



modify_col_properties

Image non disponible

Modification des propriétés d'une colonne.



modify_col_substitutable

Image non disponible

Modification de l'aspect substituable d'une colonne objet.

FORCE supprime toutes les colonnes cachées contenant l'information de type de donnée d'un sous-type. Cette clause doit être spécifiée si l'un des attibuts du type est NOT FINAL

Restrictions liées à la modification de l'aspect substituable

  • Vous ne pouvez cette clause qu'une fois dans l'ordre ALTER TABLE
  • Vous ne pouvez pas spécifier cette clause sur une colonne d'une table objet si la subsitualité à été positionnée au niveau de la table
  • Vous ne pouvez pas spécifier cette clause sur une colonne créée ou ajoutée avec la clause IS OF TYPE
  • Vous ne pouvez pas spécifier NOT SUBSTITUTABLE sur une colonne de type VARRAY si l'un des attributs du type est NOT FINAL



drop_column_clause

Image non disponible

Permet de supprimer une ou plusieurs colonnes ou de la (les) définir comme inutilisée(s).

SET UNUSED permet de "marquer" les colonnes comme n'étant plus utilisées. les données ne sont pas encore supprimées, pourtant cette colonne n'est plus affichée et n'est plus interrogeable
DROP permet de supprimer physiquement une ou plusieurs colonne (ainsi que tous indexes et contraintes liés à cette colonne)
DROP UNUSED COLUMNS supprime physiquement les colonne marquées avec la clause SET UNUSED
CASCADE CONSTRAINTS supprime les contraintes d'intégrité référentielles relatives à la colonne supprimée
INVALIDATE spécifie qu'un objet invalidé par la suppression de la colonne sera automatiquement re-validé à sa prochaine invocation
CHECKPOINT integer permet de forcer un checkpoint après chaque integer suppression de données. Si integer n'est pas spécifié, sa valeur défaut est 512
DROP COLUMNS CONTINUE permet de reprendre le processus de suppression après une erreur

Restrictions liées à la suppression de colonne

  • Vous ne pouvez utiliser cette clause qu'une fois dans l'ordre ALTER TABLE
  • Vous ne pouvez pas supprimer une colonne d'une IOT participant à la clé primaire
  • Vous ne pouvez pas supprimer une colonne sur laquelle est défini un index de domaine
  • Vous ne pouvez pas spécifier cette clause pour supprimer une pseudo-colonne, colonne de cluster ou une colonne partitionnée, une colonne d'une table imbriquée, d'une table objet ou d'une table du schéma SYS



rename_column_clause

Image non disponible

Permet de renommer une colonne d'une table (le nouveau nom ne doit pas exister dans la table).

Les indexes de fonction et les contraintes de type CHECK restent valides.
Les vues, triggers, indexes de domaine, fonctions, procédures et paquetages qui référençaient la colonne deviennent invalides.

Restrictions liées au renommage de colonne

  • Cette clause ne peut pas être associée à une autre clause column_clause dans la même instruction
  • Vous ne pouvez pas renommer une colonne participant à un index, sans avoir détruit préalablement cet index



modify_collection_retrieval

Image non disponible

Permet de spécifier le type de donnée retourné lors de l'interrogation d'une collection.

RETURN AS LOCATOR retourne un pointeur sur la collection
RETURN AS VALUE retourne une copie de la collection



constraint_clauses

Image non disponible

Permet d'ajouter, modifier ou supprimer une contrainte.

ADD permet d'ajouter une contrainte de type hors-ligne
MODIFY permet de modifier une contrainte
RENAME CONSTRAINT permet de renommer une contrainte
DROP permet de supprimer une contrainte



drop_constraint_clause

Image non disponible

PRIMARY KEY supprime cette contrainte de la table
UNIQUE supprime la contrainte d'unicité des colonnes spécifiées
CONSTRAINT supprime toute autre contrainte définie sur la table
CASCADE demande la suppression en cascade de toutes les contraintes d'intégrité dépendant de la contrainte supprimée
KEEP INDEX conserve l'index lié à la contrainte
DROP INDEX supprime l'index lié à la contrainte

Restrictions liées à la suppression de contraintes

  • Vous ne pouvez pas supprimer une contrainte de type PRIMARY KEY ou UNIQUE faisant partie d'une contrainte d'intégrité référentielle (foreign key) sans supprimer également la clé étrangère
  • Vous ne pouvez pas supprimer une contrainte de type PRIMARY KEY (même avec la clause CASCADE) sur une table objet dont l'OID est basé sur la clé primaire
  • Si vous supprimez une contrainte d'intégrité référentielle portant sur une colonne de type REF, la colonne continue de pointer vers sa table de référence
  • Vous ne pouvez pas supprimer la clause SCOPE d'une colonne



column_properties

Image non disponible

[object_type_col_properties] [nested_table_col_properties] [varray_col_properties] [LOB_storage_clause] [XMLType_column_properties] [LOB_partition_storage]

Cette clause permet de modifier les caractéristiques de stockage d'un objet, une table imbriquée, un varray ou un LOB.



object_type_col_properties

Image non disponible

[substitutable_column_clause]

Pour modifier les informations de stockage d'une nouvelle colonne objet ou un élément d'une collection.
Cette clause est valide uniquement pour l'ajout d'une colonne ou d'un attribut d'objet. Pour modifier les propriétés d'une colonne objet, utilisez la clause modify_column_clauses.



substitutable_column_clause

Image non disponible

Cette clause permet d'indiquer dans quelle emsure une colonne objet d'un type peut accueillir des objets d'un sous-type.

ELEMENT indique qu'une collection ou un attribut seront contraints au sous-type indiqué
IS OF indique que la colonne objet sera contrainte au sous-type indiqué
NOT SUBSTITUTABLE AT ALL LEVELS indique qu'aucun sous-type ne pourra être substitué au type



nested_table_col_properties

Image non disponible

[substitutable_column_clause] [physical_properties] [column_properties] [object_properties]

Cette clause permet de modifier les caractéristiques de stockage d'une table imbriquée.

nested_item désigne le nom de la colonne contenant la table imbriquée
COLUMN_VALUE permet de spécifier la sous-table imbriquée dans le cas de collections multi-niveaux (ou seule la collection du premier niveau est nommée)
STORE AS désigne le nom de la table dans laquelle seront stockées les lignes de la collection



varray_col_properties

Image non disponible

[substitutable_column_clause] [LOB_parameters]

Cette clause permet de modifier les caractéristiques de stockage du LOB dans lequel sera stocké le varray.

La clause TABLESPACE ne peut pas être définie dans la description du LOB. Ce dernier sera stocké dans le même tablespace que celui de la table mère.



LOB_storage_clause

Image non disponible

Cette clause permet de spécifier les caractéristiques de stockage d'une nouvelle colonne LOB.

Pour modifier les caractéritiques d'une colonne LOB existante, utilisez la clause modify_LOB_storage_clause.



LOB_parameters

Image non disponible

[storage_clause]

tablespace est le nom du tablespace dans lequel sera stocké le LOB
ENABLED STORAGE IN ROW permet de stocker le contenu du LOB dans une colonne de type RAW de la table (si sa taille est inférieure à 4000 octets - les infos de contrôle)
Cette clause ne peut pas être utilisée pour une table organisée en index à moins que la partie OVERFLOW ait été spécifiée.
DISABLE STORAGE IN ROW indique que le LOB sera stocké en dehors de la table
La clause STORAGE IN RAW ne peut plus être modifiée, sauf si la table est déplacée (move).
CHUNK integer spécifie le nombre d'octets a allouer pour la manipulation du LOB
La valeur maximale pour integer est 32768 (taille de bloc maximale possible sous Oracle).
Si integer n'est pas un multiple du data block size, il est arrondi au data block size supérieur.
(Si le data block size actuel est de 2048 et vous spécifiez 3000, alors integer est arrondi à 4096.)
Une fois définie, cette valeur ne plus être modifiée.
Elle ne peut pas non plus excéder la valeur du paramètre NEXT défini dans la clause de stockage.
PCTVERSION integer indique le pourcentage maximum (défaut 10) d'espace utilisé pour maintenir les anciennes versions du LOB
En clair, une ancienne version du LOB ne sera pas écrasée tant qu'elle ne consommera que integer% de l'espace.
Cette clause peut être spécifiée si la base tourne en manual ou automatic undo mode.
PCTVERSION est par défaut en manual undo mode et RETENTION est par défaut en automatic undo mode
RETENTION indique que l'on souhaite conserver les anciennes versions du LOB. Oracle utilise la valeur du paramètre UNDO_RETENTION pour déterminer la valeur (en temps) des données non enregistrées à conserver dans la base
Vous ne pouvez pas spécifier PCTVERSION et RETENTION en même temps.
FREEPOOLS integer indique le nombre de groupes de freelist pour le segment LOB. Normalement integer doit correspondre au nombre d'instances en environnement Real Application Clusters et à 1 pour une base constituée d'une seule instance
Cette clause ne peut être spécifiée que si la base tourne en automatic undo mode.
Vous ne pouvez pas spécifier à la fois FREEPOOLS et le paramètre FREELIST GROUPS de la clause de stockage.
CACHE indique que vous souhaitez conserver les blocs lus en mémoire
NOCACHE spécifie que vous ne souhaitez pas conserver les blocs lus en mémoire
CACHE READS indique que seuls les blocs lus sont placés en cache (et non les blocs écrits)



modify_LOB_storage_clause

Image non disponible

Cette clause permet de mofifier les attributs physiques d'une colonne de type LOB.

Vous ne pouvez modifier qu'une seule colonne LOB à la fois avec cette clause.



modify_LOB_parameters

Image non disponible

[logging_clause] [allocate_extent_clause] [deallocate_unused_clause]

REBUILD FREEPOOLS
permet de supprimer les anciennes données contenues dans le LOB (dans le cas où vous avez modifié la clause PCTVERSION du LOB)
Vous devez appliquer cette clause si vous downgradez vers une version antérieure à 9.2.0

Restrictions sur la modification des attributs d'une colonne LOB

  • Vous ne pouvez pas modifier la valeur du paramètre INITIAL avec la clause storage_close
  • Vous ne pouvez pas spécifier à la fois les clauses allocate_extent_clause et deallocate_unused_clause dans une même instruction



alter_varray_col_properties

Image non disponible

[modify_LOB_parameters]

Permet de modifier les attributs de stockage d'une colonne LOB dans laquelle est stocké un varray.

Vous ne pouvez pas spécifier le paramètre TABLESPACE dans la clausse LOB_parameters. Ce dernier étant le même que celui de la table principale.



LOB_partition_storage

Image non disponible

[LOB_storage_clause] [varray_col_properties] Cette clause permet de définir les informations de stockage des LOB pour chaque partition.

Les partitions doivent être spécifiées dans l'ordre de leur position.
Si vous ne spécifiez pas les clauses LOB_storage_clause ou varray_col_properties pour une partition particulière, les caractéristiques de stockage du LOB seront celles spécifiées au niveau de la table.

Vous ne pouvez spécifier qu'une seule liste de clause LOB_partition_storage dans une même instruction ALTER TABLE et toutes les clauses LOB_storage_clauses et varray_col_properties doivent précéder la liste des clauses LOB_partition_storage.



XMLType_column_properties

Image non disponible

Permet de définir les informations de stockage d'une colonne de type XML.



XMLType_storage

Image non disponible

Une colonne de type XML peut être stockée dans un LOB ou dan un objet. STORE AS OBJECT RELATIONAL indique de stocker le type XML dans une colonne objet (vous devez alors également spécifier la clause XMLSchema_spec)
STORE AS CLOB indique que la donnée au format XML sera stockée dans un CLOB (dans ce cas vous spécifierez la clause LOB_parameters ou la clause XMLSchema_spec mais pas les deux)



XMLSchema_spec

Image non disponible

Permet de spécifier l'url d'un schéma XML enregistré (via le package DBMS_XMLSCHEMA) et (obligatoire) le nom d'un élément XML.



alter_external_table_clause

Image non disponible

[add_column_clause] [drop_column_clause] [parallel_clause] [external_data_properties]

Cette clause permet de modifier les caractéristiques d'une table externe.

Restrictions sur la modification des tables externes

  • Il n'est pas possible de modifier la définition d'une table externe en dehors de cette clause
  • Il n'est pas possible d'ajouter une colonne de type LONG, LOB ou objet et également de modifier le type d'une colonne existante avec l'un de ces trois types
  • Il n'est pas possible de définir une contrainte sur une table externe
  • Il n'est pas possible de modifier les paramètre de stockage d'une table externe

REJECT LIMIT indique le nombre d'erreurs de conversion permises lors de la lecture de la table externe avant d'annuler le processus (par défaut 0)



external_data_properties

Image non disponible

directory spécifie le nom du répertoire dans lequel se trouvent les fichiers source
ACCESS PARAMETERS permet de décrire la structure du fichier externe (dans le cas du driver générique Oracle, cette syntaxe se rapproche beaucoup d'un fichier de description Sql*Loader)
LOCATION indique la liste des fichiers externes à lire



alter_table_partitioning

Image non disponible

[set_subpartition_template] [modify_table_partition] [move_table_partition] [add_table_partition] [coalesce_table_partition]

[drop_table_partition] [drop_table_subpartition] [rename_partition_subpart] [truncate_partition_subpart] [split_table_partition] [split_table_subpartition]

[merge_table_partitions] [merge_table_subpartitions] [exchange_partition_subpart]

Cette clause n'est applicable que sur les tables partitionnées.



modify_table_default_attrs

Image non disponible

[segment_attributes_clause] [data_segment_compression] [key_compression] [alter_overflow_clause] [LOB_parameters]

Cette clause n'est applicable que sur les tables partitionnées.
Elle permet de spécifier de nouvelles valeurs par défaut pour les attributs de la table, qui seront utilisées dans les prochaines créations de partitions.
Seuls, les attributs spécifiquement nommés dans cette instruction seront affectés.
FOR PARTITION ne s'applique qu'aux tables à partitions composites. (les sous partitions déjà existantes ne sont pas affectées par l'instruction)
PCTTHRESHOLD, key_compression, ainsi que la clause alter_overflow_clause ne sont valide que pour les IOT partitionnées.
Dans la clause key_compression, integer ne peut pas être spécifié avec le mot clé COMPRESS. (cela ne peut être appliqué qu'à la création de la table (CREATE TABLE)).
Le paramètre PCTUSED ne peut pas être spécifié dans la clause segment_attributes d'un segment d'index d'une IOT.
Vous ne pouvez spécifier la clause key_compression_clause que si la compression de clé est déjà appliquée au niveau table.



set_subpartition_template

Image non disponible

[list_values_clause] [partitioning_storage_clause]

Cette clause permet de créer ou modifier des valeurs défaut pour les sous-partitions de type list ou hash. Cette clause n'est valide que pour des partitions composites. Elle remplace éventuellement tout modèle existant. Les sous-partitions ainsi que les indexes locaux ou globaux existants ne sont pas affectés.

Il est possible de supprimer un modèle de sous-partition via l'instruction ALTER TABLE ... SET SUBPARTITION TEMPLATE ().

Restrictions liées au modèles de sous-partitions

  • Pour une sous-partition de type hash, vous ne pouvez pas spécifier la clause list_values
  • Pour une sous-partition de type list, vous ne pouvez pas spécidier la clause hash_subpartition_quantity
  • Pour les 2 types de sous-partitions la seule clause de partitioning_storage_clause que vous pouvez spécifier est TABLESPACE



modify_table_partition

Image non disponible

[modify_range_partition] [modify_hash_partition] [modify_list_partition]

Cette clause permet de modifier les caractéristiques physiques d'une partition et également de modifier les attributs de stockage des colonnes LOB de la partition.

Il est également possible de spécifier le comportement d'Oracle vis à vis des indexes locaux devenus inutilisables après modification d'une partition.
Enfin, cette clause permet de modifier la table de correspondance (mapping table) d'une IOT.



modify_range_partition

Image non disponible

[partition_attributes] [add_hash_subpartition] [add_list_subpartition] [update_global_index_clause] [parallel_clause] [alter_mapping_table_clause]

Notes sur la modification appliquée à une partition composite

Si vous spécifiez la clause allocate_extent_clause, Oracle alloue un nouvel extent pour chaque sous-partition.
Si vous spécifiez la clause deallocate_unused_clause, Oracle libère l'espace libre de chaque sous-partition.
Tous les autres attributs modifiés dans cette clause remplacent les anciennes valeurs définies.
Pour modifier les attributs d'une sous-partition, utilisez la clause FOR PARTITION de la clause modify_table_default_attrs.
Si vous spécifez UNUSABLE LOCAL INDEXES, aucune autre clause ne peut être utilisée conjointement.



modify_hash_partition

Image non disponible

[partition_attributes] [alter_mapping_table_clause]

Lorsque vous modifiez une hash partition, les seules clauses modifiables dans la clause partition_attributes sont allocate_extent_clause et deallocate_unused_clause. Tous les autres attributs sont hérités des spécifications de niveau table.
COALESCE SUBPARTITION, applicable uniquement aux sous-partitions de type hash, permet de ventiler le contenu de la dernière sous-partition dans une ou plusieurs autres avant de la supprimer
Cette opération invalide tous les indexes globaux présents sur la table. Vous pouvez mettre à jour ces indexes pendant l'opération via la clause update_global_index_clause.
L'opération supprime les indexes de partition locaux.

Si vous spécifiez UNUSABLE LOCAL INDEXES, aucune autre clause ne peut être définie.



modify_list_partition

Image non disponible

[partition_attributes]

Permet de modifier les attributs d'une partition et/ou d'ajouter ou supprimer des valeurs de la liste.

ADD VALUES permet d'ajouter des valeurs à la liste
DROP VALUES permet de supprimer des valeurs de la liste (cette opération échoue s'il existe des valeurs spécifiées en table)
Ces 2 options n'affectent pas les indexes locaux et globaux.

Restrictions sur l'ajout ou la suppression de valeurs

  • Il n'est pas possible d'jouter des valeurs à la liste par défaut.
  • Il n'est pas possible de supprimer une valeur appartenant à la liste par défaut



modify_table_subpartition

Image non disponible

[modify_hash_subpartition] [modify_list_subpartition]

Cette clause n'est applicable que sur les partitions composites.

modify_hash_subpartition permet d'allouer ou désallouer l'espace de stockage d'une sous-partition
modify_list_subpartition permet de modifier les caractéristiques d'une partition par liste et d'ajouter ou supprimer des valeurs à la liste (uniquement sur les partitions composites)



move_table_partition

Image non disponible

[table_partition_description] [update_global_index_clause] [parallel_clause]

Cette clause permet de déplacer une partition vers un autre segment ou un autre tablespace.
Elle permet également de réduire la fragmentation et de modifier les attributs physiques établis lors de la création.
Si la table contient des colonnes LOB, vous pouvez utiliser la clause LOB_storage_clause pour déplacer les données et indexes associés. Seules les colonnes LOB nommées sont affectées.
Les indexes globaux des IOT sont invalidés, mais il est possible de les mettre à jour pendant l'opération via la clause update_global_index_clause.
Les indexes locaux sont déplacés par l'opération et doivent être reconstruits si la partition déplacée n'est pas vide.
Lors du déplacement d'une colonne LOB, Oracle supprime l'ancient segment de données ainsi que l'index correspondant et recréé un nouveau segment.
Cette opération peut être éffectuée en parallèle.

Restrictions sur le déplacement des partitions

  • S'il s'agit d'une partition par tranche (range) le seul attribut modifiable de la clause est TABLESPACE
  • Il n'est pas possible d'utiliser cette clause pour une partition sous-partitionnée.(pour cela, utilisez la clause move_table_subpartition_clause)



move_table_subpartition

Image non disponible

[subpartition_spec] [update_global_index_clause] [parallel_clause]

Cette clause est identique à la clause move_table_partition à la différence qu'elle s'applique à une sous-partition.



add_table_partition

Image non disponible

[add_range_partition_clause] [add_hash_partition_clause] [add_list_partition_clause]

Cette clause permet d'ajouter une partition sur une table.



add_range_partition_clause

Image non disponible

[range_values_clause] [table_partition_description]

Cette clause permet d'ajouter une partition par tranche après la dernière tranche existante.
Il est possible de spécifier également les attributs de la nouvelle partition, ainsi que les caractéristiques des éventuelles colonnes de type LOB.
S'il existe un index de domaine sur la table, celui-ci ne doit pas avoir le statut IN_PROGRESS ou FAILED.

Restrictions sur l'ajout d'une partition par tranche

  • Il n'est pas possible d'ajouter une tranche si la dernière déclarée utilise le mot clé MAXVALUE (utiliser la clause split_table_partition pour insérer une tranche intermédiaire)
  • Les clauses key_compression et OVERFLOW ne sont valides que pour une IOT, et OVERFLOW ne peut être spécifié que si la table partitionnée dispose déjà d'un segment d'overflow. la compresion de clé ne peut être spécifiée que si elle est déjà activée au niveau table
  • Vous ne pouvez pas spécifier PCTUSED pour un segment d'index d'une IOT

range_values_clause spécifie la tranche supérieure de la nouvelle partition. La liste des valeurs (ordonnées et séparées par une virgule) doit être supérieure aux listes déjà présentes



add_hash_partition_clause

Image non disponible

[partitioning_storage_clause] [update_global_index_clause] [parallel_clause]

Cette clause permet d'ajouter une partition de type hash.
Cette partition peut être explicitement nommée et stockée dans le tablespace indiqué (par défaut, celui de la table).
Il est possible de mettre à jour les indexes globaux pendant cette opération en utilisant la clause update_global_index_clause.
Spécifiez la clause parallel_clause pour paralléliser la création de la nouvelle partition.
Il n'est pas possible de spécifier partition_level_subpartition dans la clause table_partition_description.



add_list_partition_clause

Image non disponible

[list_values_clause] [table_partition_description]

Cette clause permet d'ajouter une partition de type list.

Lors de l'ajout de la partition, un index local basé sur la liste définie est créé. Les indexes globaux ne sont pas impactés.

Restrictions sur l'ajout d'une partition par liste

  • La clause partition_level_subpartition ne peut pas être spécifiée dans la clause table_partition_description
  • Cette clause n'est pas permise si une partition DEFAULT existe déjà sur la table (utilisez dans ce cas la clause split_table_partition sur la partition DEFAULT



coalesce_table_partition

Image non disponible

[update_global_index_clause] [parallel_clause]

Cette clause n'est applicable que sur les partitions de type hash.

Cela permet de supprimer la dernière partition en ventilant le contenu sur les autres.
Cette opération invalide les indexes globaux sur les tables standard, mais ils peuvent être mis à jour en utilisant la clause update_global_index_clause(les index globaux des IOT sont basés sur la clé primaire et restent donc valides).
Les indexes locaux de partitions sont supprimés et vous devez les recréer.



drop_table_partition

Image non disponible

[update_global_index_clause] [parallel_clause]

Supprime une partition ainsi que les données qu'elle contient.

Si la partition contient des colonnes LOB, celles-ci ainsi que leur index sont également supprimés.
Si la table est une IOT sur laquelle est définie une table de correspondance (mapping table), celle-ci est également supprimée.
Il est possible de mettre à jour les indexes globaux d'une table standard pendant l'opération en utilisant la clause update_global_index_clause.

Restrictions sur la suppression de partition

  • Vous ne pouvez pas supprimer une partition de type hash
  • Si la table ne contient qu'une partition, vous ne pouvez pas la supprimer. Vous devez supprimer la table elle-même



drop_table_subpartition

Image non disponible

Supprime une sous-partition de type list (et les données contenues) d'une partition composite.

La sous-partition est également retirée de l'index local. Les autres indexes de sous-partition ne sont pas affectés mais les indexes globaux sont marqués UNUSABLE sauf si vous spécifiez la clause update_global_index_clause.

Restrictions sur la suppression de sous-partitions

  • Vous ne pouvez pas supprimer une sous-partition de type hash. Utilisez pour cela la clause MODIFY PARTITION ... COALESCE SUBPARTITION
  • Vous ne pouvez pas supprimer l'ultime sous-partition d'une partition. Utilisez pour cela la clause drop_table_partition



rename_partition_subpart

Image non disponible

Cette clause permet de renommer une partition ou une sous-partition. (le nouveau nom ne doit pas déjà exister dans une autre partition/sous-partition).



truncate_partition_subpart

Image non disponible

[update_global_index_clause] [parallel_clause]

Cette clause permet de supprimer les lignes d'une partition ou d'une sous-partition.

TRUNCATE PARTITION supprime les lignes de la partition spécifiée.
TRUNCATE SUBPARTITION supprime les lignes de la sous-partition spécifiée.
Si la partition/sous-partition contient des données, vous devez d'abord désactiver les contraintes d'intégrité référentielles (ou sinon, supprimer (DELETE) les lignes puis tronquer la partition).
Si la table contient des colonnes de type LOB, alors les segments de données et d'indexes du LOB seront également tronqués.

Si un index de domaine est défini sur la table, alors cet index ne doit pas avoir un statut IN_PROGRESS ou FAILED, ainsi que l'index de partition qui ne doit pas être en statut IN_PROGRESS.
Les indexes locaux sont également tronqués (ce qui replace leur statut à VALID).
Il est possible de mettre à jour les indexes globaux pendant cette opération en spécifiant la clause update_global_index_clause.
DROP STORAGE permet de libérer l'espace obtenu
REUSE STORAGE permet de conserver l'espace libéré



split_table_partition

Image non disponible

[partition_spec] [update_global_index_clause] [parallel_clause]

Cette clause permet de créer 2 nouvelles partitions à partir de celle que vous spécifiez, chacune ayant un nouveau segment, de nouveaux attributs physiques et un nouveau segment initial (le segment de la partition éclatée est supprimé).

Les nouvelles partitions héritent des attributs physiques (non spécifiés) de la partition éclatée.
Si vous éclatez la list partition DEFAUT, alors la première des deux nouvelles partitions héritera des valeurs éclatées et la deuxième des valeurs DEFAULT.
Si la table est une IOT, Oracle éclate également l'éventuelle table de correspondance définie (dans le même tablespace que la table). Les zones de débordement (overflow) sont également éclatées et il est possible de spécifier les attributs de segment via la clause OVERFLOW.
Les indexes locaux correspondant sont éclatés même s'ils sont marqués UNUSABLE.
Si la table contient des colonnes de type LOB, vous pouvez utiliser la clause LOB_storage_clause pour spécifier les attributs de stockage. (les anciens segments de données et d'index du LOB sont supprimés et de nouveaux sont créés).
AT (valide uniquement sur les partitions de type range), permet de spécifier la nouvelle borne maxi (non incluse) pour la première nouvelle partition, les autres valeurs étant dirigées vers la deuxième nouvelle partition
VALUES (valide uniquement sur les partitions de type list), permet d'indiquer la liste des valeurs que vous voulez inclure dans la première nouvelle partition (et placer de facto les autres valeurs dans la deuxième nouvelle partition)
INTO permet de décrire les deux nouvelles partitions créées par l'éclatement. Dans la clause partition_spec le mot clé PARTITION est obligatoire même si vous ne spécifiez pas de nom ni d'attribut physique pour les nouvelles partitions
Pour une partition composite de type range-hash, si vous spécifiez des sous-partitions pour les nouvelles partitions, vous ne pouvez spécifier que la clause TABLESPACE pour les partitions. Toutes les autres valeurs sont héritées de la partition éclatée.
Pour une partition composite de type range-list, vous ne pouvez pas spécifier de sous-partitions pour les nouvelles partitions créées.
La partition est également éclatée dans les indexes locaux définis sur la table, même s'ils sont marqués UNUSABLE.
Les indexes globaux sont invalidés, mais peuvent être mis à jour durant l'opération avec la clause update_global_index_clause.

Restrictions sur l'éclatement des partitions

  • Cette clause n'est pas applicable sur une partition de type hash
  • Dans la clause partition_spec vous ne pouvez spécifier les clauses key_compression et OVERFLOW que pour une IOT. De plus vous ne pouvez spécifier le paramètre PCTUSED pour un segment d'index d'une IOT



split_table_subpartition

Image non disponible

[subpartition_spec] [update_global_index_clause] [parallel_clause]

Identique à la clause split_table_partition, mais pour éclater une sous-partition.



merge_table_partitions

Image non disponible

[partition_spec] [update_global_index_clause] [parallel_clause]

Cette clause permet de fusionner deux partitions en une nouvelle puis de supprimer les deux partitions d'origine.

Les deux partitions doivent se suivrent s'il s'agit de partitions par tranche (range). La nouvelle partition hérite de la limite la plus haute des deux partitions.
Les partitions par liste peuvent ne pas se suivre. le contenu de la nouvelle liste consiste en une fusion des deux listes. Si l'une des deux partitions est la partition DEFAULT, la nouvelle partition devient la partition DEFAULT.
Si vous fusionnez deux partitions composites de type range-list, vous ne pouvez pas spécifier la clause partition_level_subpartition (les informations de sous-partitionnement sont héritées du modèle (template). Si aucun modèle n'existe, Oracle ne crée qu'une sous-partition DEFAULT.
Les attributs non spécifiés dans la clause segment_attributes_clause héritent des valeurs définies au niveau de la table.
Les indexes globaux des tables standard sont marqués UNUSABLE, et peuvent être mis à jour pendant l'opération via la clause update_global_index_clause.
Les indexes locaux des partitions fusionnées sont supprimés et vous devez recréer un nouvel index local sur la nouvelle partition.

Vous ne pouvez pas spécifier cette clause sur une partition de type hash. Utilisez la clause coalesce_table_partition pour cela.



merge_table_subpartitions

Image non disponible

[subpartition_spec] [update_global_index_clause] [parallel_clause]

Cette clause permet de fusionner deux sous-partitions de type list en une nouvelle puis de supprimer les deux sous-partitions d'origine.

Les deux sous-partitions doivent provenir de la même partition.
Les indexes locaux sont également fusionnés puis marqués UNUSABLE ainsi que tous les indexes globaux.

Restrictions sur la fusion de sous-partitions

  • Cette clause n'est pas applicable sur des sous-partitions de type hash


exchange_partition_subpart

Image non disponible

[exceptions_clause] [update_global_index_clause] [parallel_clause]

Utilisez cette clause lorsque vous voulez échanger les segments de données ou d'index des éléments suivants :

  • Une table non partitionnée avec une partition de type hash, list ou range
  • une partition de type hash avec une sous-partition de type range d'une partition composite de type range-hash
  • une partition de type list avec une sous-partition de type list d'une partition composite de type range-list

Dans tous les cas, la structure de la table et des partitions ou sous-partitions échangées doit être identique. Dans le cas de partitions par listes, la liste des valeurs doit également correspondre.

WITH TABLE table indique la table dans laquelle les partitions ou sous-partitions doivent être échangées
INCLUDING INDEXES spécifie que les indexes locaux seront également échangés
EXCLUDING INDEXES spécifie que les indexes seront marqués UNUSABLE
WITH VALIDATION retourne une erreur si une ligne de la table ne peut être échangée entre partition ou sous-partition
WITHOUT VALIDATION indique qu'aucune vérification de correspondance ne sera faite pendant l'opération


exceptions_clause

Image non disponible

Cette clause spécifie le nom d'une table dans laquelle seront stockés les ROWID des lignes en erreur (si cette clause est omise, les erreurs sont consignées dans la table EXCEPTIONS).
La table EXCEPTIONS peut être créée avec les scripts suivants :

  • UTLEXCPT.SQL utilise les ROWID physiques (ne peut donc stocker les ROWID des tables organisées en index)
  • UTLEXPT1.SQL utilise les ROWID universels (UROWID)

Si vous créez votre propre table d'erreur, celle-ci doit respecter la structure utilisé dans ces scripts.

Restriction sur l'utilisation de la clause exception

  • Cette clause n'est pas valide avec des sous-partitions
  • La table partitionnée doit avoir été créée avec une contrainte UNIQUE dont le statut est DISABLE VALIDATE

Si ces conditions ne sont pas respectées, la clause est ignorée.


list_values_clause

Image non disponible

Indique la liste des valeurs séparées par une virgule incluses dans la partition ou sous-partition.

Le mot clé DEFAULT doit être utilisé seul sur la dernière partition et indique que la partition contiendra toutes les valeurs non spécifiées dans les autres partitions.


range_values_clause

Image non disponible

Spécifie la valeur maximum non incluse des données stockées dans la partition.

Le mot clé MAXVALUE indique la plus haute valeur possible et concerne donc la dernière partition.


partitioning_storage_clause

Image non disponible

Cette clause permet de spécifier les informations de stockage des partitions et de leurs éventuelles colonnes de type LOB.


partition_attributes

Image non disponible

[physical_attributes_clause] [logging_clause] [allocate_extent_clause] [deallocate_unused_clause] [data_segment_compression] [modify_LOB_parameters]

Cette clause permet de spécifier les attributs de chaque partition.


add_hash_subpartition

Image non disponible

[subpartition_spec] [update_global_index_clause] [parallel_clause]

Cette clause permet d'ajouter une sous-partition de type hash.

Elle n'est valide que pour une partition composite de type range-hash.
La clause list_values_clause n'est pas valide pour cette opération.
Les indexes globaux sont invalidés mais peuvent être mis à jour via la clause update_global_index_clause.
Les indexes locaux sont créés.


add_list_subpartition

Image non disponible

[subpartition_spec]

Cette clause permet d'ajouter une sous-partition de type list à une partition.

Elle n'est valide que sur une partition composite de type range-list qui ne contient pas encore de sous-partition DEFAULT.
La clause list_values_clause doit être renseignée et les nouvelles valeurs de la liste ne doivent pas exister dans d'autres sous-partitions.
La sous-partition est ajoutée aux indexes locaux.

Restrictions sur l'ajout d'une sous-partition de type list

  • Vous ne pouvez pas spécifier cette clause si une sous-partition DEFAULT existe déjà (vous devez pour cela éclater la sous-partition à l'aide de la clause split_list_subpartition)


modify_hash_subpartition

Image non disponible

[allocate_extent_clause] [deallocate_unused_clause] [modify_LOB_parameters]

Cette clause permet d'allouer ou désallouer de l'espace pour une sous-partition.

Elle n'est valide que pour une partition composite de type range-hash.
Vous pouvez également spécifier ce que deviennent les indexes locaux devenus UNUSABLE via la clause unusable_local_indexes.

Restrictions sur la modification d'une sous-partition de type hash

  • Les seuls paramètres spécifiables de la clause modify_LOB_parameters sont allocate_extent_clause et deallocate_unused_clause


modify_list_subpartition

Image non disponible

[allocate_extent_clause] [deallocate_unused_clause] [modify_LOB_parameters]

Cette clause permet le même type de modification que pour une sous-partition de type hash.

Elle permet également d'ajouter ou supprimer des valeurs de la liste.

Cette clause n'est valide pour pour une partition composite de type range-list.

ADD VALUES permet d'ajouter une valeur à la liste. cette nouvelle valeur ne doit pas déjà exister dans une autre sous-partition de la même partition
Si une sous-partition DEFAULT a été spécifiée, une vérification est faite pour contrôler qu'aucune valeur ajoutée n'existe dans les lignes gérées par la sous-partition DEFAULT sous peine de tomber en erreur.
Les indexes locaux sont mis à jour.

DROP VALUES permet de supprimer des valeurs de la liste
Ces valeurs doivent être des sous-ensembles de valeurs préalablement définies.
Il n'est pas possible d'utiliser cette clause pour supprimer toutes les valeurs d'une sous-partition. (pour cela vous devez utiliser l'instruction ALTER TABLE ... DROP SUBPARTITION).
Si une partition contient des lignes dont la valeur correspond à celles que vous voulez supprimer, l'opération échoue. Vous devez donc supprimer ces lignes avant de supprimer la valeur de la liste.
Les indexes locaux sont mis à jour.

Restrictions sur la modification d'une sous-partition de type list

  • Les seuls paramètres spécifiables de la clause modify_LOB_parameters sont allocate_extent_clause et deallocate_unused_clause


table_partition_description

Image non disponible

[segment_attributes_clause] [data_segment_compression] [key_compression] [LOB_storage_clause] [varray_col_properties] [partition_level_subpartition]

Cette clause permet de définir les attributs d'une partition (segment, zone d'overflow, colonnes LOB).


partition_level_subpartition

Image non disponible

[subpartition_spec]

Cette clause permet de spécifier des sous-partitions de type hash ou list pour une nouvelle partition composite de type range-hash ou range-list.

Cette clause n'est valide que sur une partition composite.
Cette clause surcharge toute description de sous-partitionnement définie par un modèle (template) de niveau table.

Concernant tous les types de partitions composites

Vous pouvez spécifier le nombre de sous-partitions ainsi que les tablespaces d'accueil.
Vous pouvez utiliser la clause subpartition_spec pour spécifier les sous-partitions nommées.
Si la clause partition_level_subpartition est omise et qu'il existe un modèle (template) alors celui-ci sera utilisé pour créer les sous-partitions.
Si la clause partition_level_subpartition est omise et qu'il n'existe pas de modèle, alors Oracle créé une sous-partition de type hash ou une sous-partition DEFAULT de type list.
La seule clause partitioning_storage_clause que vous pouvez spécifier dans la clause partition_spec est TABLESPACE.
Pour une partition composite de type range-hash, la clause list_values_clause de la clause subpartition_spec est invalide.

Concernant les partitions composites de type range-list

La clause hash_subpartition_quantity n'est pas prise en compte.
Dans la clause subpartition_spec, vous devez spécifier la clause list_values_clause pour chaque sous-partition et les valeurs spécifiées dans les listes doivent être uniques dans toutes les sous-partitions de la partition.

Un index de partition est ajouté.


partition_spec

Image non disponible

[table_partition_description]

Cette clause permet de définir les caractéristiques d'une partition.


subpartition_spec

Image non disponible

[list_values_clause] [partitioning_storage_clause]

Cette clause permet de définir les caractéristiques d'une sous-partition.


update_global_index_clause

Image non disponible

Cette clause permet de mettre à jour les indexes globaux d'une partition lors d'un ordre DDL.

UPDATE GLOBAL INDEXES permet de mettre à jour les indexes globaux
INVALIDATE GLOBAL INDEXES (défaut) indique d'invalider les indexes globaux

Cette clause n'est pas applicable sur un index de domaine, ni sur une table organisée en index.
De plus, cette clause ne met à jour que les indexes dont le statut est USABLE et VALID. les indexes dont le statut est UNUSABLE demeurent avec ce statut et ceux dont le statut est INVALID sont ignorés.



parallel_clause

Image non disponible

Permet de régler les paramètres de parallélisme.
NOPARALLEL (défaut) spécifie qu'aucun mécanisme de parallélisme n'est demandé
PARALLEL indique que l'on souhaite activer le mode parallele avec un degré équivalent au nombre de processeurs disponibles
PARALLEL integer indique que l'on active le parallélisme avec un degré égal à integer (nombre de threads mis en oeuvre dans l'opération)
Le traitement en parallèle est désactivé pour une table contenant un trigger ou une contrainte d'intégrité référentielle.
En présence d'un index bitmap sur la table, le parallélisme est désactivé si la table n'est pas partitionnée.
Si la table contient des colonnes de type LOB ou de type objet, les ordre insert, update ou delete qui modifient ce LOB ou cet objet ne seront pas traités en parallèle.
Un indicateur (hint) parallel surcharge la clause PARALLEL définie au niveau de la table.
Si un ordre DML ou CREATE TABLE ... AS SELECT référence un objet présent dans une autre base, le parallélisme n'est pas activé.



move_table_clause

Image non disponible

[segment_attributes_clause] [data_segment_compression] [index_org_table_clause] [LOB_storage_clause] [varray_col_properties] [parallel_clause]

Cette clause permet de déplacer une table non partitionnée sur un autre segment ou un autre tablespace.

Elle permet également de modifier les attributs de stockage.
Les colonnes de type LOB peuvent aussi être déplacées via les clauses LOB_storage_clause et varray_col_properties.
Les colonnes de type LOB non spécifiées dans cette clause ne sont pas déplacés.

Pour une table organisée en index, la clause index_org_table_clause permet de spécifier un autre segment pour la zone de débordement (overflow).
Lors du déplacement d'une IOT, la zone de débordement n'est pas recréée si la clause OVERFLOW n'est pas spécifiée, à deux exceptions près :

  • Si vous modifiez la valeur de PCTTHRESHOLD ou de INCLUDING, alors le segment d'overflow sera reconstruit
  • Si vous déplacez explicitement des colonnes de la zone de débordement (LOBs, varrays, nested table) de l'IOT, le segment d'overflow sera également reconstruit

Les segments de données et d'index des colonnes de type LOB ne seront pas reconstruit si elles ne sont pas explicitement spécifées dans l'instruction ALTER TABLE.

ONLINE indique que les opération du DML seront autorisées sur l'IOT pendant sa reconstruction

Restrictions sur la clause ONLINE

  • Cette clause ne peut pas être combinée avec une autre clause dans la même instruction
  • Cette clause ne peut être spécifiée que pour une table organisée en index non partitionnée
  • Le parallélisme des opération du DML n'est pas supporté avec l'option ONLINE



enable_disable_clause

Image non disponible

[using_index_clause] [exceptions_clause]

Cette clause permet de modifier l'état d'une contrainte.
ENABLE indique que la contrainte est activée
ENABLE VALIDATE indique que les données pré-existantes dans la table doivent respecter les contraintes
Si une donnée dans la table viole la contrainte, celle-ci reste à l'état DISABLE et Oracle retourne une erreur.
ENABLE NOVALIDATE n'effectue aucun contrôle sur les données pré-existantes, mais seulement sur les données insérées utltérieurement
Il n'est pas possible d'activer une clé étrangère qui référence une clé primaire ou unique désactivée.
DISABLE permet de désactiver la contrainte
DISABLE VALIDATE désactive la contrainte et supprime son index mais la laisse dans un état valide
DISABLE NOVALIDATE (défaut) désactive la contrainte
Si vous désactivez une contrainte de type primary key ou unique, Oracle supprime l'index associé.


using_index_clause

Image non disponible

[storage_clause] [logging_clause] [global_partitioned_index]

Cette clause ne s'applique qu'aux contraintes de type PRIMARY KEY ou UNIQUE.
index indique que l'on souhaite utiliser l'index existant index pour valider la contrainte
create_index_statement permet de définir en ligne un ordre de création d'index
SORT indique que l'index devra être trié dans l'ordre croissant
NOSORT indique qu'aucun tri ne sera appliqué à l'index



global_partitioned_index

Image non disponible

[index_partitioning_clause]

Cette clause permet de créer un index global de partition.



index_partitioning_clause

Image non disponible

[segment_attributes_clause]

Cette clause permet de créer un index de partition.

5.2. Exemples de modification de tables

Collection Retrieval
Sélectionnez

ALTER TABLE print_media MODIFY NESTED TABLE ad_textdocs_ntab
   RETURN AS VALUE; 
Activation du parallélisme
Sélectionnez

ALTER TABLE customers
   PARALLEL;
Validation d'une contrainte
Sélectionnez

ALTER TABLE employees
   ENABLE VALIDATE CONSTRAINT emp_manager_fk
   EXCEPTIONS INTO exceptions;
Récupération des lignes en erreur
Sélectionnez

SELECT employees.*
   FROM employees e, exceptions ex
   WHERE e.row_id = ex.row_id
      AND ex.table_name = 'EMPLOYEES'
Activation de contraintes
Sélectionnez

ALTER TABLE employees
   ENABLE NOVALIDATE PRIMARY KEY
   ENABLE NOVALIDATE CONSTRAINT emp_last_name_nn;
Désactivation d'une contrainte
Sélectionnez

ALTER TABLE customers
   DISABLE UNIQUE (areaco, phoneno) CASCADE;
Création d'une table de récupération d'erreur sur une IOT
Sélectionnez

EXECUTE DBMS_IOT.BUILD_EXCEPTIONS_TABLE ('hr', 'countries', 'except_table');

ALTER TABLE countries
   ENABLE PRIMARY KEY
   EXCEPTIONS INTO except_table;
Désactivation de tous les triggers d'une table
Sélectionnez

ALTER TABLE employees
   DISABLE ALL TRIGGERS;
Activation de tous les triggers d'une table
Sélectionnez

ALTER TABLE employees
   ENABLE ALL TRIGGERS;
Récupération de l'espace inutilisé
Sélectionnez

ALTER TABLE employees
    DEALLOCATE UNUSED;
Renommer une colonne
Sélectionnez

ALTER TABLE customers
   RENAME COLUMN credit_limit TO credit_amount;
Suppression d'une colonne munie d'une contrainte
Sélectionnez

ALTER TABLE t1 DROP (colonne_pk) CASCADE CONSTRAINTS;
Modifications sur une IOT
Sélectionnez

-- modification de la valeur INITRANS de la partie préfixe
ALTER TABLE countries INITRANS 4;
-- ajout d'une zone d'overflow
ALTER TABLE countries ADD OVERFLOW;
-- modification de la valeur INITRANS de la partie suffixe (overflow)
ALTER TABLE countries OVERFLOW INITRANS 4;
Eclatement d'une partition
Sélectionnez

ALTER TABLE sales SPLIT PARTITION SALES_Q4_2000 
   AT (TO_DATE('15-NOV-2000','DD-MON-YYYY'))
   INTO (PARTITION SALES_Q4_2000, PARTITION SALES_Q4_2000b);
Eclatement d'une partition et gestion des LOB
Sélectionnez

ALTER TABLE print_media_part
   SPLIT PARTITION p2 AT (150) INTO
   (PARTITION p2a TABLESPACE omf_ts1
      LOB ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2),
   PARTITION p2b 
      LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2));
Ajout d'une partition de type range
Sélectionnez

ALTER TABLE print_media_part ADD PARTITION p3 VALUES LESS THAN 
(MAXVALUE)
   LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2)
   LOB (ad_sourcetext, ad_finaltext) STORE AS (TABLESPACE omf_ts1);
Ajout d'une partition de type list
Sélectionnez

ALTER TABLE q1_sales_by_region 
   ADD PARTITION q1_nonmainland VALUES ('HI', 'PR')
      STORAGE (INITIAL 20K NEXT 20K) TABLESPACE tbs_3
      NOLOGGING;
Ajout d'une partition à une table partitionnée en range-hash
Sélectionnez

ALTER TABLE sales ADD PARTITION q1_2000
      VALUES LESS THAN (2000, 04, 01)
      SUBPARTITIONS 8 STORE IN tbs5;
Ajout d'une sous-partition à une table partitionnée en range-hash
Sélectionnez

ALTER TABLE diving MODIFY PARTITION locations_us
      ADD SUBPARTITION us_locs5 TABLESPACE us1;
Ajout d'une partition à une table partitionnée en range-list
Sélectionnez

ALTER TABLE quarterly_regional_sales 
   ADD PARTITION q1_2000 VALUES LESS THAN (TO_DATE('1-APR-2000','DD-MON-YYYY'))
      STORAGE (INITIAL 20K NEXT 20K) TABLESPACE ts3 NOLOGGING
         (
          SUBPARTITION q1_2000_northwest VALUES ('OR', 'WA'),
          SUBPARTITION q1_2000_southwest VALUES ('AZ', 'UT', 'NM'),
          SUBPARTITION q1_2000_northeast VALUES ('NY', 'VM', 'NJ'),
          SUBPARTITION q1_2000_southeast VALUES ('FL', 'GA'),
          SUBPARTITION q1_2000_northcentral VALUES ('SD', 'WI'),
          SUBPARTITION q1_2000_southcentral VALUES ('OK', 'TX')
         );
Ajout d'une sous-partition à une table partitionnée en range-list
Sélectionnez

ALTER TABLE quarterly_regional_sales
   MODIFY PARTITION q1_1999 
      ADD SUBPARTITION q1_1999_south
         VALUES ('AR','MS','AL') tablespace ts2;
Suppression d'un index de partition
Sélectionnez

ALTER INDEX npr DROP PARTITION P1;
Reconstruction d'un index de partition
Sélectionnez

ALTER INDEX npr REBUILD PARTITION P2;
Modification d'attributs par défaut d'une partition
Sélectionnez

ALTER TABLE emp
      MODIFY DEFAULT ATTRIBUTES PCTFREE 25;
      
ALTER TABLE emp
     MODIFY DEFAULT ATTRIBUTES FOR PARTITION p1 TABLESPACE ts1;
Suppression de valeurs d'une list partition
Sélectionnez

ALTER TABLE sales_by_region
   MODIFY PARTITION region_south
      DROP VALUES ('OK', 'KS');
Modification d'un modèle de sous-partitionnement
Sélectionnez

ALTER TABLE emp_sub_template
   SET SUBPARTITION TEMPLATE
         (SUBPARTITION e, TABLESPACE ts1,
          SUBPARTITION f, TABLESPACE ts2,
          SUBPARTITION g, TABLESPACE ts3,
          SUBPARTITION h, TABLESPACE ts4
         );
Suppression d'un modèle de sous-partitionnement
Sélectionnez

ALTER TABLE emp_sub_template
   SET SUBPARTITION TEMPLATE ( );
Eclatement d'une partition de type list DEFAULT
Sélectionnez

-- on suppose que rest est la partition DEFAULT de la table
ALTER TABLE list_customers SPLIT PARTITION rest 
   VALUES ('MEXICO', 'COLOMBIA')
   INTO (PARTITION south, PARTITION rest);
-- rest devient la nouvelle partition DEFAULT   
Fusion de deux partitions
Sélectionnez

ALTER TABLE list_customers 
   MERGE PARTITIONS asia, rest INTO PARTITION rest;
Suppression d'une partition
Sélectionnez

ALTER TABLE print_media_part DROP PARTITION p3;
Echange de partitions
Sélectionnez

ALTER TABLE sales 
   EXCHANGE PARTITION feb97 WITH TABLE sales_feb97 
   WITHOUT VALIDATION;
Changement de statut des indexes locaux d'une partition
Sélectionnez

ALTER TABLE sales MODIFY PARTITION nov96 
   UNUSABLE LOCAL INDEXES;
Reconstruction des indexes locaux d'une partition
Sélectionnez

ALTER TABLE sales MODIFY PARTITION jan97
   REBUILD UNUSABLE LOCAL INDEXES;
Modification des attributs d'une partition
Sélectionnez

ALTER TABLE branch MODIFY PARTITION branch_ny 
   STORAGE (MAXEXTENTS 75) LOGGING;
Déplacement d'une partition
Sélectionnez

ALTER TABLE print_media_part 
   MOVE PARTITION p2b TABLESPACE omf_ts1;
Renommer une table
Sélectionnez

ALTER TABLE employees RENAME TO employee;
Renommer une partition
Sélectionnez

ALTER TABLE employee RENAME PARTITION emp3 TO employee3;
Suppression du contenu d'une partition
Sélectionnez

ALTER TABLE deliveries
   TRUNCATE PARTITION sys_p017 DROP STORAGE; -- restitution de l'espace libéré
Tables objet
Sélectionnez

-- création du type de base
CREATE TYPE emp_t AS OBJECT (empno NUMBER, address CHAR(30));

-- création de la table avec OID sur la clé primaire
CREATE TABLE emp OF emp_t (
   empno PRIMARY KEY)
   OBJECT IDENTIFIER IS PRIMARY KEY;

-- création d'une table munie d'une référence sur la table emp_t
CREATE TABLE dept (dno NUMBER, mgr_ref REF emp_t SCOPE is emp);

-- ajout d'une contrainte
ALTER TABLE dept ADD CONSTRAINT mgr_cons FOREIGN KEY (mgr_ref)
   REFERENCES emp;

-- ajout d'une référence
ALTER TABLE dept ADD sr_mgr REF emp_t REFERENCES emp;
Ajout d'une colonne
Sélectionnez

ALTER TABLE countries 
   ADD (duty_pct     NUMBER(2,2)  CHECK (duty_pct < 10.5),
        visa_needed  VARCHAR2(3)); 
Modification de la taille d'une colonne
Sélectionnez

ALTER TABLE countries
   MODIFY (duty_pct NUMBER(3,2));
Allocation explicite d'un nouvel extent
Sélectionnez

ALTER TABLE employees
  ALLOCATE EXTENT (SIZE 5K INSTANCE 4); 
Modification de la clause DEFAULT
Sélectionnez

ALTER TABLE product_information
  MODIFY (min_price DEFAULT 10);
Ajout d'une contrainte de clé primaire
Sélectionnez

ALTER TABLE xwarehouses 
   ADD (PRIMARY KEY(XMLDATA."WarehouseID"));
Renommer une contrainte
Sélectionnez

ALTER TABLE customers RENAME CONSTRAINT cust_fname_nn
   TO cust_firstname_nn;
Suppression de la clé primaire
Sélectionnez

ALTER TABLE departments 
    DROP PRIMARY KEY CASCADE; 
Suppression d'une contrainte UNIQUE
Sélectionnez

ALTER TABLE employees 
    DROP UNIQUE (email); 
Ajout d'une colonne de type LOB
Sélectionnez

ALTER TABLE employees ADD (resume CLOB)
  LOB (resume) STORE AS resume_seg (TABLESPACE example);
Ajout d'une colonne de type table imbriquée
Sélectionnez

ALTER TABLE employees ADD (skills skill_table_type)
    NESTED TABLE skills STORE AS nested_skill_table;

précédentsommaire

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Le guide Oracle par Orafrance, Helyos et SheikYerbouti