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

Oracle Discussion :

[ORACLE 9i] UNDO tablespace perdu


Sujet :

Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut [ORACLE 9i] UNDO tablespace perdu
    Nous avons eu un crash system sur une machine de test. Nous voudrions la remontée.
    Nous avons réussi a remonter 2 des 3 bases hébergé car nous avions tous les *.DBF

    Pour la 3eme il nous manque le UNDO tablespace, comment faire pour remonter la base sans ce DBF ?

    Nous obtenons les erreurs suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    SQL> CREATE CONTROLFILE REUSE DATABASE "MAPXXXX" NORESETLOGS  NOARCHIVELOG
      2  --  SET STANDBY TO MAXIMIZE PERFORMANCE
      3      MAXLOGFILES 5
      4      MAXLOGMEMBERS 3
      5      MAXDATAFILES 100
      6      MAXINSTANCES 1
      7      MAXLOGHISTORY 340
      8  LOGFILE
      9    GROUP 1 (
     10      'P:\ORADATA\MAPXXXX\REDO01.LOG',
     11      'S:\ORADATA\MAPXXXX\REDO01A.LOG'
     12    ) SIZE 100M,
     13    GROUP 2 (
     14      'P:\ORADATA\MAPXXXX\REDO02.LOG',
     15      'S:\ORADATA\MAPXXXX\REDO02A.LOG'
     16    ) SIZE 100M
     17  -- STANDBY LOGFILE
     18  DATAFILE
     19    'P:\ORADATA\MAPXXXX\SYSTEM01.DBF',
     20    'S:\ORADATA\MAPXXXX\UNDOTBS01.DBF',
     21    'P:\ORADATA\MAPXXXX\BO_DEV.DBF',
     22    'P:\ORADATA\MAPXXXX\BO_PROD.DBF',
     23    'P:\ORADATA\MAPXXXX\DRSYS01.DBF',
     24    'P:\ORADATA\MAPXXXX\INDX01.DBF',
     25    'P:\ORADATA\MAPXXXX\TOOLS01.DBF',
     26    'P:\ORADATA\MAPXXXX\TS_MAPXXXX.DBF',
     27    'P:\ORADATA\MAPXXXX\USERS01.DBF',
     28    'P:\ORADATA\MAPXXXX\XDB01.DBF'
     29  CHARACTER SET WE8MSWIN1252
     30  ;
    CREATE CONTROLFILE REUSE DATABASE "MAPXXXX" NORESETLOGS  NOARCHIVELOG
    *
    ERREUR Ó la ligne 1 :
    ORA-01503: Echec CREATE CONTROLFILE
    ORA-01159: le fichier n'est pas de la meme BdD que les precedents. - mauvais ID
    de BdD
    ORA-01110: fichier de donnees 11 : 'S:\ORADATA\MAPXXXX\UNDOTBS01.DBF'
    En fait nous avons recréer la base à partir de DBCA avec un template que nous avions sauvegardé, et ensuite nous avons recopier les DBF qui nous restaient encore dans leurs répertoire respectifs.
    Le temp et le undo étaient perdu.

    Si vous avez un procédure pour remonter une base dans ce genre de situation nous somme prenneur.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    au lieu de
    CREATE CONTROLFILE REUSE DATABASE "MAPXXXX" NORESETLOGS NOARCHIVELOG
    utiliser
    CREATE CONTROLFILE SET DATABASE "MAPXXXX" NORESETLOGS NOARCHIVELOG
    faire une sauvegarde à froid avant toutes manipulations.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    la ligne avec le fichier UNDO doit être commentée (si le fichier est absent)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut
    la ligne avec le fichier UNDO doit être commentée (si le fichier est absent)
    Nous avons fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    SQL> CREATE CONTROLFILE SET DATABASE "MAPXXXX" RESETLOGS  NOARCHIVELOG
      2  --  SET STANDBY TO MAXIMIZE PERFORMANCE
      3      MAXLOGFILES 5
      4      MAXLOGMEMBERS 3
      5      MAXDATAFILES 100
      6      MAXINSTANCES 1
      7      MAXLOGHISTORY 340
      8  LOGFILE
      9    GROUP 1 (
     10      'P:\ORADATA\MAPXXXX\REDO01.LOG',
     11      'S:\ORADATA\MAPXXXX\REDO01A.LOG'
     12    ) SIZE 100M,
     13    GROUP 2 (
     14      'P:\ORADATA\MAPXXXX\REDO02.LOG',
     15      'S:\ORADATA\MAPXXXX\REDO02A.LOG'
     16    ) SIZE 100M
     17  -- STANDBY LOGFILE
     18  DATAFILE
     19    'P:\ORADATA\MAPXXXX\SYSTEM01.DBF',
     20    --'S:\ORADATA\MAPXXXX\UNDOTBS01.DBF',
     21    'P:\ORADATA\MAPXXXX\BO_DEV.DBF',
     22    'P:\ORADATA\MAPXXXX\BO_PROD.DBF',
     23    'P:\ORADATA\MAPXXXX\DRSYS01.DBF',
     24    'P:\ORADATA\MAPXXXX\INDX01.DBF',
     25    'P:\ORADATA\MAPXXXX\TOOLS01.DBF',
     26    'P:\ORADATA\MAPXXXX\TS_MAPXXXX.DBF',
     27    'P:\ORADATA\MAPXXXX\USERS01.DBF',
     28    'P:\ORADATA\MAPXXXX\XDB01.DBF'
     29  CHARACTER SET WE8MSWIN1252
     30  ;
     
    Fichier de contr¶le crÚÚ.
     
    SQL> alter database open;
    alter database open
    *
    ERREUR Ó la ligne 1 :
    ORA-01589: doit utiliser l'option RESETLOGS ou NORESETLOGS pour l'ouverture de
    BDD
    et ensuite ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> alter database open RESETLOGS;
    alter database open RESETLOGS
    *
    ERREUR Ó la ligne 1 :
    ORA-01194: Le fichier 1 necessite plus de recuperation pour etre coherent
    ORA-01110: fichier de donnees 1 : 'P:\ORADATA\MAPLIEGE\SYSTEM01.DBF'
     
     
    SQL> alter database recover
      2  ;
    alter database recover
    *
    ERREUR Ó la ligne 1 :
    ORA-00283: session de recuperation annulee pour cause d'erreurs
    ORA-01610: recuperation a l'aide de l'option BACKUP CONTROLFILE a executer
    Nous somme un peu bloqué à ce niveau la !

  5. #5
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    maintenant il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE;
    ALTER DATABASE OPEN RESETLOGS

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Le problème c'est de réussir à démarrer sans le UNDO. Le UNDO c'est en fait des rollbacks segments déclarés dans le tablespace SYSTEM.

    Essaye ceci :

    1°) mettre en commentaire tout ce qui ressemble à UNDO ou ROLLBACK dans le init.ora (normalement : undo_management, undo_retention, undo_tablespace ou rollback_segments)

    2°) démarrer la base en mode restreint :
    3°) supprimer le datafile perdu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter database datafile 'S:\ORADATA\MAPXXXX\UNDOTBS01.DBF' OFFLINE DROP;
    4°) créer un nouveau tablespace UNDO

    5°) arrêter la base et modifier le init.ora pour donner le nouveau UNDO

    6°) redémarre la base

    Si ça ne fonctionne pas, réessaye en ajoutant dans le init.ora le paramétre _OFFLINE_ROLLBACK_SEGMENTS=(<liste des rbs de dba_rollback_segs>) à la 1° étape

    A lire :
    http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=1013221.6
    http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=198640.1


    AVANT TOUT : pense à sauvegarder les fichiers en l'état

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Par défaut
    Slt,

    4°) créer un nouveau tablespace UNDO
    ne faut-il pas faire avant :

    pour pouvoir le supprimer ?

    A+

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Mount the database in restrict mode --- STARTUP RESTRICT MOUNT;
    Offline drop the datafile;
    Open the database
    Drop all rollback segments belong the the tablespace
    Drop and recreate tablespace
    Recreate rollback segments

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut
    Merci pour tous ces bons conseils, la base est maintenant remontée.
    a+

  10. #10
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    ce problème arrive souvent quand on utilise une tablespace UNDOTBS d'une autre base ou l'undotbs est corrompu. sinon faire un dump de l'entête du fichier undotbs01.dbf et d'un autre fichier de données (exp : system) pour vérifier les ID de la base

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Attention également, Oracle a un bug qui plante la base si on supprime le UNDO base ouverte

  12. #12
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Par défaut
    [quote="orafrance"]2°) démarrer la base en mode restreint :
    A la fin ne pas oublier de lancer la commande suivante

    ALTER SYSTEM DISABLE RESTRICTED SESSION;

    Pour permettre l'ouverture de la base à tous les utilisateurs

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    je conseillerai plutôt d'arrêter et redémarre même si cette commande doit suffir


+ Répondre à la discussion
Cette discussion est résolue.

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. Réponses: 8
    Dernier message: 12/12/2007, 15h35
  3. undo tablespace se remplit
    Par big1 dans le forum Oracle
    Réponses: 29
    Dernier message: 11/10/2006, 13h32
  4. Oracle 10g et tablespace
    Par alfdev dans le forum Oracle
    Réponses: 3
    Dernier message: 21/09/2006, 17h21
  5. Réponses: 8
    Dernier message: 04/10/2005, 19h27

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