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 :

Problème de récupération


Sujet :

Administration Oracle

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème de récupération
    Bonjour à tous,

    J'ai un petit problème.
    J'avais une table Test01.
    J'ai accidentellement fait un delete from Test01;

    Y a-t-il un moyen de récupérer les données de ma table?

    Merci.

  2. #2
    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 version

  3. #3
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Il faut utiliser flashback table mais il faut que la table ait été AVANT le delete en "ENABLE ROW MOVEMENT" et que les données soient encore en UNDO (i.e. delete fait récemment)

    Ensuite, il faut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     flashback table TEST01 to timestamp 'date avant le delete'

  4. #4
    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
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FLASHBACK TABLE TEST01 TO BEFORE DROP;
    ou import ou restauration de la base, etc...

    On manque d'info pour répondre correctement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Et si c'est une table modifiée fréquemment alors il faudrait peut-être utiliser logminer pour savoir jusqu'à quel point revenir exactement.
    Consultant et formateur Oracle

  6. #6
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par orafrance Voir le message
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FLASHBACK TABLE TEST01 TO BEFORE DROP;
    ou import ou restauration de la base, etc...

    On manque d'info pour répondre correctement
    non, l'opération est un delete, pas un drop.
    la recycle bin n'est d'aucune utilité.

    Le plus sûr (perte du moins d'activité transactionnelle) est quand même le flashback table
    Et si on doit fouiller dans les logs avec logminers comme l'indique Michel, cela diminue les chances de pouvoir restaurer, le temps jouant contre nous. (les undos étant volatiles)

  7. #7
    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
    en effet, j'avais lu trop vite

  8. #8
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Michel, c'est bien ce qu'il me semblait, il y a beaucoup plus simple que LogMiner pour retrouver le SCN : flashback version query !

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    SQL> create table test_flashback (col1 varchar2(30));
     
    Table created.
     
    SQL> insert into test_flashback (col1) select table_name from dba_tables where Table_Name like '%USER%';
     
    10 rows created.
     
    SQL> select * from test_flashback;
     
    COL1
    ------------------------------
    USER$
    USER_ASTATUS_MAP
    USER_HISTORY$
    STREAMS$_PRIVILEGED_USER
    REPCAT$_USER_AUTHORIZATIONS
    REPCAT$_USER_PARM_VALUES
    LOGMNRG_USER$
    P$LOCKCONFLICTUSER
    LOGMNRT_USER$
    LOGMNR_USER$
     
    10 rows selected.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> delete from test_flashback where col1 like '%LOGMNR%';
     
    3 rows deleted.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> select * from test_flashback;
     
    COL1
    ------------------------------
    USER$
    USER_ASTATUS_MAP
    USER_HISTORY$
    STREAMS$_PRIVILEGED_USER
    REPCAT$_USER_AUTHORIZATIONS
    REPCAT$_USER_PARM_VALUES
    P$LOCKCONFLICTUSER
     
    7 rows selected.
     
    SQL> select versions_startscn, versions_endscn, versions_operation, col1 
      2  from test_flashback versions between scn minvalue and maxvalue;
     
    VERSIONS_STARTSCN VERSIONS_ENDSCN V COL1
    ----------------- --------------- - ------------------------------
           3989942404                 D LOGMNR_USER$
           3989942404                 D LOGMNRT_USER$
           3989942404                 D LOGMNRG_USER$
           3989942399                 I USER$
           3989942399                 I USER_ASTATUS_MAP
           3989942399                 I USER_HISTORY$
           3989942399                 I STREAMS$_PRIVILEGED_USER
           3989942399                 I REPCAT$_USER_AUTHORIZATIONS
           3989942399                 I REPCAT$_USER_PARM_VALUES
           3989942399      3989942404 I LOGMNRG_USER$
           3989942399                 I P$LOCKCONFLICTUSER
     
    VERSIONS_STARTSCN VERSIONS_ENDSCN V COL1
    ----------------- --------------- - ------------------------------
           3989942399      3989942404 I LOGMNRT_USER$
           3989942399      3989942404 I LOGMNR_USER$
     
    13 rows selected.
     
    SQL> flashback table test_flashback to scn 3989942403;
     
    Flashback complete.
     
    SQL> select * from test_flashback;
     
    COL1
    ------------------------------
    USER$
    USER_ASTATUS_MAP
    USER_HISTORY$
    STREAMS$_PRIVILEGED_USER
    REPCAT$_USER_AUTHORIZATIONS
    REPCAT$_USER_PARM_VALUES
    LOGMNRG_USER$
    P$LOCKCONFLICTUSER
    LOGMNRT_USER$
    LOGMNR_USER$
     
    10 rows selected.
    on voit donc dans le flashback version query que les lignes ont été insérées au SCN 3989942399 puis effacées au SCN 3989942404.
    Il faut donc revenir au SCN 3989942403 !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Et bien tu as entièrement raison Leo. C'est beaucoup plus simple
    Consultant et formateur Oracle

Discussions similaires

  1. [TIBSQL] Problème de récupération d'un champs
    Par TitiFr dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/08/2005, 13h33
  2. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  3. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  4. Nouveau problème de récupération de valeurs.
    Par pmboutteau dans le forum ASP
    Réponses: 4
    Dernier message: 09/03/2005, 10h48
  5. Problème de récupération de texte de formulaire
    Par bigourson dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2004, 16h27

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