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 :

Datablock corruption (ORA-1110) avec une base en noarchivelog


Sujet :

Administration Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2016
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Datablock corruption (ORA-1110) avec une base en noarchivelog
    Bonjour,
    J'aimerai prendre conseils auprès de vous, on m'informe ce matin qu'il ya des corruption de blocs et que la base est en no archivelog, avec un backup à froid tous les 25 du mois .

    SQL>  select * from v$database_block_corruption;
         FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO
    ---------- ---------- ---------- ------------------ ---------
             5     387206          1                  0 CHECKSUM
             5     387324          1                  0 FRACTURED
             5     387356          1                  0 CORRUPT
             5     387325          3                  0 NOLOGGING
             5     387328         28                  0 NOLOGGING
    J'avais tenté de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RMAN> RECOVER DATAFILE 5 BLOCK 387206;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RMAN> RECOVER CORRUPTION LIST;
    Mais ça n'a pas résolu le souci.

    Après quelques recherches on me propose de supprimer et de créer un nouveau tablespace avec le même nom ou de faire DBMS_REPAIR :
    J'ai lancé le DBMS_REPAIR.ADMIN_TABLES et DBMS_REPAIR.CHECK_OBJECT mais ils me retournent une erreur comme quoi le nom d'objet existe déjà à SYS.DBMS_SQL et à SYS.DBMS_REPAIR
    (ORA-00955 et ORA-06512).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    DBMS_REPAIR.ADMIN_TABLES (
         TABLE_NAME => 'REPAIR_TABLE',
         TABLE_TYPE => dbms_repair.repair_table,
         ACTION     => dbms_repair.create_action,
         TABLESPACE => 'MonTablespace');
    END;
    /

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Je ne comprends aps la phrase : "J'ai lancé le DBMS_REPAIR.ADMIN_TABLES et DBMS_REPAIR.CHECK_OBJECT mais ils me retournent une erreur comme quoi le nom d'objet existe déjà à SYS.DBMS_SQL et à SYS.DBMS_REPAIR (ORA-00955 et ORA-06512)."

    Tu peux nous poster le code PLSQL complet et le retour d'Oracle sous SQL*Plus?

    Dans ton post on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    DBMS_REPAIR.ADMIN_TABLES (
         TABLE_NAME => 'REPAIR_TABLE',
         TABLE_TYPE => dbms_repair.repair_table,
         ACTION     => dbms_repair.create_action,
         TABLESPACE => 'MonTablespace');
    END;
    /
    mais sont absents : DBMS_REPAIR.CHECK_OBJECT et SYS.DBMS_SQL. Pourquoi tu préfixes par SYS ce package? Tu l'exécutes avec quel user?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2016
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Hello,
    je vais tenté d'être plus clair

    je me connecte en sqlplus / as sysdba .

    Ce que je lance sur SQL Plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SET SERVEROUTPUT ON
    DECLARE num_corrupt INT;
    BEGIN
    num_corrupt := 0;
    DBMS_REPAIR.CHECK_OBJECT (
         SCHEMA_NAME => 'MySchema',
         OBJECT_NAME => 'VM_INDIVIDU',
         REPAIR_TABLE_NAME => 'REPAIR_TABLE',
         CORRUPT_COUNT =>  num_corrupt);
    DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
    END;
    /
    ça me retourne :
    number corrupt: 34
    Proc▒dure PL/SQL termin▒e avec succ▒s.

    je lance ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    DBMS_REPAIR.ADMIN_TABLES (
         TABLE_NAME => 'REPAIR_TABLE',
         TABLE_TYPE => dbms_repair.repair_table,
         ACTION     => dbms_repair.create_action,
         TABLESPACE => 'MonTablespace');
    END;
    /
    et ça me retourne :
    ERREUR ▒ la ligne 1 :
    ORA-00955: ce nom d'objet existe d▒j▒
    ORA-06512: ▒ "SYS.DBMS_SQL", ligne 1199
    ORA-06512: ▒ "SYS.DBMS_REPAIR", ligne 245
    ORA-06512: ▒ ligne 2


  4. #4
    Membre confirmé
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 392
    Points : 552
    Points
    552
    Par défaut Datablock corruption avec une base en mode noarch
    La table repair_table existe déjà et elle a été peuplée par la prmière éxécution
    de la procedure dbms_repair.check_object il reste plus qu'à l'intérroger

    Sinon, si le nombre de lignes dans les blocs ne sont pas trop importants, alors tu peux
    créer une nouvelle table et y inserer les lignes non corrompus par les blocs en question
    ensuite tu reconstruit les indexes .

    A propos des corruptions data bloc, si la base est mode archivelog, et tu dispose des backups
    à jour, tu peux les récuperer facilement en un seul commande RMAN .

    Bonne chance

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2016
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Hello,
    La table repair_table existe déjà et elle a été peuplée par la première exécution
    de la procedure dbms_repair.check_object il reste plus qu'à l’interroger
    Yep j'avais capté ^^
    Mais j'aimerai savoir comment je peux réparer :p

    Sinon, si le nombre de lignes dans les blocs ne sont pas trop importants, alors tu peux
    créer une nouvelle table et y insérer les lignes non corrompus par les blocs en question
    ensuite tu reconstruit les indexes .
    Pour l'instant on m'a interdit de supprimer quoi que ce soit, mais je tenterai de faire reconstruire une nouvelle table.
    A propos des corruptions data bloc, si la base est mode archivelog, et tu dispose des backups
    à jour, tu peux les récuperer facilement en un seul commande RMAN .
    Hélas, non, la base est en no archivelog et les derniers backups que j'ai sont à froid et ils datent du 25/08 (ça aurait été trop facile sinon :p).

    En tout cas merci pour ta réponse

Discussions similaires

  1. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08
  2. probleme avec une base de donnée postgres SQL
    Par Alexlesilex dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/06/2005, 22h09
  3. problème de connexion avec une base firebird
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/05/2005, 11h40
  4. "Erreur SQL générale" sous NT2000 avec une base ac
    Par aleister dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/04/2005, 20h10
  5. [WSAD5] Connexion avec une base Lotus
    Par mickey dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/03/2004, 08h37

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