Oracle offre une possibilité intéressante en termes d’administration, à savoir, la sauvegarde d’une base de données à chaud. Cela permet à l’administrateur de pouvoir effectuer ses sauvegardes sans interrompre l’application, et sans avoir à fermer la base de données aux utilisateurs.
Nous allons donc, faire un backup de nos tablespaces, archivelog et control files.
Activation des archivelog
Pour se faire, il faut avant tout que la base de données soit en mode ARCHIVELOG, via les commandes suivantes :
1 |
SQL> archive log list; |
1 2 3 4 5 |
Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 16 Current log sequence 18 |
La base de données n’a pas les archivelog activés. nous allons doc les activer via les commandes suivantes :
1 2 |
SQL> startup mount SQL> alter database archivelog; |
1 |
SQL> archive log list; |
1 2 3 4 5 |
Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 16 Current log sequence 18 |
1 |
SQL> alter database open; |
Archivage du redolog courant
Via les commandes précédentes, nous savons quelle est l’archive courante utilisée. Nous allons maintenant, effectuer un changement de fichier journal, puis lancer une archivage de l’ensemble des fichiers redologs :
1 2 |
SQL> alter system switch logfile; SQL> alter system archive log all; |
Nous sommes maintenant prêts à effectuer la sauvegarde des fichiers de la base.
Sauvegarde des fichiers de données
Pour se faire, nous allons lister l’ensemble des tablespaces de la base de données qui doivent être sauvegardés(exclure donc les REDO et TEMP), ainsi que leurs fichiers associés.
1 2 3 4 |
SQL> select TABLESPACE_NAME, CONTENTS from DBA_TABLESPACES; SQL> select FILE_NAME, TABLESPACE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME in ('SYSTEM','SYSAUX','USERS','UNDOTBS1','TOOLS'); |
Remarque : Si status est en mode ACTIVE, ça veut dire que le BEGIN BACKUP est en cours, et donc le fichier est bloqué par Oracle le temps de la sauvegarde.
Maintenant que nous connaissons les noms des fichiers associés aux tablespaces, nous pouvons effectuer la sauvegarde de ceux-ci.
1 2 |
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP; SQL> ALTER TABLESPACE SYSAUX BEGIN BACKUP; |
Lancer la sauvegarde physique des fichiers :
1 2 |
oracle@basmut:/home/oracle $ cp TEST_system_01.dbf /backup/TEST_system_01_backup.dbf; oracle@basmut:/home/oracle $ cp TEST_sysaux_01.dbf /backup/TEST_sysaux_01_backup.dbf; |
Libérer les tablespaces une fois que la sauveagrde du fichier physique est terminée.
1 2 |
SQL> ALTER TABLESPACE SYSTEM END BACKUP; SQL> ALTER TABLESPACE SYSAUX END BACKUP; |
Remarque : Ces opérations doivent être répetées pour tous les tablespaces listés par la commande précédente.
Sauvegarde des fichiers de redo et de contrôles
Effectuer un archive des fichiers journaux et les copier dans le répertoire de backup.
1 2 |
SQL> alter system switch logfile; SQL> alter system archivelog all; |
Remarque : A ce stade, un message d’erreur doit prévenir qu’il n’y a pas de nouveau redolog à archiver, en effet, aucune activité n’a eue lieue depuis le dernier archivage.
1 2 |
oracle@basmut:/home/oracle $ cp *.arch /backup/; oracle@basmut:/home/oracle $ cp *.rdo /backup/; |
La dernière étape consiste à la sauvegarde des fichiers de contrôle et de paramètre.
1 |
SQL> alter database backup controlfile to 'backup_controlfile.ctrl'; |
1 2 3 |
oracle@basmut:/home/oracle $ cp listener.ora /backup/; oracle@basmut:/home/oracle $ cp tnsnames.ora /backup/; oracle@basmut:/home/oracle $ cp orapw /backup/; |
Notre base de données est maintenant sauvegardée, et prête à être restaurée.