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 :

installation de DBMS_REPAIR


Sujet :

Administration Oracle

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut installation de DBMS_REPAIR
    Bonjour,

    en10G R2 quand j'utilise DBMS_REPAIR

    je reçois:
    ORA-24123: feature IOT support is not yet implemented
    ORA-06512: at "SYS.DBMS_REPAIR", line 293
    Comment je peux installer SYS.DBMS_REPAIR ?

    D'avance merci.

  2. #2
    Membre éprouvé Avatar de laurentleturgez
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 88
    Par défaut
    bonjour,

    est-ce que le package existe dans ta base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql> desc dbms_repair
    ... te répond t-il quelquechose ?

    Ce message s'apparente plus à une fonctionnalité non implémentée sur les IOTs.

    Peux tu nous envoyer le code exact utilisé (avec la procédure/fonction du package utilisé).

    Merci
    Laurent.

  3. #3
    Membre éclairé
    Avatar de mboubidi
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Novembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 326
    Par défaut
    Bonjour,
    tu trouveras dbmsrpr.sql dans $ORACLE_HOME/rdbms/admin
    pour installer le package.
    salutations.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    merci à tous.
    Laurent :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
    SQL> DESC dbms_repair
    PROCEDURE ADMIN_TABLES
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     TABLE_NAME                     VARCHAR2                IN     DEFAULT
     TABLE_TYPE                     BINARY_INTEGER          IN
     ACTION                         BINARY_INTEGER          IN
     TABLESPACE                     VARCHAR2                IN     DEFAULT
    PROCEDURE CHECK_OBJECT
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SCHEMA_NAME                    VARCHAR2                IN
     OBJECT_NAME                    VARCHAR2                IN
     PARTITION_NAME                 VARCHAR2                IN     DEFAULT
     OBJECT_TYPE                    BINARY_INTEGER          IN     DEFAULT
     REPAIR_TABLE_NAME              VARCHAR2                IN     DEFAULT
     FLAGS                          BINARY_INTEGER          IN     DEFAULT
     RELATIVE_FNO                   BINARY_INTEGER          IN     DEFAULT
     BLOCK_START                    BINARY_INTEGER          IN     DEFAULT
     BLOCK_END                      BINARY_INTEGER          IN     DEFAULT
     CORRUPT_COUNT                  BINARY_INTEGER          OUT
    PROCEDURE DUMP_ORPHAN_KEYS
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SCHEMA_NAME                    VARCHAR2                IN
     OBJECT_NAME                    VARCHAR2                IN
     PARTITION_NAME                 VARCHAR2                IN     DEFAULT
     OBJECT_TYPE                    BINARY_INTEGER          IN     DEFAULT
     REPAIR_TABLE_NAME              VARCHAR2                IN     DEFAULT
     ORPHAN_TABLE_NAME              VARCHAR2                IN     DEFAULT
     FLAGS                          BINARY_INTEGER          IN     DEFAULT
     KEY_COUNT                      BINARY_INTEGER          OUT
    PROCEDURE FIX_CORRUPT_BLOCKS
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SCHEMA_NAME                    VARCHAR2                IN
     OBJECT_NAME                    VARCHAR2                IN
     PARTITION_NAME                 VARCHAR2                IN     DEFAULT
     OBJECT_TYPE                    BINARY_INTEGER          IN     DEFAULT
     REPAIR_TABLE_NAME              VARCHAR2                IN     DEFAULT
     FLAGS                          BINARY_INTEGER          IN     DEFAULT
     FIX_COUNT                      BINARY_INTEGER          OUT
    FUNCTION ONLINE_INDEX_CLEAN RETURNS BOOLEAN
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     OBJECT_ID                      BINARY_INTEGER          IN     DEFAULT
     WAIT_FOR_LOCK                  BINARY_INTEGER          IN     DEFAULT
    PROCEDURE REBUILD_FREELISTS
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SCHEMA_NAME                    VARCHAR2                IN
     OBJECT_NAME                    VARCHAR2                IN
     PARTITION_NAME                 VARCHAR2                IN     DEFAULT
     OBJECT_TYPE                    BINARY_INTEGER          IN     DEFAULT
    PROCEDURE REBUILD_SHC_INDEX
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SEGMENT_OWNER                  VARCHAR2                IN
     CLUSTER_NAME                   VARCHAR2                IN
    PROCEDURE SEGMENT_FIX_STATUS
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SEGMENT_OWNER                  VARCHAR2                IN
     SEGMENT_NAME                   VARCHAR2                IN
     SEGMENT_TYPE                   BINARY_INTEGER          IN     DEFAULT
     FILE_NUMBER                    BINARY_INTEGER          IN     DEFAULT
     BLOCK_NUMBER                   BINARY_INTEGER          IN     DEFAULT
     STATUS_VALUE                   BINARY_INTEGER          IN     DEFAULT
     PARTITION_NAME                 VARCHAR2                IN     DEFAULT
    PROCEDURE SKIP_CORRUPT_BLOCKS
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     SCHEMA_NAME                    VARCHAR2                IN
     OBJECT_NAME                    VARCHAR2                IN
     OBJECT_TYPE                    BINARY_INTEGER          IN     DEFAULT
     FLAGS                          BINARY_INTEGER          IN     DEFAULT
    Et voici l'utilisation :
    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
     
    SET SERVEROUTPUT ON
    DECLARE 
    num_corrupt INT;
    BEGIN
    for t in (select owner, table_name from dba_tables where owner='SYSMAN') loop
    num_corrupt := 0;
    DBMS_REPAIR.CHECK_OBJECT (
    SCHEMA_NAME => t.Owner,
    OBJECT_NAME => t.Table_Name,
    REPAIR_TABLE_NAME => 'REPAIR_TABLE',
    CORRUPT_COUNT => num_corrupt);
    DBMS_OUTPUT.PUT_LINE('Table: '||t.Owner||'.'||t.Table_Name||' number corrupt: ' || TO_CHAR (num_corrupt));
    END LOOP;
    END;
    /
    mboubidi,
    je ai lancé le script. Il m'a affiché Package créé. Mais après en utilisation (le script ci-dessus) je me retrouve avec les erreure précédentes :
    Merci.

  5. #5
    Membre éclairé
    Avatar de mboubidi
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Novembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 326
    Par défaut
    est ce que t'as des bloques corrompus?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    merci, oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ORA-01578: bloc de données ORACLE altéré (fichier # 3, bloc # 30029)
    ORA-01110: fichier de données 3 : 'D:\BASE\RMAN\SYSAUX01.DBF'
    Mais je veux utiliser dbms_repair pour cela.

  7. #7
    Membre éclairé
    Avatar de mboubidi
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Novembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 326
    Par défaut
    Citation Envoyé par big1 Voir le message
    merci, oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ORA-01578: bloc de données ORACLE altéré (fichier # 3, bloc # 30029)
    ORA-01110: fichier de données 3 : 'D:\BASE\RMAN\SYSAUX01.DBF'
    Mais je veux utiliser dbms_repair pour cela.
    c'est quoi la version de ta BD?

  8. #8
    Membre éprouvé Avatar de laurentleturgez
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 88
    Par défaut
    Salut,

    Il semble que tu essaies de récupérer un bloc d'une IOT. Et ce n'est pas possible avec le package DBMS_REPAIR. (cf. http://download.oracle.com/docs/cd/B...htm#sthref3159 : Index-organized tables and LOB indexes are not supported.)

    Comme visiblement tu dois être en version enterprise edition, si tu disposes de backup RMAN, tu peux passer par RMAN ... ca sera plus simple.

    Essaies ce bloc RMAN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    rman> run {
       2   blockrecover datafile 3 block 30029;
       3   }
    Laurent

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    version est 10.2.0.1.

    Non je ne dispose pas de backup RMAN. Il parait que même ayant RMAN il faut avoir un BACKUP datant avant l'apparition de block corrompu. Or Oracle ne le detect qu'au moment de l'utilser donc on ne peut pas connaître la date exact.

  10. #10
    Membre éprouvé Avatar de laurentleturgez
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 88
    Par défaut
    Quand on détecte un bloc corrompu, la procédure (BLOCKRECOVER) remet en place le bloc issu du backup et rejoue les transactions sur ce bloc (avec les archivelog, d'où la nécessité d'être en ARCHIVELOG) pour le remettre dans un état consistent.

    Pour ton cas, ca ne sent pas très bon : DBMS_REPAIR.CHECK_TABLE qui ne fonctionne pas sur une IOT, pas de sauvegarde)

    Dans la mesure où c'est un objet du SYSAUX (donc système), peux tu nous donner un peu plus d'info sur cet objet (nom, owner, type etc.)

    Laurent

  11. #11
    Membre éclairé
    Avatar de mboubidi
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Novembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 326
    Par défaut
    est ce que tu as détecté les segments touché par la corruption?

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> SELECT tablespace_name, segment_type, owner, segment_name
      2         FROM dba_extents
      3          WHERE file_id = 3
      4   and 30029 between block_id AND block_id + blocks - 1;
     
    TABLESPACE_NAME                SEGMENT_TYPE       OWNER
    ------------------------------ ------------------ ---------------
    SEGMENT_NAME
    -----------------------------------------------------------------
    SYSAUX                         TABLE              SYSMAN
    MGMT_SYSTEM_PERFORMANCE_LOG

  13. #13
    Membre éclairé
    Avatar de mboubidi
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Novembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 326
    Par défaut
    ok, essaye de faire un mouve dans le meme tablespace afin de libéré ces bloques. et un rebuild, après formate les bloques corrompus

  14. #14
    Membre éprouvé Avatar de laurentleturgez
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 88
    Par défaut
    Plus simple ...

    Plutôt que de TOUS les objets de ton schéma SYSAUX, tu peux réaliser un check uniquement sur cet objet.

    En gros, le problème est que tu récupères toutes les tables du schéma SYSAUX dans ta boucle, et tu les vérifie une à une avec la procédure. Or, si tu tombes sur une IOT (ou une exception du package), tu tombes sur une exception.

    Donc, sois tu réalises un test dans ta boucle pour savoir si tu n'es pas dans une exception, sois tu réalises le check objet par objet.

    ce code là, fonctionne très bien sur l'objet en question :

    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
    SET SERVEROUTPUT ON
    DECLARE 
    num_corrupt INT;
    BEGIN
    DBMS_REPAIR.ADMIN_TABLES (
         TABLE_NAME => 'REPAIR_TABLE',
         TABLE_TYPE => dbms_repair.repair_table,
         ACTION     => dbms_repair.create_action,
         TABLESPACE => 'USERS');
    num_corrupt := 0;
    DBMS_REPAIR.CHECK_OBJECT (
    SCHEMA_NAME => 'SYSMAN',
    OBJECT_NAME => 'MGMT_SYSTEM_PERFORMANCE_LOG',
    REPAIR_TABLE_NAME => 'REPAIR_TABLE',
    CORRUPT_COUNT => num_corrupt);
    DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
    END;
    /

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    merci Laurent,
    je dois cloner la base dans laquelle il y a des blocks corrumpus et ensuite applique le script.

    Je pense que de toute façon j'ai ma réponse pour l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-24123: feature IOT support is not yet implemented
    DBMS.REPAIRE ne support pas les table IOT. Sinon le package DBMS.REPAIRE est installé.

    Mon but était de tester RDBMS.REPAIR pour voir si je peux l'utiliser pour réparer mes blocks corrumpus.

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    Laurent,

    apparement la table n'est pas corrompue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select count (*) from sysman.MGMT_SYSTEM_PERFORMANCE_LOG;
     
      COUNT(*)
    ----------
          3342
    Alors je me demande pourquoi dans alertolog je suis avertie ?

    D'avance merci.

  17. #17
    Membre éprouvé Avatar de laurentleturgez
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 88
    Par défaut
    Salut,

    - Est-ce que la requête que tu mentionnes a été exécutée avec le cache de tampon vide ? (afin de forcer des lectures physiques sur tout l'objet) ?

    - la vue V$DATABASE_BLOCK_CORRUPTION contient-elle des lignes ?

    - As tu essayé de réaliser un "dbv" sur le fichier du tablespace sysaux ? le cas échéant, il faudrait tenter une opération rman de BACKUP VALIDATE DATABASE (pour vérifier tous les blocs de ta base) et réinterroger la V$DATABASE_BLOCK_CORRUPTION.

    Laurent

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Installer ses composants
    Par Geronimo dans le forum C++Builder
    Réponses: 14
    Dernier message: 18/06/2002, 14h51
  3. Réponses: 19
    Dernier message: 24/05/2002, 16h36
  4. Réponses: 7
    Dernier message: 01/05/2002, 20h23
  5. [Kylix] Comment installer Kylix sur Mandrake 8.2 (page2)
    Par Philippe LE PONT dans le forum EDI
    Réponses: 3
    Dernier message: 01/05/2002, 12h52

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