8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Divers | PL / SQL | SQL | RAC | WebLogic | Linux
Accueil « Articles » 8i « Ici
Oracle 8i a introduit la possibilité de supprimer une colonne d’une table. Avant cela, il était nécessaire de supprimer la table entière et la reconstruire. Vous pouvez maintenant marquer une colonne comme inutilisée (suppression logique) ou la supprimer complètement (suppression physique).
- Suppression logique
- Suppression physique
- Considérations
Suppression logique
Sur les grandes tables, le processus de suppression physique d’une colonne peut prendre beaucoup de temps et de ressources. Pour cette raison, vous pouvez décider de supprimer logiquement
alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);
Une fois que cela est fait, les colonnes ne seront plus visibles pour l’utilisateur. Si à une date ultérieure vous avez le temps de supprimer physiquement les colonnes, cela peut être effectuée en utilisant ce qui suit.
alter table table_name drop unused columns;
Sur les grandes tables, vous pouvez réduire la quantité de journaux d’annulation accumulés en utilisant l’option CHECKPOINT qui force un point de contrôle après le nombre spécifié de les lignes ont été traitées.
La vue DBA_UNUSED_COL_TABS
peut être utilisée pour afficher le nombre de colonnes inutilisées par table.
Suppression physique
Pour déposer physiquement une colonne, vous pouvez utiliser l’une des syntaxes suivantes, selon que vous souhaitez supprimer une ou plusieurs colonnes.
alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);
Suppression d’un colonne d’une table entraînera la suppression simultanée de toutes les colonnes inutilisées de cette table.
Considérations
La suppression d’une colonne peut ne pas générer d’espace libre utilisable supplémentaire dans le bloc. Si la colonne est petite, vous n’obtiendrez que de petits morceaux d’espace dans chaque bloc qui peuvent ne pas être réutilisables. La seule façon de libérer cet élément pour une réutilisation est de reconstruire / déplacer la table. Il est plus efficace de marquer la colonne comme inutilisable, puis de reconstruire la table. Par défaut, un déplacement n’est pas une opération en ligne.
alter table table_name set unused (column_name);alter table table_name move;
Dans les versions ultérieures de la base de données, l’opération de déplacement peut être effectuée en ligne.
alter table table_name set unused (column_name);alter table table_name move online;
J’espère que cela vous aidera. Cordialement Tim …
Retour en haut.