Explication détaillée basée sur Oracle Flashback (à voir absolument) _oracle

2020-05-23

Oracle 9i a commencé à prendre en charge le flashback, Oracle10g a commencé à prendre pleinement en charge la fonction de flashback, Oracle11g a été amélioré, pour que tout le monde puisse restaurer rapidement les données, les données historiques de requête fournissent une méthode très pratique.

Cet article présente principalement l'utilisation des flashbacks couramment utilisés par Oracle. Parmi eux, les flashbacks qui ne sont pas couramment utilisés ne sont pas présentés ici.

I. Présentation d'Oracle Flashback

                                                                                                                                                                                                                                                                                                                                                                                                                          

Deuxièmement, l'utilisation d'Oracle Flashback

1, Flashback sur

(1) Conditions nécessaires pour activer le flashback

a. Ouvrez le journal d'archivage


 SQL> liste des journaux d'archivage;
 Mode journal de la base de données Mode archive
 Archivage automatique activé
 Destination de l'archive / home / U01 / app / oracle / oradata / testdb / arch
 Séquence de journaux en ligne la plus ancienne 844
 Prochaine séquence de journaux à archiver 846
 Séquence de journaux actuelle 846

 ## S'il n'est pas activé, exécutez alter database archivelog; dans l'état de montage; 
 

b. Définissez une zone de flashback raisonnable

db_recovery_file_dest: spécifiez l'emplacement de la zone de récupération flash

db_recovery_file_dest_size: spécifiez la quantité d'espace libre dans la zone de récupération flash

db_flashback_retention_target: spécifiez l'heure à laquelle la base de données peut être restaurée, l'unité est en minutes, la valeur par défaut est 1440 minutes (1 jour), la valeur réelle dépend de la taille de la zone de flashback

(2) Vérifiez si le flashback est activé


 SQL> sélectionnez flashback_on dans la base de données v $;
 FLASHBACK_ON
 ------------------
 NON 
 

(3) Activez le flashback

a. Ouvrez l'archive


 Statut du montage: modifier le journal des archives de la base de données; 
 

b. Définir la zone de flashback


 SQL> alter system set db_recovery_file_dest = '/ home / U01 / app / oracle / fast_recovery_area' scope = both;
 Système modifié.
 SQL> alter system set db_recovery_file_dest_size = 60G scope = both;
 Système modifié.
 SQL> alter system set db_flashback_retention_target = 4320 scope = both;
 Système modifié. 
 

c. Activez le flashback (10g est sur le support)


 SQL> modifier le flashback de la base de données;
 Base de données modifiée. 
 

(4) Assurez-vous que le flashback est activé


 SQL> sélectionnez flashback_on dans v $ datQpnVQ == 0 $ TABLEAU 2017-12-14: 15: 02: 06
 SQL> table flashback t avant la suppression;

 Flashback terminé.

 SQL> sélectionnez * dans t;

 ID NOM
 ---------- -------------------------------------
 2
 4 
 

Remarque: Même si le flashback n'est pas démarré, tant que la corbeille est activée, la table DROP peut être renvoyée.

Cependant, si vous écrasez continuellement, vous devez spécifier le nom de la table restaurée. Si la table existe déjà, vous devez restaurer le renommage.


 SQL> show recyclebin;
 NOM ORIGINAL NOM RECYCLEBIN TYPE D'OBJET TEMPS DE DÉPART
 ---------------- ------------------------------ ----  -------- -------------------
 T BIN $ YEh2QcvddJLgUxyAgQpnVQ == 0 $ TABLEAU 2017-12-14: 15: 07: 54
 T BIN $ YEh2QcvcdJLgUxyAgQpnVQ == 0 $ TABLEAU 2017-12-14: 15: 07: 27
 SQL> table de flashback "BIN $ YEh2QcvcdJLgUxyAgQpnVQ == $ 0" à avant la suppression;
 Flashback terminé.
 SQL> show recyclebin;
 NOM ORIGINAL NOM RECYCLEBIN TYPE D'OBJET TEMPS DE DÉPART
 ---------------- ------------------------------ ----  -------- -------------------
 T BIN $ YEh2QcvddJLgUxyAgQpnVQ == 0 $ TABLEAU 2017-12-14: 15: 07: 54
 SQL> flashback table t to before drop rename to tt;
 Flashback terminé. 
 

(4) Base de données Flashback (modification des données tronquée / multi-table)

Le flashback de la base de données doit être effectué à l'état monté et la bibliothèque de flashback basée sur un instantané peut être ouverte sous open

La base de données Flashback sert principalement à restaurer la base de données à un certain moment ou SCN dans le passé. Lorsque la base de données présente une erreur logique, ouvrez les journaux de réinitialisation de la base de données

a. Flashback de toute la bibliothèque

Exemple de flashback de base de données


 SQL> sélectionnez * dans scott.EMP;

 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
 ---------- ---------- --------- ---------- -----------  -------- ---------- ---------- ----------
 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600300 30
 VENDEUR WARD 7698 1981-02-22 00:00:00 1250500 30
 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
 KING PRESIDENT 1981-11-17 00:00:00 5000 10
 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
 lignes sélectionnées.

 SQL> table tronquée scott.EMP;

 Tableau tronqué.
 SQL> arrêt immédiat;
 Base de données fermée.
 Base de données démontée.
 L'instance ORACLE s'est arrêtée.
 SQL> montage de démarrage;
 L'instance ORACLE a démarré.

 Zone globale du système total 9.4067E + 10 octets
 Taille fixe 2263936 octets
 Taille variable 9395242112 octets
 Tampons de base de données 8.4557E + 10 octets
 Tampons de rétablissement 112766976 octets
 Base de données montée.
 SQL> base de données flashback sur l'horodatage to_timestamp ('2017-12-14 14:12:46', 'aaaa-mm-jj HH24: MI: SS');

 Flashback terminé.
 SQL> alter database open resetlogs;

 Base de données modifiée.

 SQL> sélectionnez * dans scott.emp;

 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
 ---------- ---------- --------- ---------- -----------  -------- ---------- ---------- ----------
 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600300 30
 VENDEUR WARD 7698 1981-02-22 00:00:00 1250500 30
 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
 KING PRESIDENT 1981-11-17 00:00:00 5000 10
 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
 lignes sélectionnées. 
 

b. Flashback sur l'instantané

Les points de capture instantanée Flashback peuvent être créés pour les bases de données principale et de secours, puis restaurés au point de capture spécifié, mais une fois la bibliothèque principale restaurée sur le point de capture, la synchronisation de la base de données de secours doit être resynchronisée


 SQL> sélectionnez * dans scott.dept;

   DEPTNO DNAME LOC ADDR
 ---------- -------------- ------------- -------------  -----------------
 COMPTABILITÉ NEW YORK
 RECHERCHE DALLAS
 VENTE CHICAGO
    
 SQL> créer un point de restauration avant_201712151111 garantir la base de données flashback;
 Point de restauration créé.

 SQL> créer la table scott.t en sélectionnant * dans scott.dept;
 Table créée.

 SQL> table tronquée scott.t;
 Tableau tronqué.
 SQL> arrêt immédiat;
 Base de données fermée.
 Base de données démontée.
 L'instance ORACLE s'est arrêtée.
 SQL> montage de démarrage;
 L'instance ORACLE a démarré.

 Zone globale du système total 9.4067E + 10 octets
 Taille fixe 2263936 octets
 Taille variable 9663677568 octets
 Tampons de base de données 8.4289E + 10 octets
 Tampons de rétablissement 112766976 octets
 Base de données montée.
 SQL> base de données flashback pour restaurer le point before_201712151111;
 Flashback terminé.
 SQL> alter database open resetlogs;
 Base de données modifiée.

 À l'heure actuelle, la bibliothèque principale scott.t n'existe plus:
 SQL> sélectionnez * dans scott.t;
 sélectionnez * dans scott.t
           *
 ERREUR à la ligne 1:
 ORA-00942: la table ou la vue n'existe pas
 À ce moment, le scott de la bibliothèque esclave existe toujours et la synchronisation maître-veille est terminée.
 Solution: au moment où la bibliothèque maître crée un instantané, la bibliothèque esclave arrête automatiquement d'appliquer les journaux. Une fois la bibliothèque maître flashée, réappliquez les journaux.
 Si vous avez effectué les opérations ci-dessus, vous pouvez choisir de reconstruire à partir de la bibliothèque
 ALTER DATABASE REGISTER LOGFILE '/xx/xx/archive.dbf'; 
 

c. Veille d'instantané de flashback

Cette fonction est très pratique dans 11GR2, elle peut créer automatiquement un point de flashback, ouvrir un journal de flashback, après avoir terminé le test de données en ligne, puis effectuer un flashback de base de données pour restaurer la relation maître-veille


 sélectionnez scn, STORAGE_SIZE, to_char (time, 'yyyy-mm-dd hh24: mi: ss') time, NAME from v $ restore_point;
 sélectionnez database_role, open_mode, db_unique_name, flashback_on dans v $ database;

 SQL> définir la ligne 200;
 SQL> set pagesize 2000;
 SQL> select database_role, open_mode, db_unique_name, flashback_on from v $ database;

 DATABASE_ROLE OPEN_MODE DB_UNIQUE_NAME FLASHBACK_ON
 ---------------- -------------------- --------------  ---------------- ------------------
 VEILLE PHYSIQUE LIRE SEULEMENT testdbms NON


 SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;

 Base de données modifiée.

 SQL> select database_role, open_mode, db_unique_name, flashback_on from v $ database;

 DATABASE_ROLE OPEN_MODE DB_UNIQUE_NAME FLASHBACK_ON
 ---------------- -------------------- --------------  ---------------- ------------------
 INSTANTANÉ MONTÉ EN STANDBY testdbms RESTORE POINT UNIQUEMENT

 SQL> modifier la base de données ouverte;

 Base de données modifiée.

 SQL> sélectionnez open_mode dans la base de données v $;

 OPEN_MODE
 --------------------
 LIRE ÉCRIRE


 À ce stade, l'opération de veille:
 SQL> sélectionnez * dans scott.emp;

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
 ---------- ---------- --------- ---------- -----------  -------- ---------- ---------- ----------
 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600300 30
 VENDEUR WARD 7698 1981-02-22 00:00:00 1250500 30
 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
 KING PRESIDENT 1981-11-17 00:00:00 5000 10
 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
 lignes sélectionnées.

 SQL> table tronquée scott.emp;

 Tableau tronqué.

 Opérations de la bibliothèque principale:
 SQL> créer la table scott.t comme select * from scott.dept;

 Table créée.

 SQL> sélectionnez * dans scott.t;

   DEPTNO DNAME LOC ADDR
 ---------- -------------- ------------- -------------  -----------------
 COMPTABILITÉ NEW YORK
 RECHERCHE DALLAS
 VENTE CHICAGO

 La base de données de secours est restaurée sur un serveur de secours physique
 SQL> arrêt immédiat;
 Base de données fermée.
 Base de données démontée.
 L'instance ORACLE s'est arrêtée.
 SQL> montage de démarrage;
 L'instance ORACLE a démarré.

 Zone globale du système total 9.4067E + 10 octets
 Taille fixe 2263936 octets
 Taille variable 9663677568 octets
 Tampons de base de données 8.4289E + 10 octets
 Tampons de rétablissement 112766976 octets
 Base de données montée.
 SQL> ALTER DATABASE CONVERT EN PHYSICAL STANDBY;

 Base de données modifiée.
 SQL> arrêt immédiat;
 ORA-01507: base de données non montée


 L'instance ORACLE s'est arrêtée.
 SQL> démarrage;
 L'instance ORACLE a démarré.

 Zone globale du système total 9.4067E + 10 octets
 Taille fixe 2263936 octets
 Taille variable 9663677568 octets
 Tampons de base de données 8.4289E + 10 octets
 Tampons de rétablissement 112766976 octets
 Base de données montée.
 Base de données ouverte.

 ## À ce stade, les données de la base de données de secours ont été restaurées au point où la veille de l'instantané a changé.
 SQL> select database_role, open_mode, db_unique_name, flashback_on from v $ database;

 DATABASE_ROLE OPEN_MODE DB_UNIQUE_NAME FLASHBACK_ON
 ---------------- -------------------- --------------  ---------------- ------------------
 VEILLE PHYSIQUE LIRE SEULEMENT testdbms NON

 SQL> sélectionnez * dans scott.emp;

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
 ---------- ---------- --------- ---------- -----------  -------- ---------- ---------- ----------
 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600300 30
 VENDEUR WARD 7698 1981-02-22 00:00:00 1250500 30
 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
 BLAKE MANAGER 7839
 

    
www.xd1998.com@2001-2030Partage De Technologie
Niveau de flashback Scène de flashback Technologie Flashback Dépendance d'objet Affecte les données
Base de données Troncature de table, erreurs logiques, autres événements inattendus multi-tables BASE DE DONNÉES Flashback Journal Flashback, annuler Oui
DROP Supprimer la table Flashback DROP Corbeille (corbeille) Oui
Tableau Mettre à jour, supprimer, insérer des enregistrements Flashback TABLE Restaurer les données, annuler Oui
Requête Comparaison des données actuelles et des données historiques Flashback QUERY Restaurer les données, annuler Non
Requête de version Comparer les versions de ligne Requête de version Flashback Restaurer les données, annuler Non
Requête de transaction Comparer Requête de transaction Flashback Restaurer les données, annuler Non
Archive DDL, DML Archive Flashback Journaux d'archivage Oui