En cas de souci d'espace disque sur certaines partitions, il est possible de déplacer des DataFiles oracle. La démarche étant la suivante (dans l'ordre) :
- Récupérer le nom du fichier utilisé par le tablespace
- Mettre le tablespace en mode Offline
- Copier le fichier de données dans son nouveau répertoire
- Modifier le tablespace pour renommer le fichier de données
- Remettre le tablespace en mode Online
- Supprimer le fichier d'origine
Ce qui se résume de la manière suivante :
sqlplus / as sysdba SQL> SELECT FILE_NAME, BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'ENROLE_DATA'; FILE_NAME BYTES ------------------------------------------------------------ ---------- /product/oracle/product/11.2.0.2/dbs/enrole1_data_001.dbf 1409286144 ALTER TABLESPACE enrole_data OFFLINE NORMAL; SQL> exit
On va ensuite copier le fichier, avec les commandes de l'O.S. Par exemple sous Unix/Linux :
cp /product/oracle/product/11.2.0.2/dbs/enrole1_data_001.dbf enrole1_data_001.dbf /product/oradat/ENROLE/datafile/enrole1_data_001.dbf
A ce stade, on revient sous SQL*Plus :
sqlplus / as sysdba SQL> alter tablespace enrole_data rename datafile '/product/oracle/product/11.2.0.2/dbs/enrole1_data_001.dbf' TO '/product/oradat/ENROLE/datafile/enrole1_data_001.dbf' ; Tablespace altered. SQL> alter tablespace enrole_data online; Tablespace altered. SQL> SELECT FILE_NAME, BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'ENROLE_DATA'; FILE_NAME BYTES ------------------------------------------------------------ ---------- /product/oradat/ENROLE/datafile/enrole1_data_001.dbf 1409286144
On peut ensuite supprimer le fichier d'origine, après avoir vérifié que la base de données fonctionnait correctement.
rm /product/oracle/product/11.2.0.2/dbs/enrole1_data_001.dbf
Il va sans dire qu'il vaut mieux faire une sauvegarde de sa base de données avant les manipulations, et qu'il est bon également de lancer une sauvegarde après la modification.
Catégorie