Πώς γυρνάμε πίσω στο χρόνο μία βάση δεδομένων της Oracle (Flashback Database)
- Πώς συλλέγουμε to actual execution plan από τα queries με χρήση Extended Event και πως διαβάζουμε τα δεδομένα του - 2 Δεκέμβριος 2024
- Πώς βρίσκουμε τι δικαιώματα έχει ένας χρήστης σε βάση δεδομένων της Oracle - 1 Νοέμβριος 2024
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
Σε προηγούμενο άρθρο είχαμε αναλύσει πως κάνουμε flashback database σε guarantee restore point σε βάση δεδομένων της Oracle. Σε αυτό το άρθρο θα δούμε πως γίνεται μέσω της τεχνολογίας flashback database χωρίς τη χρήση restore point να γυρίσουμε χρονικά πίσω τη βάση δεδομένων.
Τι σημαίνει flashback database;
Το flashback database ανήκει στην κατηγορία της προστασίας δεδομένων και παρέχει τη δυνατότητα να επιστρέψουμε γρήγορα στην εικόνα που είχε η βάση σε ένα χρονικό σημείο.
Γιατί όμως να θέλουμε να κάνουμε flashback database;
Με την λειτουργία του flashback database μπορούμε να επαναφέρουμε τη βάση δεδομένων σε πολύ λίγο χρόνο σε περίπτωση που κάτι πάει στραβά χωρίς να χρειάζεται να γίνει restore.
Πως ενεργοποιήμε την λειτουργία του flashback database
Για αρχή θα πρέπει να ορίσουμε το μέγεθος και η τοποθεσία που θέλουμε να έχει η flash recovery area. Από τη ενεργοποίηση του flashback database και έπειτα θα δημιουργηθούν recovery files. Όσο γίνονται αλλαγές στη βάση το μέγεθος των αρχείων αυτών θα αυξάνετε ανάλογα με τον μέγεθος των δεδομένων που έχει μεταβληθεί.
Για να ορίσουμε το μέγεθος σε gigabytes:
alter system set DB_RECOVERY_FILE_DEST_SIZE ='megethos'G scope=both;
Για να ορίσουμε που θα αποθηκεύονται τα recovery files:
alter system set db_recovery_file_dest='path';
Μπορούμε να επιλέξουμε μέχρι πόσα λεπτά πίσω θέλουμε να μπορούμε να γυρίσουμε χρονικά τη βάση. Το default είναι μία μέρα πίσω (1440 λεπτά):
alter system set DB_flashback_Retention_target = 'MINUTES' scope=both;
Σε αυτό το σημείο πρέπει να ελέγξουμε ότι η βάση λειτουργεί σε archived log mode δηλαδή ότι τα logs κρατούνται ως archived αλλιώς δεν θα μπορούμε να ενεργοποιήσουμε το flashback:
select log_mode,flashback_on from v$database;
Για να ενεργοποιήσουμε το flashback:
alter database flashback on;
Πως επαναφέρουμε τη βάση σε περασμένο χρονικό σημείο
Σε περίπτωση single instance
shutdown immediate; startup mount; flashback database to timestamp TO_TIMESTAMP( '2020-05-29 08:00:00','YYYY-MM-DD HH24:MI:SS'); alter database open resetlogs;
Σε περίπτωση RAC (Real Application Cluster)
Σε περίπτωση που έχουμε πολλαπλά instances για τη βάση (RAC) θα πρέπει να κατέβει η βάση και να ανέβει μόνο ένα instance της. Αντίστοιχα μετά το flashback θα πρέπει να κατέβει το instance και να ανέβει η βάση με όλα της τα instance:
srvctl stop database -db db1 -stopoption immediate srvctl start instance -db db1 -instance instance1 -startoption mount flashback database to timestamp TO_TIMESTAMP( '2020-05-29 08:00:00','YYYY-MM-DD HH24:MI:SS'); alter database open resetlogs; srvctl stop database -db db1 -stopoption immediate srvctl start database -db db1
Αν έχουμε πολλά services θα πρέπει να ανέβουν:
srvctl start service -d db1 -s service_tade