8
votes

Utilisation de la commande Rollback à Oracle

J'ai créé la table xxx

Comment puis-je récupérer la ligne? Si j'utilise xxx

mais après que xxx

pourquoi est-ce à venir?


0 commentaires

3 Réponses :


16
votes

Rollback indique à Oracle de faire rouler la transaction entière. Dans votre cas, les insérer et le Supprimer font partie de la même transaction, de sorte que le (code> annule inverse les deux opérations. Cela renvoie la base de données à l'état, il s'agissait immédiatement de la liste Create Table .

Quelques alternatives:

  1. Si vous deviez émettre un commettez après l'insertion , alors la relève Supprimer serait dans une transaction distincte et la restauration n'enverrait que l'effet de la relève Supprimer .
  2. Vous pouvez également créer un point de sauvegarde après avoir exécuté l'instruction Insérer , puis la restauration à ce point de sauvegarde après le Supprimer plutôt que de ramener toute la transaction.

3 commentaires

Au lieu de SQL> Supprimer étudiant; J'ai utilisé SQL> Supprimer de l'étudiant


1 rangée supprimée. Puis utilisé la restauration; puis sélectionnez * de l'étudiant; et il fonctionne.


@Bibhudash - Qu'est-ce qui ne fonctionne pas? Tout ce que vous avez affiché semble fonctionner car il est censé. Si ce n'est pas le comportement que vous voulez, vous devrez changer votre code. C'est pourquoi je vous ai donné quelques options différentes pour savoir comment changer votre code.



0
votes

Essayez

    CREATE TABLE your_table
     AS SELECT * FROM employees;

     ALTER TABLE your_table
     ENABLE ROW MOVEMENT;

     UPDATE your_table
      SET CON_TYPE = 'N';

    FLASHBACK TABLE your_table
       TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' minute);
           /*if you want to restore the table*/
       FLASHBACK TABLE print_media TO BEFORE DROP;

    /*Restore the table with other name*/
       FLASHBACK TABLE your_table TO BEFORE DROP RENAME TO your_table;


0 commentaires

20
votes

Cela pourrait être un peu déroutant si vous ne faites pas de rentabilisation régulière. Je mettais ici des erreurs que vous êtes susceptible de faire s'il n'utilise pas régulièrement de points de sauvegarde sur une base de sauvegarde.

1. Ceci est votre cas. Nous annulons toute transaction au début, à savoir. au dernier (implicite) commettre

 Entrez la description de l'image ici


2. Ici, nous avons la sauvegarde, mais cela n'a pas d'importance, car il n'est pas mentionné dans la déclaration de restauration. Nous retournons donc à la dernière validation, comme auparavant.

 Entrez la description de l'image ici

3. C'est délicat. La restauration va toujours à la dernière validation, car la syntaxe n'était pas correcte (mais aucune erreur n'a été signalée par la base de données 11G). La syntaxe correcte est la restauration à :

 Entrez la description de l'image ici

4. Enfin, nous avons la syntaxe correcte: Rollback à

 Entrez la description de l'image ici

Certaines lectures: https://docs.oracle.com /cd/b19306_01/server.102/b14200/statifs_9021.htm


0 commentaires