Lundi 6 octobre 2008 1 06 /10 /Oct /2008 21:50
Bonsoir,


REMARQUE: Cet Article est un des premiers de mon blog et cependant d'après les statistiques, il s'agit de l'un des article les plus "lu" ou du moins accèdé. Il serait interessant pour moi que vous preniez le temps d'y laisser un petit commentaire pour m'indiquer si il vous a été utile ou ce qui a manqué pour vous aider. Merci par avance.



Encore une fois parlons un peu des sauvegardes. On distingue deux types de sauvegarde :
  • Les sauvegardes dites à froid. Dans ce cas la base est inaccessible aux utilisateurs et l'on effectue une simple copie de fichier qu'il conviendra de restaurer en cas de soucis.
  • Les sauvegarde à chaud. Vous aurrez compris, qu'il s'agit d'effectuer une sauvegarde base ouverte pendant que les utilisateur continuent de travailler sur leur base préférée. C'est généralement ce type de configuration que l'on retrouve en mode de production ou l'on ne peut pas se permettre d'arreter une base pour la sauvegarder.


Cependant dans certains cas (Bureau d'étude, Editeur, environnement de test,..) on peut souhaiter mettre en place une stratégie de sauvegarde sans pour autant que cela ne devienne trop compliqué.

Encore une fois, un peu de reflexion avant d'agir permettra de gagner du temps par la suite et d'éviter des situations de crise.

Partons du postulat que la base est volumineuse et que pour tout arranger bon nombre de table contiennent des colonnes de type CLOB.

Remarques : Les imports de tables ayant des colonnes de type CLOB sont tres long, car traités ligne à ligne. 

 
Solution 1: export pour la sauvegarde / import pour la restauration. 

Par rapport notre cas d'étude, cela peut être envisageable mais risque de prendre énormément de temps.
Du coup en cas de perte de données, la restauration peut devenir problématique:

  • Durée d'import / export relativement longue.
  • En mode panique, on ne pense pas à tout. Et on peut oublier par exemple de créer les tables contenant les CLOB (si on utilise toujours l'utilitaire imp.exe), de faire la redirection de tablespace (impdp.exe), et surement d'autres problématiques qui ne me viennent pas à l'ésprit. 

 

Solution 2:On arrete la base, et on copie l'ensemble des fichier de la base sur bande ou vers un emplacement de secours.

Du coup pour restaurer, il suffit d'arreter à nouveau la base et de recopier les fichiers.
Comme tout le monde le sait, l'administration des bases et les tests de restauration chez la plupart des editeurs sont d'une priorité haute.(Ironie -) ). Du coup lors de la restauration, la probalité qu'il manque un fichier de données est assez haute et du coup la restauration de votre base devient des plus compliquée.


Je vous propose d'arreter le "bricolage" et d'utilise ce qu'ORACLE a bien voulu mettre à notre disposition.
Je veux bien sur nommer RMAN (Recovery Manager).

Pour pouvoir restaurer, il faut bien sur avoir une sauvegarde.

Avant d'effecuter celle-ci, connecter vous avec un vous user de test, et créer quelques tables et remplissez les.
A moins que vous ayez (ce qui doit etre le cas) des schémas applicatifs avec ce qu'il faut.

Etape 1: Effectuons une sauvegarde  à froid de la base :

Démarrer > Executer > cmd 



sqlplus / nolog
SQL> CONNECT / AS SYSDBA
SQL> SHUTDOWN IMMEDIATE;
SQL> QUIT

RMAN target /
RMAN> STARTUP MOUNT;
RMAN> BACKUP FULL DATABASE;
RMAN> ALTER DATABASE OPEN;
RMAN> QUIT


 
Remarque : A travers cet exemple, on constate que RMAN dispose des droits permettant de stopper ou démarrer une base !

Etape 2 : Retournons dans SQL PLUS 


SQL> TRUNCATE TABLE T1;
SQL> DROP TABLE T3;

sqlplus / nolog
SQL> CONNECT LAO/LAO --(c'est mon user de test avec trois table t1,t2,t3. Original ?)

Oups ! je voulais faire le contraire !!

Vite passons en mode panique;
SQL> CONNECT / AS SYSDBA
SQL> SHUTDOWN IMMEDIATE
;



Et pendant que ma base est arreté, un collégue de bonne volonté supprime les fichiers liés au tablespace SYSTEM (qui bien sur n'étaient pas sauvegardés)==> lois de MURPHY (emmerdement maximum).

Vous pouvez toujours y aller avec votre dump !


Etape 3 : On stoppe le mode panique et on se souvient qu'on avait pris le temps de réfléchir pour palier à ce genre de soucis.

Démarrer >Executer > cmd

SET ORACLE_SID=ORADB ( si jamais il y a plusieurs bases sur votre poste).


RMAN target /
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;


.... Si tout se passe bien, un petit message qui indique "Fin de restore dans DD/MM/YY"

RMAN> QUIT

Encore un petit effort,

sqlplus / nolog
SQL> CONNECT / AS SYSDBA
SQL> RECOVER DATABASE UNTIL CANCEL;


 
La vous recevez quelques insultes de notre ami ORACLE.
Tapez tout simplement et sans trembler
CANCEL puis


SQL> ALTER DATABASE OPEN RESETLOGS;

 Et la oh magie, un message indiquant "Base de données modifiée"

Soyons fou !!

SQL> CONNECT LAO/LAO

Et maintanant vous pouvez vérifier ! les tables sont toutes la, et avec le même nombre de lignes qu'au moment de la sauvegarde. 

Conclusion:
 Cette méthode revient au même qu'a la solution proposée numéro 2: A un petit détail près, c'est que RMAN s'occupe pour vous de savoir quels fichiers il faut sauvegarder et surtout ou ils se situent !
Pour ceux qui aiment se faire mal aux neurones, nous verrons dans un prochain article comment faire la même chose mais manuellement (Solution 2, sans RMAN).

A bienôt;

LAO.


 
Par LAO - Publié dans : RMAN - Communauté : ORACLE
Ecrire un commentaire - Voir les 10 commentaires
Retour à l'accueil

Commentaires

Bonjour "là haut", Une question : est-il possible de n'effectuer un BACKUP/RESTORE que pour un schéma donné ? + 2ème question = je n'ai pas compris la partie "La vous recevez quelques insultes de notre ami ORACLE. Tapez tout simplement et sans trembler CANCEL puis", serait-il possible d'avoir un peu plus d'explications ? Merci, Bonne journée
Commentaire n°1 posté par Gigot le 08/10/2008 à 14h31
bonsoir !

-1/ RMAN consiste à effectuer une sauvegarde des fichiers "physiques" et par conséquent il ne peut pas y etre question de sauvegarder par notion de schemas. En revanche  dans le schema on va trouver des objets (tables, indexes,...) on pourrait envisager d'effectuer des sauvegardes de tablespace (RMAN > Bakcup tablespace USERS;) . Il ne faut pas cependant perdre de vue que l'objectif est de constituer une sauvegarde cohérente ! Or une simple création d'index, de tables ou autre objets entrainera une modification du dictionnaire qui bien entendu se trouve dans les tablespace systemes.
-2/ Lorsqu'on effectue un ALTER DATABAS UNTIL CANCEL, Oracle va nous propser de rejourer les transactions présentes dans les redo online aussi bien que les redos archivés. Dans notre cas, on veut récupérer la base telle qu'on la sauvegardé( je rappelle qu'il sagissait d'une sauvegarde à froid). C'est pour cela que l'on TAPE CANCEL directement sans tenir compte des messages ORACLE.

Il ne faut pas perdre de vue l'objectif de la sauvegarde qui peut varier d'une entreprise à l'autre. En tout état de cause, avant de se lancer dans un plan de sauvegarde, il faut se poser les bonnes questions:
  • Tolérance à la perte de données (1 journée, 1 semaine, aucune ...)
  • Est-ce que la base peut être arréter pendant la sauvegarde ?
  • Espace disque necessore à la sauvegarde (si trop longue, peut-être faut il envisager une sauvegarde incrémentale)
  • Durée de la sauvegarde. Si trop longue, peut être faut il envisager une incrémentale avec activation d'un fichier de trace permettant de ne sauvegarder que les blocks modifés. 
  • Durée d'interruption acceptable pour une restauration ?
  • Les moyens mis en oeuvre pour avec un personnel compétent pour gérer la mise en place et l'application des procédures. A mon (humble) avis, les restauration, c'est un peu comme les alertes incendies il faut en programmer de façon aléatoire afin de vérifier le bon fonctionnement des procédures pour éviter les soucis le jour on l'on doit restaurer en production.

A plus,
LAO. 

 

Réponse de LAO le 08/10/2008 à 21h46
Bonjour, Est ce qu'avec une sauvegarde RMAN il est possible de ne restaurer qu'une seule table, comme on le ferait avec export ou expdp. Si oui comment peut on le faire sans avoir à restaurer le tablespace complet. Merci
Commentaire n°2 posté par debdba le 15/12/2008 à 15h04

Bonjour,

Comme mentionné dans le commentaire précédent, RMAN effectue une sauvegarde de fichier et par conséquent, il n'est donc pas possible de restaurer une table via RMAN . Après cela dépend ce que l'on veut faire.
- Si c'est une table qui vient d'être supprimée et que l'on dispose d'une version 10, il faut se tourner vers recyclebin
- Si une remontée dans le temps (mais pas trop loin quand meme), c''est plutot vers flashback database.


J'ajouterai que si on ne dispose pas des options flashback et recyclebin et qu'on a perdu une table, alors il faut envisager de restaurer le tbs contenant la table sur une autre base et ensuite faire export de la table en question puis réimport sur la base qui a perdu sa table.

LAO
LAO

Réponse de LAO le 15/12/2008 à 15h49
bonjour, je ne comprend pas à quel endroit dans le code peut on choisir le répertoire dans lequel sera la sauvegarde ? merci d'avance
Commentaire n°3 posté par pavot le 17/12/2008 à 14h31
bonjour,

En fait par défaut les fichiers de sauvegarde vont dans la FRA (Flash Recovery Area)
J'en parle dans l'article concernant le clonage d'une base.
http://www.lao-dba.com/article-23407812.html

LAO.

PS: Si le blog vous intéresse et que ce n'est pas déjà fait, pensez à vous inscrire à la news letter pour être informé des nouveaux articles.
Réponse de LAO le 17/12/2008 à 14h41
moi g un pb assez grave là!
est ce kil est possible de restaurer ma base de données sans avoir fait une sauvegarde au préalable?
en effet g u un mini crash là et g des messages du genre:
ora-01219:bdd fermée demande sur tables/vues fixes seulement
ora01110: le fichier 3 necessite une récupération après défaillance matérielle
ora01113: le fichier de données 3: c:oracleoradataesdrsys01.dbf
merci et c'est arrivé )à la suite d'une coupure brusque d'électricité!
Commentaire n°4 posté par madeleine le 04/05/2009 à 10h46

Bonjour,

( je ne sais pas si mon post est parti, du coup je recommence).

-1. faire une copie de tous les fichiers de la base (datafile, controlfile, redo,...) avant toute manipulations.
-2 Avez vous  ne serait ce qu'un export de votre base (qui pourrait faire office de sauvegarde).
-3 Avez vous un support ORACLE, (si oui), ne pas hesitez à les appeler.
-4 Si il s'agit d'une base, mieux de payer une prestattion (oracle ou consultant) pour récuperer votre base plutot que de tenter des manipulations qu'ils la rendront totalement inutilsable.
-5 Si par bonheur vous récuperez votre base, mettre un plan de sauvegarde !!!!!!

Réponse de LAO le 04/05/2009 à 11h03
g pas de sauvegarde c là où le bât bless g ke dalle! R I E N rien de chez rien!
svp aidez moi!
Commentaire n°5 posté par madeleine le 04/05/2009 à 11h19
Re bonjour,

Essayer sur la cette liste https://listes.cru.fr/sympa/info/oracle les gens sont plutot réactifs et peut être que quelqu'un aura une sugestion. Mais  si un fichier de la base est  mort et qu'il n'y a pas de sauvegarde .... c'est peut être foutu.. D'ou ma suggestion de faire appel au support ORACLE. Si c'est une base de production( ca m'étonnerait quand meme qu'une base de production ne soit pas sauvgegardée..) mieux de payer une prestattion à 1500 € que de perdres des semaines ou des mois de boulot.

LAO
Réponse de LAO le 04/05/2009 à 11h30
Bonjour,

Je fouinais sur le Web pour trouver un manuel de procédures des opérations de sauvegarde/restauration. Par bonheur, je suis tombé sur cet excellent article qui va beaucoup m'aider dans mon apprentissage d'oracle. Je suis débutant mais avec de solides habilités en SQL pour être développeur Web.

En 1, 2, 3, pourriez-vous exposer sur des procédures de sauvegarde, d'import ou d'export en utilisant des démarches manuelles, ie dans SQLPLUS ? Enfin, j'aimerais pouvoir consulter un modèle de manuel de procédures.

Mille mercis par avance.

Je vous écrivais d'Haïti
Commentaire n°6 posté par mcp le 29/05/2009 à 21h35

Bonjour,

Tout d'abord; merci pour les encouragements. On ne fait pas de sauvegarde via sqlplus, si on veut effectuer une sauvegarde à chaud (ou a froid) on peut utiliser l'utilitaire rman.exe (partie intégrante d'Oracle) pour ce qui est des imports / exports on peut utiliser les outils exp.exe et imp.exe (avant oracle 10) et à partir d'oracle 10 expdb.exe et impdb.exe. Si jamais tu maitrises l'anglais technique, je t'invite à aller sur otn.oracle.com ou toute les docs sont en lignes et trièes par thème. N'hesites pas si tu as des questions un peu plus précises. Mais j'ai prévu prochainement de reposter quelques articles (et oui ca fait plus de deux mois sans articles).

Bon courage pour la suite, et bienvenu dans le monde d'Oracle.

Réponse de LAO le 03/06/2009 à 11h11

Bonjour,

Bravo, toujours aussi intéressants vos articles!

Question : Puis-je copier cette sauvegarde (fichiers généres dans la FRA) sur une machine de secours et la restaurer telle quelle sachant que cette machine de secours a le même OS, même version d'Oracle et meme architecture (arborescence des fichiers oracle) ?

cdt,

Commentaire n°7 posté par sara le 22/04/2010 à 16h10

Bonjour,

 

Merci pour cet article simple et clair.

 

Cldt,

Hamid

Commentaire n°8 posté par Hamid le 12/10/2010 à 11h30

Tests en cours pour une sauvegarde à froid avec RMAN : http://www.mysqlplus.fr/2011/03/sauvegarde-a-froid-avec-rman-pas-si-simple/

Commentaire n°9 posté par Cédric le 28/03/2011 à 22h54

Bonjour,

J'ai lu votre article. Très interessant et complet.

Sinon pour le probleme de controle file. A-il été backupé ? Par défaut la valeur du paramètre RMAN "CONTROLFILE AUTOBACKUP" est à OFF. Il faudrait refaire le test avec en ayant configuré à ON avacnt de faire les backup.

 

@+

LAO

Réponse de LAO le 29/03/2011 à 07h09

Bonjour Lao, merci pour ta réponse.
Concernant l'autobackup, non, il n'est pas activé, ce serait trop simple !
Il faut voir cet article comme un exercice, je mettrai les recommandations quand je le terminerai.

Commentaire n°10 posté par Cédric le 29/03/2011 à 10h03
Ok, j'avais pu vu le coté "exercice". Fais moi signe lorsqu'il est terminé. Je toujours preneur de bon conseils ! @+
Réponse de LAO le 29/03/2011 à 11h25

Catégories

Recherche

Calendrier

Février 2012
L M M J V S D
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        
<< < > >>

Profil

  • LAO
  • My Oracle blog
  • Homme
  • 06/05/1972
  • IDF
  • DBA
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés