Oracle - Renommer ou déplacer des fichiers de données

Introduction

La méthodologie pour renommer un fichier de données existant peut également être utilisée pour déplacer ce dernier. Les fichiers de données peuvent être déplacés ou renommés avec une des deux méthodes : alter database ou alter tablespace.

La différence principale entre les deux commandes concerne le champ d'action.

  • La commande alter tablespace ne peut s'appliquer qu'à des fichiers de données qui ne contiennent pas le tablespace SYSTEM, des segments d'annulation actifs ou des segments temporaires en revanche elle a l'avantage de pouvoir être appliquée sans avoir à éteindre l'instance.
  • La commande alter database fonctionne pour n'importe quel fichier de données mais l'instance doit être éteinte pour pouvoir l'appliquer.

Cette fiche technique présente les deux méthodes à travers des cas pratiques.

Méthode ALTER DATABASE

On se propose de déplacer le fichier scott_data_01.dbf du répertoire /oracle/data vers le répertoire /oracle/TSTT1ORA avec la commande alter database.

Étape 1 : arrêt de l'instance.

shutdown immediate;

Étape 2 : copie du fichier de données dans sa nouvelle nomenclature avec les commandes de l'OS (cp, xcopy).

cp /oracle/data/scott_data_01.dbf /oracle/TSTT1ORA/scott_data01.dbf 

Étape 3 : monter la base de données et utiliser la commande alter database pour renommer le fichier au sein de la base de données avec l'option rename file.

connect internal;
startup mount;

alter database
  rename file '/oracle/data/scott_data_01.dbf'
   to '/oracle/TSTT1ORA/scott_data01.dbf'

alter database open;

À bien noter les simples quotes pour délimiter les fichiers, lesquels doivent impérativement exister. L'instance est alors ouverte en utilisant le nouveau fichier de données, l'ancien pouvant être détruit.

Méthode ALTER TABLESPACE

On se propose toujours de déplacer le fichier scott_data_01.dbf du répertoire /oracle/data vers le répertoire /oracle/TSTT1ORA mais cette fois avec la commande alter tablespace. Cette méthode a l'avantage de ne pas à avoir éteindre l'instance, toutefois le tablespace contenant le fichier de données en question devra être mis offline. Pour rappel, cette méthode ne peut être utilisée pour des tablespaces contenant des segments d'annulation actifs ou des segments temporaires.

Étape 1 : mise en mode offline du tablespace contenant le fichier de données à renommer.

alter tablespace scott_data offline;

Étape 2 : copie du fichier de données dans sa nouvelle nomenclature avec les commandes de l'OS

cp /oracle/data/scott_data_01.dbf /oracle/TSTT1ORA/scott_data01.dbf

Étape 3 : utiliser la commande alter tablespace avec l'option rename datafile pour renommer le fichier de données au sein de la base de données.

alter tablespace scott_data
rename datafile '/oracle/data/scott_data_01.dbf'
   to '/oracle/TSTT1ORA/scott_data01.dbf'
   
alter database open;

Étape 4 : remettre en ligne le tablespace contenant le fichier de données renommé.

alter tablespace scott_data online;

L'ancien fichier de données peut alors être détruit.