Comment utiliser flashback requête dans Oracle 12c

Avez-vous jamais voulu une machine de temps? Aucune telle chose existe. Ou faut-il? Le temps de la machine Oracle 12c connu comme Retour en arrière vous permet de revenir en arrière, avance rapide, et de récupérer des situations avec facilité. Retour en arrière peut sembler intimidant, mais la fonctionnalité est simple.

Une fonctionnalité appelée Flashback Query est un des plus simples et plus faciles à utiliser des variations de la technologie Oracle Flashback. Autrement dit, il vous permet d'interroger une table à un point dans le passé. Cela signifie que, malgré toutes les mises à jour, insertions et des suppressions qui ont pu se produire, vous voyez le tableau tel qu'il existait au moment que vous choisissez.

Voici une démonstration rapide avec l'exemple de schéma, HR:

  1. Connectez-vous à SQL * Plus en tant qu'utilisateur de ressources humaines.

  2. Regardez les données de votre table de départements.

  3. Restreindre la requête à la fois de minimiser la production et de faire la démonstration plus évidente. Tapez la commande suivante:

    Vous devriez voir quelque chose comme ceci:

    DEPARTMENT_ID Department_Name ------------- ------------------------------ 120 Treasury130 entreprise Contrôle Tax140 Et rangées Credit150 Actionnaire Services160 Benefits170 Manufacturing180 Construction190 Contracting200 Operations210 IT Support220 NOC230 IT Helpdesk240 gouvernement Sales250 détail Sales260 Recruiting270 Payroll16 sélectionnés.
  4. Modifier la table en supprimant les lignes sélectionnées dans la sortie précédente. Pour retirer la rangées, de type

    Vous devriez voir ceci:




    16 rangées supprimées.
  5. Engagez vos modifications en tapant

    Vous devriez voir ceci:

    Commit complète.
  6. Exécutez de nouveau la requête originale.

    Vous devriez voir ceci:

    pas de lignes sélectionnées

    La prochaine étape est l'endroit où vous utilisez la magie de Flashback Query. Pensez au temps avant la suppression a eu lieu. Dans cet exemple cas, il ya cinq minutes.

  7. Tapez quelque chose de semblable à ce qui suit pour voir les données tel qu'il existait il ya cinq minutes:

Vous voyez les lignes telles qu'elles existaient à l'étape 2. La clé est l'AS de la clause de TIMESTAMP. Pour la cible de l'horodatage, vous pouvez voir que l'exemple utilise les mathématiques sur la fonction de SYSDATE. SYSDATE représente l'heure actuelle, en ce moment.

Soustrayant 1 SYSDATE signifie hier. L'exemple soustrait la fraction 1/288, ce qui signifie cinq minutes, à partir de SYSDATE. Pour obtenir cette fraction, l'exemple utilise la formule suivante:

(24 heures dans un jour) x 60 (minutes et heures) = 1440 (minutes) en un jour

Donc, 5 sur 1 440 est égale à 1 sur 288.

Vous pouvez également utiliser un timestamp explicite à la place d'une fonction de SYSDATE. Par example:

sélectionnez department_id, department_namefrom departmentsAS timestamp TO_DATE ('16 -août 2013 20:04:00 ',' DD-MON-AAAA HH24: MI: SS ') où manager_id est null-

Voici une astuce. Supposons que vous avez accidentellement supprimé ces lignes et que vous souhaitez les insérer dans votre table. Vous pouvez utiliser Flashback Query pour faire une telle chose. Cela va être beaucoup rapide que de faire une reprise de RMAN à un point dans le temps.

Pour insérer vos lignes supprimées dans votre tableau, le type

lt; insérer dans departmentsselect * de departmentsAS timestamp TO_DATE ('16 -août 2013 20:04:00 ',' DD-MON-AAAA HH24: MI: SS ') où est null-manager_id>

Vous devriez voir ceci:

16 lignes créées.

Interrogez la table et, lorsque vous êtes satisfait, vos changements.

Vous ne pouvez flasher remontent aussi loin que votre réglage pour le paramètre instance undo_retention. Par défaut, ce paramètre est réglé sur 15 minutes (900 secondes). Si le temps vous souhaitez revenir à est plus loin que votre undo_retention, vous ne pouvez pas être en mesure de voir vos données et vous recevrez une erreur.

Avant de prendre la pointe précédente et de définir votre undo_retention pour refléter la valeur de temps d'un mois, considérer que cela va provoquer votre UNDO tablespace de croître, car il a pour stocker des images de vos anciennes données. Vous devriez soigneusement équilibrer une mise à la consommation de l'espace undo_retention réaliste.


» » » Comment utiliser flashback requête dans Oracle 12c