Comment connaitre la valeur d'un champs de table il y a de cela 10 minutes ?.
Comment connaitre l'historique des versions de lignes modifiées ?.
FLASHBACK QUERY et FLASHBACK VERSIONS QUERY permettent d'interroger les différentes versions d'une ligne dans une table dans un intervalle de temps.
• est un mécanisme d'interrogation uniquement.
• n'indique pas ce qui a changé.
• ne fonctionne pas si des opérations DDL ont eu lieu dans la table.
• ne peut pas interroger au delà de la valeur de UNDO_RETENTION.
Une demonstration dans laquelle je vais effectuer 5 mises à jour sur un champ d'une table et ensuite afficher les versions par temps et SCN.
Valeur initiale du champ.
|
SQL> SELECT soc_code, soc_raison_soc FROM societe WHERE soc_code=49; |
| soc_code | soc_raison_soc |
| 49 | DBACENTER |
Update de la ligne.
|
SQL> UPDATE societe SET soc_raison_soc='Update 1' WHERE soc_code=49; |
Interrogation avec VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE.
SELECT soc_code,
soc_raison_soc,
VERSIONS_STARTTIME,
VERSIONS_ENDTIME,
VERSIONS_OPERATION DML,
VERSIONS_STARTSCN
FROM societe
VERSIONS BETWEEN TIMESTAMP
systimestamp - INTERVAL '11' MINUTE
AND systimestamp - INTERVAL '1' MINUTE
WHERE soc_code = 49;
|
| soc_code | soc_raison_soc | VERSIONS_STARTTIME | VERSIONS_ENDTIME | DML | VERSIONS_STARTSCN |
| 49 | Update 5 | 12/09/2010 02:56:33. | U | 3957445 | |
| 49 | Update 4 | 12/09/2010 02:56:21. | 12/09/2010 02:56:33. | U | 3957434 |
| 49 | Update 3 | 12/09/2010 02:56:12. | 12/09/2010 02:56:21. | U | 3957430 |
| 49 | Update 2 | 12/09/2010 02:56:03. | 12/09/2010 02:56:12. | U | 3957426 |
| 49 | Update 1 | 12/09/2010 02:55:33. | 12/09/2010 02:56:03. | U | 3957415 |
| 49 | DBACENTER | 12/09/2010 02:54:56. | 12/09/2010 02:55:33. | U | 3957397 |
Pour une interrogation par SCN utilisez : VERSIONS BETWEEN SCN 3957397 AND 3957445
Description des pseudos colonnes.
• VERSIONS_STARTTIME = Premier timestamp de la version
• VERSIONS_STARTSCN = Premier SCN de la version
• VERSIONS_ENDTIME = Fin timestamp de la version
• VERSIONS_ENDSCN = Dernier SCN de la version
• VERSIONS_OPERATION = Type d'opération DML de la version
FLASHBACK QUERY.
Autre variante d'interrogation unique, qu'elle était la version en cours il y 5 minutes avec AS OF TIMESTAMP.
SELECT * FROM societe AS OF TIMESTAMP systimestamp - INTERVAL '5' MINUTE WHERE soc_code=49; |
ou
SELECT * FROM societe AS OF SCN 3957426 WHERE soc_code=49; |
| Liens en rapport avec l'article et qui sont susceptibles de vous intéresser |
|
• Oracle FLASHBACK TRANSACTION QUERY • SCN System Change Number Oracle • FLASHBACK et DROP TABLE avec RECYCLEBIN |