Example move table
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Exemple DDL Oracle |
| Contexte | Déplacement d'une table vers un autre tablespace |
| Voir aussi | Example create tablespace · Example drop unused column |
ALTER TABLE ... MOVE TABLESPACE déplace physiquement les données d'une table vers
un autre tablespace, par exemple pour rééquilibrer l'espace disque, changer de type de gestion
de tablespace, ou défragmenter une table après de nombreuses suppressions.
Script
ALTER TABLE emp MOVE TABLESPACE users2 STORAGE (INITIAL 10M NEXT 1M);
Points de vigilance
- Les index deviennent
UNUSABLEaprès unMOVE: le ROWID des
lignes change, ce qui invalide les entrées d'index existantes. Il faut les reconstruire ensuite :
ALTER INDEX emp_pk REBUILD;
-- ou, pour reconstruire tous les index d'un coup :
-- SELECT 'ALTER INDEX ' || index_name || ' REBUILD;'
-- FROM user_indexes WHERE table_name = 'EMP';
- La table reste verrouillée en écriture pendant l'opération (DML bloqués, lectures
généralement possibles) — à planifier en fenêtre de maintenance sur une table volumineuse.
Sur les éditions/versions le permettant, ONLINE réduit cette indisponibilité :
ALTER TABLE emp MOVE TABLESPACE users2 ONLINE;
- Une table partitionnée se déplace partition par partition (voir
Example partition range date oracle 8) :
ALTER TABLE emp_date_part MOVE PARTITION emp_date_part_q1_2001_part TABLESPACE users2;
Voir aussi
- Example create tablespace — création du tablespace de destination
- Example drop unused column — autre opération de maintenance DDL sur une table existante
- Example partition range date oracle 8 — déplacement partition par partition sur une table partitionnée