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.
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.
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'
ou :
ou import ou restauration de la base, etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part FLASHBACK TABLE TEST01 TO BEFORE DROP;
On manque d'info pour répondre correctement
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
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)
Michel, c'est bien ce qu'il me semblait, il y a beaucoup plus simple que LogMiner pour retrouver le SCN : flashback version query !
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.
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.
Il faut donc revenir au SCN 3989942403 !
Et bien tu as entièrement raison Leo. C'est beaucoup plus simple
Consultant et formateur Oracle
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager