Πώς παίρνουμε backup μια βάση δεδομένων που βρίσκεται σε no-archive-log mode στην Oracle
- Τι είναι η PostgreSQL και πως κάνουμε μία πλήρης εγκατάσταση - 2 Σεπτέμβριος 2024
- Πώς ρυθμίζουμε το replication του GoldenGate ώστε να διαβάζει από το Standby του Oracle Data Guard - 2 Αύγουστος 2024
- Πώς μπορούμε να συνδέσουμε Oracle Database με SQL Server με χρήση Oracle Gateway σε Linux - 1 Ιούλιος 2024
Σε αυτό το άρθρο θα αναλύσουμε τι χρειάζεται για να πάρουμε offline backup μια βάση δεδομένων της Oracle που βρίσκεται σε no-archive-log mode.
Καθώς η βάση δεν κρατάει τα redo logs ως archive, δεν έχουμε τη δυνατότητα για online backup. Πράγμα που σημαίνει ότι θα πρέπει να κλείσουμε τη βάση και να την έχουμε σε mount state (να μην είναι προσβάσιμη από τους χρήστες) κατά τη διάρκεια του Backup.
Για να πάρουμε backup εκτός από τα datafiles θα πρέπει να πάρουμε backup και το controlfile και spfile.
Τι είναι το control file και το spfile;
Control File
Το control file είναι το αρχείο που περιέχει το όνομα της βάσης, την τοποθεσία των αρχείων της βάσης και το current log sequence number (lsn) ή αλλιώς τη χρονική στιγμή που βρίσκεται η βάση.
SPFILE
Το spfile περιέχει τις παραμέτρους που χρειάζονται για να λειτουργήσει το instance της βάσης. Περιέχει πληροφορίες όπως το όνομα της βάσης, τα resources που χρησιμοποιεί και το που βρίσκεται το control file. Για να το επεξεργαστούμε θα πρέπει πρώτα να έχουμε φτιάξει ένα pfile (create pfile from spfile) που βασίζεται στο ίδιο καθώς μπορούμε να επεξεργαστούμε μόνο το pfile και όχι το spfile άμεσα.
Έχουμε αυτή τη δυνατότητα ορίζοντας στον RMAN (Oracle Recovery Manager) την εντολή CONFIGURE CONTROLFILE AUTOBACKUP
ON
να παίρνετε αυτόματα κάθε φορά που κάνουμε backup τη βάση και to control file και το spfile στη προεπιλεγμένη τοποθεσία.
Το παράδειγμα
Στο παράδειγμα θα πάρουμε offline backup compressed σε μια single instance βάση (που δεν ανήκει σε RAC) με τη χρήση RMAN (το εργαλείο που μας παρέχει η Oracle για backup/restore) script.
Πρώτα θα συνδεθούμε στη βάση με sqlplus.
sqlplus / as sysdba
Θα κλείσουμε τη βάση.
shutdown immediate
Θα την σηκώσουμε σε mount state.
startup mount
Κάνουμε exit από το sqlplus για να φτιάξουμε και να εκτελέσουμε το script στον RMAN.
exit
Φτιάχνουμε ένα αρχείο με όνομα param.rman με τις ανάλογες παραμέτρους όπως τις κάτωθι.
CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/folder/fra/backup/CONTROL_%Y_%M_%D_%F.bck'; CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO compressed backupset ; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/folder/fra/backup/data_%Y_%M_%D_%U.bck'; run { backup database filesperset 3; }
Για να εκτελέσουμε το script στον RMAN θα πρέπει να έχουμε ορίσει στο περιβάλλον το ORACLE_SID και το ORACLE_HOME. Μπορούμε όλο το κάτωθι να το φτιάξουμε σαν ένα εκτελέσιμο αρχείο π.χ. backup.sh.
export ORACLE_SID=db export ORACLE_HOME=/home/oracle/oracle/app export NLS_DATE_FORMAT='dd/mm/yyy hh24:mi' rman target / cmdfile=/home/oracle/param.rman log=/home/oracle/backuplog`date +%Y%m%d_%H%M`.log
Αφού δώσουμε τα ανάλογα δικαιώματα στο αρχείο (chmod) το εκτελούμε.
nohup ./backup.sh &
Όταν τελειώσει συνδεόμαστε πάλι με sqlplus για να ανοίξουμε τη βάση.
sqlplus / as sysdba
alter database open;