1- Vue d’ensemble
Les techniques de flashback sont un ensemble de fonctionnalités proposées par Oracle qui permettent de voir l’état passé de données, ou de ramener une table ou la totalité de la base de données dans le passé.
Les fonctionnalités proposées sont les suivantes :
- Flashback Query : permet de lire les données telles qu’elles étaient à un instant dans le passé (appary en version 9i).
- Flashback Version Query : permet de voir toutes les versions d’une ligne sur un certain intervelle de temps (apparu en version 10).
- Flashback Transaction Query) : permet de voir les modifications réalisées par une ou plusieurs transactions sur un certain intervalle de temps (apparue en version 10).
- Flashback Transaction : permet d’annuler les modifications d’une transaction, et de ses transactions dépendantes( apparue en version 11).
- Flashback Data Archive (Oracle Total Recall) : permet de conserver sur le long terme, toutes les modifications apportées à une table (apparue en version 11).
- Flashback Table : permet de ramener une table dans l état où elle était, juste avant sa suppression (apparue en version 10).
- Flashback Database : permet de ramener la totalité de la base de données dans l’état où elle était à un certain moment dans le passé (apparue en version 11).
Seule la fonctionnalité Flashback Query est disponible dans toutes les éditions de la base de données (et donc notamment en Standart Edition).
La fonctionnalité Flashback Data Archive, est une option de l’Entreprise Edition et nécessite donc, une licence supplémentaire.
Les autres fonctionnalités de Flashback nécessitent l’Entreprise Edition, mais sans option supplémentaire.
Les fonctionnalités de Flashback de requête (Flashback Query, Flashback Version Query et Flashback Transaction Query), et la fonctionnalité de Flashback Table, utilisent les informations d’annulation pour revenir en arrière. Le paramètre UNDO_RETENTION et le tablespace d’annulation doivent donc être correctement dimensionnés, si vous souhaitez pouvoir retourner loin dans le passé.
2- Niveau ligne
Flashback Query
Pour lire les données telles qu’elles étaient à un instant donné du passé, vous pouvez utiliser l’option AS OF sur une table présente dans la clause FROM d’une requête SELECT.
Syntaxe :
Nom_table AS OF { TIMESTAMP | SCN } expression
L’option TIMESTAMP permet de retourner à un instant donné du passé en indiquant une date et une heure ; dans ce cas, l’expression doit être de type TIMESTAMP. L’option SCN permet de retourner à un instant donné du passé en indiquant un numéro SCN ; dans ce cas, l’expression doit être un nombre.
SQL> select * from emp where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- --------------------------------
7369 SMITH CLERK 7902 17/12/80 800 20
SQL> select to_char(sysdate, 'DD/MM/YYY HH24:MI:SS') "SYSDATE",
2 dbms_flashback.get_system_change_number "SCN"
3 FROM dual;
SYSDATE SCN
------------------ ----------
06/10/013 15:31:48 3446120
La fonction GET_SYSTEM_Change_NUMBER du package DBMS_FLASHBACK retourne le numéro SCN courant. Il faut le privilège EXECUTE sur le package pour l’utiliser.
Un peu plus tard :
SQL> update emp set ename = 'ZAKARIA' where empno = '7369';
1 ligne mise à jour.
SQL> commit;
Validation effectuée.
SQL> select to_char(sysdate, 'DD/MM/YYY HH24:MI:SS') "SYSDATE",
2 dbms_flashback.get_system_change_number "SCN"
3 FROM dual;
SYSDATE SCN
------------------ ----------
06/10/013 15:38:41 3446364
Maintenant je vais retourner vers le passé avec la notion du temps :
SQL> SELECT * FROM EMP
2 AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '10' minute
3 where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17/12/80 800 20
Ou bien avec la notion du SCN :
SQL> SELECT * FROM EMP
2 AS OF SCN 3446120
3 where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17/12/80 800 20
NB : c'est un résumé de la partie FLASHBACK du livre "Administration ORACLE 11g" de OLIVIER HEURTEL.
Les techniques de flashback sont un ensemble de fonctionnalités proposées par Oracle qui permettent de voir l’état passé de données, ou de ramener une table ou la totalité de la base de données dans le passé.
Les fonctionnalités proposées sont les suivantes :
- Flashback Query : permet de lire les données telles qu’elles étaient à un instant dans le passé (appary en version 9i).
- Flashback Version Query : permet de voir toutes les versions d’une ligne sur un certain intervelle de temps (apparu en version 10).
- Flashback Transaction Query) : permet de voir les modifications réalisées par une ou plusieurs transactions sur un certain intervalle de temps (apparue en version 10).
- Flashback Transaction : permet d’annuler les modifications d’une transaction, et de ses transactions dépendantes( apparue en version 11).
- Flashback Data Archive (Oracle Total Recall) : permet de conserver sur le long terme, toutes les modifications apportées à une table (apparue en version 11).
- Flashback Table : permet de ramener une table dans l état où elle était, juste avant sa suppression (apparue en version 10).
- Flashback Database : permet de ramener la totalité de la base de données dans l’état où elle était à un certain moment dans le passé (apparue en version 11).
Seule la fonctionnalité Flashback Query est disponible dans toutes les éditions de la base de données (et donc notamment en Standart Edition).
La fonctionnalité Flashback Data Archive, est une option de l’Entreprise Edition et nécessite donc, une licence supplémentaire.
Les autres fonctionnalités de Flashback nécessitent l’Entreprise Edition, mais sans option supplémentaire.
Les fonctionnalités de Flashback de requête (Flashback Query, Flashback Version Query et Flashback Transaction Query), et la fonctionnalité de Flashback Table, utilisent les informations d’annulation pour revenir en arrière. Le paramètre UNDO_RETENTION et le tablespace d’annulation doivent donc être correctement dimensionnés, si vous souhaitez pouvoir retourner loin dans le passé.
2- Niveau ligne
Flashback Query
Pour lire les données telles qu’elles étaient à un instant donné du passé, vous pouvez utiliser l’option AS OF sur une table présente dans la clause FROM d’une requête SELECT.
Syntaxe :
Nom_table AS OF { TIMESTAMP | SCN } expression
L’option TIMESTAMP permet de retourner à un instant donné du passé en indiquant une date et une heure ; dans ce cas, l’expression doit être de type TIMESTAMP. L’option SCN permet de retourner à un instant donné du passé en indiquant un numéro SCN ; dans ce cas, l’expression doit être un nombre.
SQL> select * from emp where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- --------------------------------
7369 SMITH CLERK 7902 17/12/80 800 20
SQL> select to_char(sysdate, 'DD/MM/YYY HH24:MI:SS') "SYSDATE",
2 dbms_flashback.get_system_change_number "SCN"
3 FROM dual;
SYSDATE SCN
------------------ ----------
06/10/013 15:31:48 3446120
La fonction GET_SYSTEM_Change_NUMBER du package DBMS_FLASHBACK retourne le numéro SCN courant. Il faut le privilège EXECUTE sur le package pour l’utiliser.
Un peu plus tard :
SQL> update emp set ename = 'ZAKARIA' where empno = '7369';
1 ligne mise à jour.
SQL> commit;
Validation effectuée.
SQL> select to_char(sysdate, 'DD/MM/YYY HH24:MI:SS') "SYSDATE",
2 dbms_flashback.get_system_change_number "SCN"
3 FROM dual;
SYSDATE SCN
------------------ ----------
06/10/013 15:38:41 3446364
Maintenant je vais retourner vers le passé avec la notion du temps :
SQL> SELECT * FROM EMP
2 AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '10' minute
3 where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17/12/80 800 20
Ou bien avec la notion du SCN :
SQL> SELECT * FROM EMP
2 AS OF SCN 3446120
3 where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17/12/80 800 20
NB : c'est un résumé de la partie FLASHBACK du livre "Administration ORACLE 11g" de OLIVIER HEURTEL.
Aucun commentaire:
Enregistrer un commentaire