Bonjour,

en voulant dropper tous les objets d'une instance de ma base, je suis tombé sur l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Error on line 0
DROP TABLE HDBQUAL5.PI_DIRECT_DEBIT
 
ORA-00604: une erreur s'est produite au niveau SQL récursif 1
ORA-01578: bloc de données ORACLE altéré (fichier # 4, bloc # 161257)
ORA-01110: fichier de données 4 : '/home/hdradm/logi/oracle/PMHDB1P/DATA/DATA1.dbf'
Seul cet objet (avec un index lié) ne veut pas se détruire.
J'ai effectué un dbv sur le fichier de données, qui donne :

DBVERIFY - Verification complete

Total Pages Examined : 262144
Total Pages Processed (Data) : 47309
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 64090
Total Pages Failing (Index): 0
Total Pages Processed (Other): 138106
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 12634
Total Pages Marked Corrupt : 5
Total Pages Influx : 0
Highest block SCN : 667116904 (0.667116904)


Il y a donc des blocs corrompus dans ma base.

Pour corriger cela, j'ai donc suivi les instructions d'utilisation du package DBMS_REPAIR trouvées ici : http://download-west.oracle.com/docs...231/repair.htm

Seulement, au moment d'exécuter la procédure CHECK_OBJECT :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
DECLARE num_corrupt INT;
BEGIN
num_corrupt := 0;
DBMS_REPAIR.CHECK_OBJECT (
     SCHEMA_NAME => 'HDBQUAL5',
     OBJECT_NAME => 'PI_DIRECT_DEBIT',
     REPAIR_TABLE_NAME => 'REPAIR_TABLE',
     CORRUPT_COUNT =>  num_corrupt);
END;
/
...plutôt que de me retourner le nombre de blocs corrompus trouvés, la procédure me renvoit... la même erreur !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
DECLARE num_corrupt INT;
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 4, block # 161257)
ORA-01110: data file 4: '/home/hdradm/logi/oracle/PMHDB1P/DATA/DATA1.dbf'
ORA-06512: at "SYS.DBMS_REPAIR", line 293
ORA-06512: at line 4
Donc là je me trouve complètement bloqué.

Auriez-vous une idée de comment réparer/contourner cela ? Je précise que je suis sous Oracle 10g et que je suis assez novice concernant les DB...

Merci.