IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Drop undo tablespace


Sujet :

Administration Oracle

  1. #21
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu peux tenter un RECOVER UNTIL TIME AVANTTONDROP

  2. #22
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par nikeou
    Non le fichier physique UNDOTBS01.dbf existe toujours.
    ...
    Puis-je encore agir avec ce datafile ?
    Ah, bonne nouvelle ça !!

    Donc déjà il faut remettre le fichier ONLINE, s'il veut bien.

    Ensuite pour chaque segment UNDO relatif à ce fichier, faire l'opération suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter system dump undo header _SYSSMU1$;
    alter system dump undo header _SYSSMU2$;
    Ca va vous générer (pour chaque segment) un fichier de trace sous le répertoire désigne par USER_DUMP_DEST.

    Dans chacun de ces fichiers, recherchez la section TRN TBL, et examinez la colonne STATE. Si vous trouvez systématiquement 9 dans cette colonne, ça veut dire que toutes les transactions étaient terminées. Et dans ce cas vous pourrez réellement supprimer l'ancien tablespace UNDO et son fichier sous-jacent sans risque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRN TBL::
     
      index  state cflags  wrap#    uel         scn            dba            parent-xid    nub     stmt_num
      ------------------------------------------------------------------------------------------------
       0x00    9    0x00  0x018d  0x0020  0x0000.124f9720  0x00804226  0x0000.000.00000000  0x00000001   0x00000000
       0x01    9    0x00  0x018e  0x0007  0x0000.124f98f2  0x00804227  0x0000.000.00000000  0x00000001   0x00000000
    Si vous trouvez une autre valeur que 9, à ma connaissance c'est mort, et vous devrez recréer la base.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #23
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Le fichier est de de nouveau ONLINE. ça c'est bon.

    En revanche je n'arrive pas à lancer mes opérations sur les segments de rollback :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> ALTER system dump undo header _SYSSMU1$;
    ALTER system dump undo header _SYSSMU1$
                                  *
    ERREUR Ó la ligne 1 :
    ORA-00911: CaractÞre non valide
     
    SQL> ALTER system dump undo header '_SYSSMU1$';
    ALTER system dump undo header '_SYSSMU1$'
    *
    ERREUR Ó la ligne 1 :
    ORA-01534: le rollback segment '_SYSSMU1$' n'existe pas
    Quelle doit-être la bonne syntaxe ?

  4. #24
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Essayez avec "..."

  5. #25
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Il faut entourer les noms de segment UNDO par des apostrophes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER system dump undo header '_SYSSMU1$';
    Vous ne retrouvez plus _SYSSMU1$ dans DBA_ROLLBACK_SEGS ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  6. #26
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Bon, restons calme.

    Effectivement avec guillemets ou apostrophes j'ai le message qui me dit que le rollback segment '_SYSSMU1$' n'existe pas.
    Alors j'essaie donc de vérifier dans la table DBA_ROLLBACK_SEGS.
    Pour consulter la table DBA_ROLLBACK_SEGS il faut que la base soit ouverte.

    Je l'ouvre donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> alter database open;
    alter database open
    *
    ERREUR Ó la ligne 1 :
    ORA-01190: le fichier de contôle ou le fichier de données 2 est antérieur au
    dernier RESETLOGS
    ORA-01110: fichier de données 2 : 'D:\ORACLE\ORADATA\SIGEDM92\UNDOTBS01.DBF'
    Revoilà mon UNDOTBS01.DBF qui se pointe...

    Je suis complètement bloqué. Merci encore pour votre aide.

  7. #27
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    En fait, je suis à peu près sûr que de toute façon toutes mes transactions étaient terminées avant le plantage de ma base puisque cela a eu lieu après les heures de fermeture de l'entreprise avec aucune activité sur le serveur ORACLE.

    N'est-il pas possible de droper le UNDOTBS01.DBF et de redémarrer sur un nouveau UNDOTBS comme j'essayais de le faire au début de cette discussion.

  8. #28
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par nikeou
    N'est-il pas possible de droper le UNDOTBS01.DBF et de redémarrer sur un nouveau UNDOTBS comme j'essayais de le faire au début de cette discussion.
    la bonne procédure aurait été de

    1. changer la valeur de undo_tablespace
    2. redémarrer la base
    3. drop la tablespace undotbs1 y compris les fichiers


    de faire un SHUTDOWN ABORT + OFFLINE DROP, c'est tout sauf propre

    Maintenant il faut réparer ton erreur. Quand tu dis "j'ai un dump", tu veux bien dire "j'ai pas de vraie stratégie de backup, je fais seulement un export"... non?

    Difficile pour moi de t'aider sans risquer de t'enfoncer encore plus dans les problèmes

  9. #29
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par nikeou
    N'est-il pas possible de droper le UNDOTBS01.DBF et de redémarrer sur un nouveau UNDOTBS comme j'essayais de le faire au début de cette discussion.
    Si, c'est possible, et je peux vous donner la manip.
    Mais si par malchance, vos anciens segments UNDO sont référencés par des transactions non terminées, vous n'échapperez pas à la recréation de la base.

    C'est pourquoi je vous ai proposé préalablement une procédure de vérification.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  10. #30
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Oui effectivement je dois réparer proprement mon erreur...

    Je ne dispose que d'un export, c'est bien ça, car la base est en place depuis peu et il est vrai que malgré mes appels du pied aucune vraie stratégie de backup n'a été mise en place avec notre service informatique.

    Bref mea culpa. Je vous remercie infiniement pour votre aide. Il ne me reste, demain, qu'à remonter une nouvelle base dans laquelle j'importerai mes données issues du DUMP.

    Merci à bientôt.

  11. #31
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Aaaah d'accord Pomalaix, je suis preneur puisque de toute façon il ne me reste pas d'autres choix apparemment.

    Merci d'avance.

  12. #32
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Voici la procédure expérimentée à l'instant sur une base avec le même incident (on peut dire que tu es verni)

    1. modifie le init.ora pour commenter toutes les lignes relatives au undo.
    2. tu ajoutes le paramètre _corrupted_rollback_segments en listant les segments _SYSSMUxx$ http://www.developpez.net/forums/sho...d.php?t=235296
    3. tu montes la base avec ce pfile (startup mount pfile=...)
    4. tu droppes les datafiles du UNDO (alter database datafile 'D:\ORACLE\ORADATA\SIGEDM92\UNDOTBS01.DBF' offline drop)
    5. tu ouvres la base (alter database open)
    6. tu dropes le UNDO et tu le recrées.


    Il n'y a plus qu'à redémarrer la base sur le pfile original

  13. #33
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Ce n'est pas encore perdu à 100% hein !

    Vous pouvez remettre le fichier OFFLINE, et essayer de redémarrer la base en ignorant les anciens segments UNDO.
    Pour cela, ajoutez le paramètre suivant dans votre init.ora :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _offline_rollback_segments= _SYSSMU1$, _SYSSMU2$, _SYSSMU3$, _SYSSMU4$, _SYSSMU5$, _SYSSMU6$, _SYSSMU7$, _SYSSMU8$, _SYSSMU9$, _SYSSMU10$
    Si ça marche, on passera à l'étape suivante.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  14. #34
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par Pomalaix
    Mais si par malchance, vos anciens segments UNDO sont référencés par des transactions non terminées, vous n'échapperez pas à la recréation de la base.
    en effet

  15. #35
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Merci pour toutes ces infos, j'essaie ça demain à la première heure et vous tiendrez informés de la suite des évènements.

    Bonne soirée.

  16. #36
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Bon décidément ça ne commence pas très bien.

    Je monte ma base puis je lance l'ordre de droper le UNDOTBS01.dbf et là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> alter database datafile 'd:\oracle\oradata\sigedm92\undotbs01.dbf' offline
    drop;
    alter database datafile 'd:\oracle\oradata\sigedm92\undotbs01.dbf' offline drop
    *
    ERREUR Ó la ligne 1 :
    ORA-03113: fin de fichier sur canal de communication
    J'essaie de redémarrer ma base pour voir si c'est mieux, mais impossible sans l'option abort :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQL> shutdown normal
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    Je demande si un reboot du serveur ne lui ferait pas le plus grand bien. Malheureusement le serveur n'est pas dédié ORACLE et cette manip ne sera envisageable que ce soir.

    A moins que vous ayez une autre idée ?...

  17. #37
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    quelle erreur y a-t-il dans l'alert.log ?

  18. #38
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 6
    Points
    6
    Par défaut
    Bon. Désolé de ne pas vous avoir répondu plus tôt. Suite au rédémérrage du serveur, nombreux problème d'OS et de HD sont apparus...

    Décision a été rapidement prise de remonter la base sur un autre serveur.

    Suivi d'un import de l'ensemble des données issues d'un dump d'avant crash.

    Recompilation des procédures, reconstructions des index, vérification des éléments invalides... et la base renaît enfin de ses cendres sans perte.

    Laborieuse situation qui m'a pleinement fait réaliser l'importance d'une politique de backup digne de ce nom et nous allors sérieusement nous y pencher.

    Merci pour toutes vos informations. Vos précieux conseils pour la récupération de la base avec un UNDOTBS corrompu me serviront peut-être un jour et je garde ça préciseusement dans un coin.

    Désolé de vous avoir fait perdre un peu de temps et merci encore infiniement aux rédacteurs.

    Bonne continuation à tous.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [oracle9i-Linux] Comment vider un UNDO tablespace
    Par Loïck dans le forum Oracle
    Réponses: 8
    Dernier message: 03/12/2009, 13h53
  2. undo tablespace se remplit
    Par big1 dans le forum Oracle
    Réponses: 29
    Dernier message: 11/10/2006, 13h32
  3. Réponses: 8
    Dernier message: 04/10/2005, 19h27
  4. [ORACLE 9i] UNDO tablespace perdu
    Par prolice dans le forum Oracle
    Réponses: 12
    Dernier message: 16/03/2005, 18h34
  5. [DBA] Erreur drop datafile..tablespace
    Par chand_bing dans le forum Oracle
    Réponses: 4
    Dernier message: 17/11/2004, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo