Πώς γυρνάμε μία βάση δεδομένων της Oracle στη πρότερη κατάσταση ενός restore point (Flashback Database to guaranteed restore point)

Πώς γυρνάμε μία βάση δεδομένων της Oracle στη πρότερη κατάσταση ενός restore point (Flashback Database to guaranteed restore point)
Πώς γυρνάμε μία βάση δεδομένων της Oracle στη πρότερη κατάσταση ενός restore point (Flashback Database to guaranteed restore point)

Στο άρθρο θα αναλύσουμε πως μπορούμε να κάνουμε την χρήση της λειτουργίας flashback database σε guaranteed restore point σε βάση δεδομένων της Oracle.

Το flashback database ανήκει στην κατηγορία της προστασίας δεδομένων και παρέχει τη δυνατότητα να παγώσουμε την εικόνα της βάσης σε ένα χρονικό σημείο ώστε να έχουμε τη δυνατότητα να επιστρέψουμε γρήγορα στην εικόνα που είχε η βάση σε αυτό το σημείο.

Γιατί όμως να θέλουμε να κάνουμε flashback database;

Με την λειτουργία του flashback database μπορούμε να κρατήσουμε ένα guarantee restore point πριν την εκτέλεση μιας μεγάλης αναβάθμισης στη βάση. Αυτή η ενέργεια έχει σαν αποτέλεσμα σε περίπτωση που κάτι δεν πάει καλά και χρειαστεί rollback να μην χρειάζεται να γίνει restore ολόκληρη η βάση.

Πώς δημιουργούμε ένα guarantee restore point

Για αρχή θα πρέπει να ορίσουμε το μέγεθος και η τοποθεσία που θέλουμε να έχει η 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';

Σε αυτό το σημείο πρέπει να ελέγξουμε ότι η βάση λειτουργεί σε archived log mode δηλαδή ότι τα logs κρατούνται ως archived.

select log_mode,flashback_on from v$database;

Η ενεργοποίηση του flashback mode είναι προαιρετική. Αν δεν είναι όμως ενεργοποιημένο για να επαναφέρουμε το restore point η βάση θα πρέπει να είναι mounted και όχι open.

Για να ενεργοποιήσουμε το flashback
alter database flashback on;
Για να δημιουργήσουμε το restore point
create restore point ONOMA guarantee flashback database;
Για να δούμε πoυ βρίσκεται και πόσος χώρος είναι ακόμα ελεύθερος στη flash recovery area
select name,space_used/1024/1024/1024 from v$recovery_file_dest;

Πώς επαναφέρουμε τη βάση στο σημείο του restore point

Θα πρέπει να δούμε τα restore point που έχουμε και να βρούμε το όνομα του.

select name,scn,time from v$restore_point;
Σε περίπτωση single instance
shutdown immediate;
startup mount;
flashback database to restore point ONOMA ;                 
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 restore point ONOMA;  
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

Αφού ολοκληρώσουμε την επαναφορά μπορούμε να διαγράψουμε το restore point:

drop restore point ONOMA;

Σε περίπτωση Data Guard (με ή χωρίς Fast Start Failover)

Σε περίπτωση που έχουμε υπόδομή Data Guard θα πρέπει να ακολουθήσουμε τα παρακάτω βήματα.

Ελέγχουμε σε όλα τα nodes ότι έχει δημιουργηθεί το restore point, κατά την δημιουργία του στο primary το δημιουργεί και σε όλα τα secondary nodes:

select name,space_used/1024/1024/1024 from v$recovery_file_dest;
select name,scn,time from v$restore_point;

Σε περίπτωση που έχουμε ενεργοποιημένο το fast_start failover θα πρέπει να το απενεργοποιήσουμε:

dgmgrl /
disable fast_start failover force;

Στο primary node τρέχουμε τα παρακάτω ώστε να κάνουμε flashback στο restore point ενώ η βάση δεδομένων βρίσκεται σε mount state:

sqlplus / as sysdba
shutdown immediate;
startup mount;
flashback database to restore point NAME;
alter database open resetlogs;

Αφού ολοκληρώσουμε την επαναφορά μπορούμε να διαγράψουμε το restore point:

drop restore point NAME;

Τέλος ενεργοποιούμε πάλι το fast_start failover αν το είχαμε ενεργοποιημένο πριν τις ενέργειες:

dgmgrl /
enable fast_start failover;

Προσοχή!!!

Σε περίπτωση που η standby βάση δεδομένων είναι ανοιχτή σε read only mode θα πρέπει να γίνει manual restart:

sqlplus / as sysdba
shutdown immediate;
startup mount;

Και αφου συγχρονίσει σε δεύτερο χρόνο να γίνει πάλι open σε read only mode:

alter database open read only;

Σε επόμενο άρθρο θα δούμε πως μπορούμε να κάνουμε flashback database σε συγκεκριμένο χρονικό σημείο χωρίς τη χρήση guarantee restore point.

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση