Στο άρθρο αυτό θα μιλήσουμε για τον Oracle Recovery Manager (RMAN).Ο oracle recovery manager (RMAN) είναι ένας από τους δύο τρόπους που κάποιος μπορεί να κάνει Online hot backup την βάση δεδομένων. Ο RMAN είναι ένα κεφάλαιο από μονός του και εδώ θα προσπαθήσω να παρουσιάσω μια συνοπτική περιγραφή και λειτουργία του. Ο RMAN είναι ένας Oracle Database Client ο οποίος εκτελεί backup και recovery εργασίες στις βάσεις δεδομένων καθώς επίσης μπορεί και να αυτοματοποιήσει την διαχείριση των backup πολιτικών μας. Γενικά ο RMAN απλοποιεί το backup, το restore και το recovery των datafiles της βάσης.
Το περιβάλλον του RMAN αποτελείται από εφαρμογές και βάσεις που παίζουν συγκεκριμένο ρόλο στο backup των δεδομένων. Κατ’ ελάχιστον πρέπει να περιλαμβάνει τα παρακάτω κομμάτια:
- Μια βάση στόχο
Η βάση στόχος είναι η βάση στην οποία ο RMAN εκτελεί backup και recovery λειτουργίες. Ο RMAN κρατάει metadata των ενεργειών του στο control file της βάσης. Τα metadata του RMAN είναι γνωστά σαν RMAN repository. To RMAN repository μπορεί να είναι και μια βάση δεδομένων oracle γνωστή σαν RMAN catalog.
- Έναν RMAN client
Ένα oracle database εκτελέσιμο το οποίο μεταγλωττίζει τις εντολές του RMAN, οδηγεί τα sessions του server στο να εκτελέσουν τις εντολές του RMAN και καταγράφει τις ενέργειές του RMAN στο control file της βάσης στόχου. Το εκτελέσιμο του RMAN εγκαθίσταται αυτόματα μαζί με την εγκατάσταση της βάσης και συνήθως βρίσκεται στον ίδιο φάκελο με τα άλλα εκτελέσιμα της βάσης. Για παράδειγμα ο RMAN client στο Linux βρίσκεται στο $ORACLE_HOME/bin.
Μερικά περιβάλλοντα χρησιμοποιούν και τα ακόλουθα προαιρετικά στοιχεία:
- Μια γρήγορη recovery περιοχή
- Έναν media manager
- Ένα recovery catalog
Μια ξεχωριστή βάση δεδομένων η οποία χρησιμοποιείται για να καταγράφει όλη την δραστηριότητα του RMAN απέναντι σε μία ή περισσότερες βάσεις στόχους. Η βάση αυτή έχει όλα τα metadata του RMAN έτσι ώστε να είναι πιο εύκολη η επαναφορά της βάσης σε περίπτωση που έχουμε απώλεια του control file αυτής. Η βάση μπορεί να γράψει πάνω σε παλαιότερες εγγραφές στο control file, αλλά ο RMAN κρατάει όλες τις εγγραφές για πάντα στην βάση εκτός και αν αυτές σβηστούν από τον χρήστη. Για βάσεις παραγωγής προτείνεται η χρήση RMAN catalog (συμβουλή μου είναι πάντα να υπάρχει rman catalog).
Στην συνέχεια θα παρουσιάσω τις εντολές που πρέπει κάποιος να τρέξει ώστε να πάρει backup μια βάση με την χρήση του RMAN όταν αυτή είναι σε archive log mode και όταν δεν είναι.
1) Παίρνοντας Backup μια βάση σε archive log mode (με την βάση πάνω):
Αν η βάση τρέχει σε archivelog mode τότε μπορούμε να την πάρουμε backup ενώ είναι ανοιχτή. Το backup τότε λέγεται μη ολοκληρωμένο (inconsistenet backup) γιατί τα redo χρειάζονται κατά την διάρκεια του recovery ώστε η βάση να είναι σε συνεπή κατάσταση (consistent state).
Για να πάρουμε backup ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Τρέχουμε την εντολή του backup. Για παράδειγμα τρέχουμε την παρακάτω εντολή έτσι ώστε να πάρουμε backup την βάση και όλα τα archives στην default συσκευή backup.
RMAN>backup database plus archivelog;
2) Παίρνοντας Backup μια βάση σε noarchive log mode:
Αν η βάση τρέχει σε noarchivelog mode τότε το μόνο έγκυρο database backup είναι και συνεπή (consistent) backup. Για να είναι το backup συνεπή, η βάση πρέπει να είναι σε κατάσταση mount και όχι ανοιχτή, αφού πρώτα έχει γίνει shutdown.Σε αυτή την περίπτωση δεν χρειάζεται να γίνει κανένα recovery μετά την επαναφορά του backup.
Για να πάρουμε backup ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Κλείνουμε την βάση και την ανεβάζουμε σε κατάσταση mount.
RMAN>shutdown immediate;
RMAN>startup force dba;
RMAN>shutdown immediate;
RMAN>startup mount;
Τρέχουμε την εντολή του backup. Για παράδειγμα τρέχουμε την παρακάτω εντολή έτσι ώστε να πάρουμε backup την βάση στην default συσκευή backup.
RMAN>backup database;
Ανοίγουμε την βάση και όλα επανέρχονται στην φυσιολογική τους λειτουργία.
RMAN>alter database open;
3) Συντηρώντας RMAN backups:
Όλες οι πληροφορίες σχετικά με τα backups του RMAN αποθηκεύονται πάντοτε στο control file της βάσης στόχου (της βάσης που παίρνεται backup). Οι εντολές συντήρησης του RMAN χρησιμοποιούν τις πληροφορίες αυτές όταν διαχειρίζονται τα rman backups. Στην συνέχεια θα μιλήσουμε για δύο χρήσιμες εντολές συντήρησης την crosscheck και την delete. H crosscheck εντολή συγχρονίζει τις λογικές εγγραφές των RMAN backups με τα αρχεία στην συσκευή αποθήκευσης. Αν το backup είναι στον δίσκο τότε η εντολή crosscheck αποφασίζει εάν το Header του αρχείου backup είναι έγκυρο. Αν το backup είναι σε ταινία, τότε ο RMAN ρωτά το repository του RMAN για τα ονόματα και την τοποθεσίες των ταινιών που περιέχουν το backup. Μια καλή ιδέα είναι να κάνουμε crosscheck backups πριν να τα διαγράψουμε.
Για να κάνουμε crosscheck όλα τα backup που είναι αποθηκευμένα στον δίσκο ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Τρέχουμε την εντολή όπως φαίνεται στην συνέχεια:
RMAN>crosscheck backup;
RMAN>crosscheck copy;
Για σβήσουμε όλα τα backup που δεν χρειάζονται ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Τρέχουμε στην συνέχεια την εντολή όπως φαίνεται στην συνέχεια:
RMAN>delete obsolete;
4) RECOVER με τον RMAN ολόκληρη βάση δεδομένων oracle:
Για να κάνουμε recover ολόκληρη την βάση με την χρήση του RMAN,ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Βάζουμε την βάση σε κατάσταση mount. Η παρακάτω εντολή κατεβάζει την βάση αν ήδη είναι ανεβασμένη και την ξανά ανεβάζει σε mount κατάσταση.
RMAN>startup force mount;
Κάνουμε restore την βάση με το προ ορισμένο disk channel.
RMAN>restore database;
Κάνουμε recover την βάση
RMAN>recover database;
Ανοίγουμε την βάση κανονικά
RMAN>alter database open;
Τρέχουμε την εντολή όπως φαίνεται στην συνέχεια:
RMAN>crosscheck backup;
RMAN>crosscheck copy;
Στην συνέχεια θα μιλήσουμε για την εντολή delete. Η εντολή αυτή αφαιρεί RMAN backups από τον δίσκο και τις ταινίες ενημερώνοντας καταλλήλως τόσο το control file όσο και τις εγγραφές στο recovery catalog (αν υπάρχει). Αν τρέχουμε τον RMAN διαδραστικά και δεν ορίσουμε την NOPROMPT επιλογή, η εντολή delete εμφανίζει την λίστα των αρχείων που θα σβήσει και ζητάει
επιβεβαίωση πριν προχωρήσει στην οριστική διαγραφή τους. Η εντολή DELETE OBSOLETE είναι ιδιαίτερα χρήσιμη διότι ο RMAN σβήνει backups και data files τα οποία δεν χρειάζονται πλέον. Μπορεί να ορίσει κάποιος στην εντολή τι θεωρεί ότι δεν χρειάζεται ή να το ορίζει κεντρικά μέσω της μεταβλητής backup retention policy.
Για σβήσουμε όλα τα backup που δεν χρειάζονται ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Τρέχουμε στην συνέχεια την εντολή όπως φαίνεται στην συνέχεια:
RMAN>delete obsolete;
4) RECOVER με τον RMAN ολόκληρη βάση δεδομένων oracle:
Μπορούμε να χρησιμοποιήσουμε τις εντολές restore database και recover database ώστε να κάνουμε recover όλη την βάση. Πρέπει πριν από όλα να έχουμε πάρει πριν backup όλα τα απαιτούμενα αρχεία. Το σενάριο που περιγράφουμε προϋποθέτει την δυνατότητα επαναφοράς όλων των data files στην αρχική τοποθεσία τους.
Για να κάνουμε recover ολόκληρη την βάση με την χρήση του RMAN,ξεκινάμε τον rman client και συνδεόμαστε στην βάση στόχο.
CMD>rman
RMAN>connect target sys@prod;
Βάζουμε την βάση σε κατάσταση mount. Η παρακάτω εντολή κατεβάζει την βάση αν ήδη είναι ανεβασμένη και την ξανά ανεβάζει σε mount κατάσταση.
RMAN>startup force mount;
Κάνουμε restore την βάση με το προ ορισμένο disk channel.
RMAN>restore database;
Κάνουμε recover την βάση
RMAN>recover database;
Ανοίγουμε την βάση κανονικά
RMAN>alter database open;
Ο oracle recovery manager (RMAN) είναι ένα μεγάλο κεφάλαιο για τις oracle βάσεις και η παράγραφος αυτή δεν είναι τίποτα άλλο από μια απλή παρουσίαση του τι μπορεί να κάνει κανείς με το συγκεκριμένο εργαλείο.
0 σχόλια:
Δημοσίευση σχολίου