Outils personnels

Déplacer les fichiers d'une base

De wikiGite

Révision datée du 8 juillet 2014 à 14:43 par Frank (discussion | contributions) (Page créée avec « = Pré-requis = Noter le nom de tous les fichiers '''avant déplacement''' : SELECT name FROM v$controlfile; SELECT member FROM v$logfile; SELECT name FROM v$datafile; ... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Pré-requis

Noter le nom de tous les fichiers avant déplacement :

SELECT name FROM v$controlfile;
SELECT member FROM v$logfile;
SELECT name FROM v$datafile;
SELECT name FROM v$tempfile;

Déplacement à froid (base arrêtée)

Fichiers de contrôle

Les fichiers de contrôle sont déclarés dans le fichier d'init, ou le spfile. Si la base se lance avec le fichier texte, il suffit d'y modifier la ligne CONTROL_FILES. S'il s'agit du SPFILE :

ALTER SYSTEM SET control_files='/nouvel_emplacement/CONTROL01.CTL', '/nouvel_emplacement/CONTROL02.CTL', '/nouvel_emplacement/CONTROL03.CTL' SCOPE=SPFILE;

Stopper la base de données juste après !

Déplacement

  • Arrêter la base de données
SHUTDOWN IMMEDIATE;
  • Copier ou déplacer (selon la place disponible - la copie est préférable pour ne pas perdre un fichier en cas de problème, réseau par exemple s'ils sont copiés sur un autre serveur) tous les fichiers vers la nouvelle destination.

Renommer les fichiers

Relancer la base sans ouvrir les fichiers de données :

STARTUP MOUNT

puis renommer les fichiers (le "FILENAME" correspond au chemin complet + le nom du fichier : changer de disque ou de répertoire revient donc à le renommer)

ALTER DATABASE RENAME FILE '/nouvel_emplacement/SYSTEM01.DBF' TO '/nouvel_emplacement/SYSTEM01.DBF';

faire de même pour tous les autres fichiers de données, les fichiers temporaires (TEMP) et tous les REDO LOGS.

Ouvrir la base

ALTER DATABASE OPEN;

Déplacement à chaud (base online)

fichiers redo logs

La procédure est la même que pour agrandir la taille des fichiers redo logs : il faut les supprimer et les recréer l'un après l'autre.


Déplacement d'un tablespace temporaire à chaud

Noter les options (notamment d'autoextend, next et maxsize) dasn la table DBA_TEMP_FILES. Puis :

CREATE TEMPORARY TABLESPACE temp2 TEMPFILE '/nouvel_emplacement/TEMP2.DBF' SIZE 5M REUSE;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
CREATE TEMPORARY TABLESPACE temp TEMPFILE '/nouvel_emplacement/TEMP01.DBF' SIZE 500M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE unlimited;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES;