Toad for Oracle, Mysql, Sql server

Το καλύτερο εργαλείο για την διαχείριση των βάσεων. Πλέον κάτω από την ομπρέλα της Dell.

Ανοίξτε λογαριασμό στο site υποστήριξης της ORACLE(MOS-Metalink).

Η Oracle προσφέρει support και χρήσιμες πληροφορίες σε προβλήματα και bugs μέσω του συγκεκριμένου site.

Μπορείτε από το eDelivery της Oracle να κατεβάσετε Μysql και Oracle λογισμικό

Mysql μια open source βάση με support πλέον επι πληρωμή, από την Oracle.

Το support της microsoft για όλα τα προιόντα της

Χρήσιμες πληροφορίες-guides που αφορούν τόσο προβλήματα όσο και τρόπους εγκατάστασης του database λογισμικού.

Oracle Documentation

Εδώ υπάρχει το επίσημο documentation της Oracle.

Τετάρτη 27 Ιανουαρίου 2016

Oracle 12c Installation Notes (with screen dumps)


Στο άρθρο αυτό θα μιλήσουμε για το πως μπορεί κάποιος να στήσει το λογισμικό της oracle (oracle 12c) και να εγκαταστήσει ένα instance και έναν listener με τυπικές ρυθμίσεις. Αν θέλουμε να κάνουμε την εγκατάσταση σε Linux red hat 6 θα πρέπει για να ξεκινήσει η εγκατάσταση να μπούμε στον φάκελο που βρίσκεται το software πχ. /u01/oracle_12c_software/database/stage/cvu/cv/admin και να αλλάξουμε στο αρχείο cvu_config την εγγραφή CV_ASSUME_DISTID σε OEL6.


Τρέχουμε στην συνέχεια το εκτελέσιμο από τον φάκελο στον οποίο βρίσκεται

CMD> ./runinstaller


Εικόνα 1. Πρώτη οθόνη ορισμού email ενημέρωσης
Με το που αρχίζει η εγκατάσταση θα πρέπει να δώσουμε το email στο οποίο θα ενημερωνόμαστε για τα securities updates της oracle.

Εικόνα 2. Επιλέγουμε τι θα κάνουμε με τα software updates

Μας ενημερώνει για τα software updates και τις επιλογές που έχουμε. Επιλέγουμε να μην κάνουμε εγκατάσταση κάποιο update.

Εικόνα 3. Επιλέγουμε αν θα δημιουργήσουμε βάση ή όχι. Επιλέγουμε εγκατάσταση software μόνο

Εικόνα 4. Επιλέγουμε τι είδους instance θα δημιουργήσουμε (απλό instance στην περίπτωσή μας)

Εικόνα 5. Επιλογή έκδοσης που θέλουμε και για την οποία έχουμε πληρώσει την κατάλληλη αδειοδότηση

Εικόνα 6. Επιλογή που θα στήσουμε το software στον δίσκο

Εικόνα 7. Επιλογή κατάλληλων group που πρέπει από πριν να υπάρχουν

Εικόνα 8. Επιλογή το που θα βρίσκεται το inventory στον δίσκο (χρησιμοποιείται για τα patches της oracle).

Εικόνα 9. Τρέχουμε τα αντίστοιχα scripts σαν root και έπειτα πατάμε ΟΚ

Εικόνα 10. Η εγκατάσταση του oracle software ολοκληρώθηκε με επιτυχία

Αφού τελειώσαμε με το software, ήρθε η ώρα για την δημιουργία του listener που θα ακούει η βάση. Τρέχουμε το παρακάτω εκτελέσιμο από το bin folder που έχει γίνει εγκατάσταση το software.

CMD> ./netca
Εικόνα 11. Επιλέγουμε την πρώτη επιλογή

Εικόνα 12. Επιλέγουμε την επιλογή Add αφού θέλουμε να φτιάξουμε έναν καινούργιο Listener.

Εικόνα 13. Γράφουμε το όνομα που θέλουμε να έχει ο listener.

Εικόνα 14. Γράφουμε την πόρτα στην οποία θα ακούει ο listener πατάμε next και ο νέος listener σηκώνεται με το όνομα που δώσαμε στην πόρτα που ορίσαμε.


Αφού τελειώσαμε και με τον Listener, ήρθε η ώρα για την δημιουργία του instance, της βάσης δηλαδή. Τρέχουμε το παρακάτω εκτελέσιμο από το bin folder που έχει γίνει εγκατάσταση το software.

CMD> ./dbca
Εικόνα 15. Επιλέγουμε την πρώτη επιλογή για να προχωρήσουμε στην δημιουργία καινούργιου instance-βάσης.


Εικόνα 16. Επιλέγουμε το Advanced mode για να μπορέσουμε να παραμετροποιήσουμε όπως θέλουμε το νέο Instance.

Εικόνα 17. Επιλέγουμε την δημιουργία custom database για να κάνουμε την παραμετροποίηση που επιθυμούμε.


Εικόνα 18. Γράφουμε το όνομα που θέλουμε να έχει η βάση.



Εικόνα 19. Επιλέγουμε αν θα στήσουμε ξεχωριστό enterprise manager ή θα κάνουμε register την βάση σε κάποιο cloud.

Εικόνα 20. Επιλέγουμε τo password για τους συστεμικούς λογαριασμούς

Εικόνα 21. Επιλέγουμε τον Listener στον οποίο θα γίνει register η βάση

Εικόνα 22. Επιλέγουμε την τοποθεσία στον δίσκο όπου θα μπουν τα datafiles της βάσης.

Εικόνα 23. Επιλέγουμε τα component για τα οποία έχουμε αδειοδότηση να στήσουμε στην βάση.

Εικόνα 24. Ορίζουμε την RAM που θα καταλάβει η βάση .


Εικόνα 25. Ορίζουμε το block size και το μέγιστο αριθμό sessions που θα μπορούν να είναι ανοιχτά ταυτόχρονα.


Εικόνα 26. Επιλέγουμε κατάλληλες επιλογές για την γλώσσα των δεδομένων στην βάση.


Εικόνα 27. Βλέπουμε μια περίληψη όλων των επιλογών για την βάση που θα φτιάξουμε.

Εικόνα 28. Βλέπουμε μια περίληψη όλων των επιλογών για την βάση που θα φτιάξουμε.

Εικόνα 29. Βλέπουμε μια περίληψη όλων των επιλογών για την βάση που θα φτιάξουμε.


Εικόνα 30. Επιλέγουμε τα maximum όρια για την βάση

Εικόνα 31. Περιμένουμε να ολοκληρωθεί η εγκατάσταση της βάσης.


Εικόνα 32. Η εγκατάσταση ολοκληρώθηκε και πατάμε exit.


Εικόνα 33. Η εγκατάσταση έχει ολοκληρωθεί και πατάμε close.

Εδώ τελειώνει και ο σύντομος αλλά περιεκτικός οδηγός εγκατάσταση της oracle 12c



Παρασκευή 22 Ιανουαρίου 2016

Impdp/Expdp – Logical Backup


Στο άρθρο αυτό θα μιλήσουμε για τις νέες εντολές εισαγωγής και εξαγωγής δεδομένων σε βάση oracle.Από την 10g και μετά δημιουργείται κατά την εγκατάσταση ένας data_pump_dir oracle κατάλογος και σε αυτό το dir θα πρέπει να μπει το dmp που θα γίνει import και εκεί θα αποθηκευτεί αυτό που θα γίνει export με τις νέες εντολές εξαγωγής και εισαγωγής δεδομένων impdp και expdp. Αν θέλουμε άλλο κατάλογο για χρήση μέσω των νέων εντολών, τον φτιάχνουμε από την βάση και μπορούμε να τον χρησιμοποιήσουμε με τον ίδιο τρόπο.

Συγκεκριμένα, δημιουργούμε στο σύστημα τον φάκελο στον οποίο θα αποθηκεύονται τα αρχεία εξαγωγής δεδομένων και από τον οποίο θα διαβάζονται τα αρχεία εισαγωγής δεδομένων. Έπειτα συνδεόμαστε στην βάση και δημιουργούμε ένα oracle directory.

CMD>sqlplus ‘sys/<password> as sysdba’

Δημιουργία καταλόγου(dir) data_pump_dir.

SQL> create or replace directory data_pump_dir as ‘/u01/app/oracle/dump_dir’;

Δίνουμε πρόσβαση στο συγκεκριμένο κατάλογο στον χρήστη που θα κάνει import και export. Όλοι οι χρήστες που θα έχουν δυνατότητα να κάνουν export και import θα πρέπει να τους έχουν δοθεί τα συγκεκριμένα δικαιώματα

SQL> grant read, write on directory data_pump_dir to user;

Επιπλέον θα πρέπει να δοθεί στο ρόλο exp_full_database και imp_full_database η δυνατότητα να διαβάζει και να γράφει στο συγκεκριμένο φάκελο.

SQL> grant read, write on directory sys.data_pump_dir to exp_full_database;
SQL> grant read, write on directory sys.data_pump_dir to imp_full_database;


Στην συνέχεια ακολουθούν σειρά εντολών εξαγωγής και εισαγωγής δεδομένων στην βάση, έτοιμες προς χρήση. Πρώτη πρώτη, εντολή εξαγωγής όλων των δεδομένων της βάσης.

CMD>expdp system/password@DB full=y directory=data_pump_dir dumpfile=exp.dmp logfile=exp.log consistent=y

Ακολουθεί εντολή εξαγωγής δεδομένων συγκεκριμένων σχημάτων της βάσης. Τα σχήματα ορίζονται στην παράμετρο schemas χωρισμένα με κόμματα.

CMD>expdp '"sys/password@DB as sysdba"' directory=data_pump_dir dumpfile=scott_schema.dmp logfile=schemas.log schemas=scott,system consistent=y

Τελευταίες εντολές εξαγωγής δεδομένων από συγκεκριμένους πίνακες της βάσης με χρήση της εντολής like (πολύ χρήσιμες).

CMD> expdp '"sys/password@DB as sysdba"' dumpfile=expcdbactive_20130503.dmp
logfile=expcdbactive_20130503.log schemas=user include=table:\"is \(select table_name from dba_tables where table_name like \'CDB_%\' and owner=\'CDB_ACTIVE\'\)\" consistent=y


CMD> expdp '"sys/password@DB as sysdba"' dumpfile=expcdbactive_20130503.dmp
logfile=expcdbactive_20130503.log schemas=user tables=CDB_% consistent=y


Τώρα θα δούμε εντολές εισαγωγής δεδομένων στην βάση με την εντολή impdp. Εισαγωγή όλων των δεδομένων του export αρχείου.

CMD>impdp system/password@DB full=y directory=data_pump_dir dumpfile=exp.dmp logfile=imp.log

Ακολουθεί εντολή εισαγωγής δεδομένων συγκεκριμένων σχημάτων της βάσης. Τα σχήματα ορίζονται στην παράμετρο schemas χωρισμένα με κόμματα.

CMD> impdp '"sys/password@DBTEST as sysdba"' schemas=mo,test directory=data_pump_dir logfile=imp.log dumpfile=exp.dmp

Η επόμενη είναι εντολή εισαγωγής δεδομένων ενός σχήματος σε άλλο σχήμα της βάσης.

CMD> impdp '"sys/password@DBTEST as sysdba"' remap_schema=hr:scott
remap_tablespace=HELEXPORTAL:HELEXPORTAL_STG directory=data_pump_dir logfile=imp.log dumpfile=export.dmp


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

CMD> impdp '"sys/password@DBTEST as sysdba"' schemas=mo_401 directory=data_pump_dir logfile=imp.log dumpfile=export.dmp table_exists_action=append

Τελευταία εντολή εισαγωγής πίνακα σε βάση και αλλαγή του ονόματός του.

CMD> impdp '"sys/password@DBTEST as sysdba"' tables=test.tab1 directory=data_pump_dir logfile=imp.log dumpfile=export.dmp remap_table=test.tab1:tab2

Σημείωση: Για να γίνουν import οι πίνακες που δεν έχουν δεδομένα θα πρέπει να τρέξει για αυτούς η παρακάτω εντολή   ALTER TABLE OWNER.TABLE_NAME ALLOCATE EXTENT; πριν γίνει το export ειδάλλως οι κενοίπίνακεσ δεν θα μεταφερθούν.

Τετάρτη 20 Ιανουαρίου 2016

Import/Export - Logical Backup


Στο αρθρο αυτό θα μιλήσουμε για το λογικό backup της βάσης. Λέγοντας λογικό backup της βάσης εννοούμε την δυνατότητα να εξάγουμε σε ένα αρχείο όλα τα δεδομένα της βάσης ή μέρος από αυτά. Μέχρι την έκδοση 10g ο μοναδικός τρόπος για να γίνει η εξαγωγή και η εισαγωγή μεμονωμένων δεδομένων στην βάση ήταν μέσω των εντολών import και export. Μετά την 10g υποστηρίζονται και νέες εντολές οι οποίες θα περιγραφούν σε επόμενο άρθρο.

Στην συνέχεια θα παραθέσουμε σειρά από εντολές και τι κάνει η κάθε μία αναλυτικά. Οι εντολές είναι όλες δοκιμασμένες και η παραμετροποίηση είναι τέτοια που να εξυπηρετεί τις ανάγκες όλων. Είναι σημαντικό πριν τρέξουμε οποιαδήποτε εντολή εξαγωγής ή εισαγωγής δεδομένων να ορίσουμε κατάλληλα την μεταβλητή περιβάλλοντος NLS_LANG ώστε αν εξάγουμε δεδομένα ελληνικά αυτά να μπορούν να εισαχθούν σωστά ξανά όταν θα τα χρησιμοποιήσουμε (αν δεν γίνει αυτό θα υπάρχει πρόβλημα με ελληνικά σχόλια που μπορεί να έχει γράψει κάποιος σε procedures). Οπότε για linux συστήματα πρέπει να τρέξουμε την εντολή:

CMD>export NLS_LANG=Greek_greece.EL8ISO8859P7

Και για windows συστήματα αντίστοιχα την εντολή:

CMD> set NLS_LANG=Greek_greece.EL8MSWIN1253


Στην συνέχεια θα αναφέρω μια σειρά από εντολές εξαγωγής δεδομένων και μια σειρά εντολών εισαγωγής δεδομένων. Ακολουθεί η εντολή που εξάγει τα δεδομένα από όλα τα σχήματα της βάσης.

CMD>exp '"system/password@db as sysdba "' file=/archives/full_exp.dmp
log=/archives/full_exp.log buffer=50000000 direct=n statistics=none consistent=y compress=n Recordlength=32768 full=y

H παράμετρος full καθορίζει αν θα εξάγουμε τα δεδομένα από όλα τα σχήματα ή από συγκεκριμένο σχήμα της βάσης. Ακολουθεί η εντολή για την εξαγωγή δεδομένων από συγκεκριμένο σχήμα της βάσης (σχήμα USER). Αν επιθυμούμε να εξάγουμε παραπάνω του ενός σχήματος τα βάζουμε στην μεταβλητή OWNER με κόμματα (OWNER=USER,USER2,USER3) :

CMD> exp '"sys/password@dbtest as sysdba "'  file=/u01/import/mo401_exp_20110610.dmp 
log=/u01/import/mo401_exp_20110610.log buffer=50000000 consistent=y direct=n statistics=none Recordlength=32768 compress=n full=n OWNER=USER

Στην συνέχεια φαίνεται η εντολή που εξάγει τα δεδομένα από συγκεκριμένους πίνακες της βάσης.

CMD> exp '"sys/password as sysdba "' file=/u88/export/palio_prod_spex_exp.dmp   
log=/u88/archives/export/palio_prod_spex_exp.log buffer=50000000 direct=n statistics=none Recordlength=32768 full=n consistent=y compress=n TABLES=COMPAK.month,User.cost,dbuser.houses

Τέλος ακολουθεί η τελευταία εντολή εξαγωγής δεδομένων από την βάση η οποία εξάγει τα σχήματα των χρηστών που ορίζονται στην μεταβλητή owner χωρίς τα δεδομένα τους.:

CMD> exp '"sys/password@db as sysdba "' file=/oradata2/mosys_exp_new.dmp    log=/oradata2/mosys_exp_new.log buffer=50000000 direct=n statistics=none Recordlength=32768 full=n rows=n compress=n owner=user1

Τώρα έφτασε η στιγμή να αναφερθώ και στις αντίστοιχες εντολές εισαγωγής δεδομένων σε μία βάση. Ακολουθεί η εντολή που εισάγει τα δεδομένα από όλα τα σχήματα της βάσης από το αρχείο που προέκυψε από το full export αυτής. Γενικότερα όταν ορίζουμε την μεταβλητή full ίση με y τότε γίνεται εισαγωγή στην βάση όλων των δεδομένων που υπάρχουν μέσα στο αρχείο .dmp που έχει οριστεί (μπορεί να έχει και δεδομένα μόνο πινάκων ή συγκεκριμένων σχημάτων).

CMD> imp '"system/password@db as sysdba "' file=/oradata2/full_exp.dmp 
log=/oradata2/full_imp.log buffer=50000000 ignore=y Full=y commit=y statistics=none compile=n Recordlength=32768

H παράμετρος ignore καθορίζει αν θα συνεχίζει η διαδικασία του import σε περίπτωση
που υπάρχουν τα δεδομένα που πάνε να εισαχθούν στην βάση. Ακολουθεί η εντολή
για την εισαγωγή δεδομένων από συγκεκριμένο σχήμα της βάσης (σχήμα USER) σε
συγκεκριμένο σχήμα (σχήμα USERNEW) στην βάση εισαγωγής των δεδομένων. :

CMD> imp '"sys/password@db_new as sysdba "' file=/oradata2/mo401.dmp log=/oradata2/mo401.log buffer=50000000 ignore=y fromuser=user touser=usernew  commit=y statistics=none consistent=y compile=n Recordlength=32768

Τέλος ακολουθεί η εντολή εισαγωγής των δεδομένων συγκεκριμένων πινάκων .

CMD> imp '"sys/password as sysdba "' file=L:\derivdevel_exp.dmp log=L:\derivdevel_imp.log 
buffer=50000000 ignore=y Full=n commit=y statistics=none compile=n Recordlength=32768 compress=n fromuser=derivdevel tables=pool_orders,pool_sl_daily touser=etesep

Χρήσιμες Συμβουλές:
  1. Κατά το full import δεν εισάγονται στην βάση τα objects του sys καθώς και τα grants που έχουν γίνει σε objects του sys. Οπότε πρέπει να τα ελέγξουμε και να τα περάσουμε μετά το τέλος του Import manual σε κάθε χρήστη. 
  2. Full export δεν κάνουμε ποτέ με τον χρήστη sys αλλά με τον system, για να μην έχουμε προβλήματα με το catalog της oracle σε περίπτωση full import. 
  3. Η παράμετρος log ορίζει το log file της διαδικασίας, το οποίο χρησιμοποιείται στην συνέχεια για τον εντοπισμό προβλημάτων που προέκυψαν κατά την διάρκεια της διαδικασίας εξαγωγής ή εισαγωγής δεδομένων σε μία βάση. 
  4. H παράμετρος compress πρέπει να είναι πάντοτε n (No) εκτός και έχουμε πληρώσει αδειοδότηση για Advanced compression. 
  5. Προσπαθούμε η εντολή να είναι σε μια γραμμή για να τρέξει σωστά.

Τετάρτη 13 Ιανουαρίου 2016

Oracle Online Backup - a different approach


Στο άρθρο αυτό θα μιλήσουμε για την διαδικασία που πρέπει να ακολουθηθεί ώστε μια βάση oracle να παρθεί backup online χωρίς την χρήση RMAN. Με την διαδικασία αυτή η βάση μπαίνει σε backup mode και καθ’ όλη την διάρκεια που βρίσκεται σε αυτή την κατάσταση μπορεί κάποιος να αντιγράψει τα αρχεία της βάσης datafiles σε μια άλλη αποθηκευτική συσκευή. Η αντιγραφή γίνεται χειροκίνητα και όταν ολοκληρωθεί θα πρέπει η βάση να βγει από backup mode.

Η παραπάνω διαδικασία προσθέτει ένα κίνδυνο να κολλήσει η βάση αν μεγάλος όγκος ενεργειών (insert,delete,update) γίνουν στην βάση κατά την διάρκεια που αυτή βρίσκεται σε backup mode. Αυτό θα συμβεί γιατί όταν η βάση βρίσκεται σε backup mode όλες οι αλλαγές καταγράφονται στο online redo logs οπότε όταν αυτά γεμίσουν δεν θα μπορούν να γίνουν archive και η βάση θα κολλήσει. Για το λόγο αυτό στις βάσεις που θα εφαρμοστεί η συγκεκριμένη μέθοδο θα πρέπει να έχουμε ορίσει μεγάλο αριθμό από Online redo logs ώστε να ελαχιστοποιήσουμε την πιθανότητα κολλήματος της βάσης.

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

CMD>sqlplus ‘sys/<password> as sysdba’

Βάζουμε την βάση σε backup mode.

SQL> alter database begin backup;

Αντιγράφουμε manual τα datafiles και αφού τελειώσει το backup επαναφέρουμε την βάση στην normal κατάσταση .

SQL> alter database end backup;

Αν κάποιος δοκιμάσει να κατεβάσει την βάση όσο αυτή βρίσκεται σε backup mode θα πάρει το παρακάτω error “ORA-01149”. Τέλος αν κάποιος προσπαθήσει να βάλει σε backup mode μια βάση που είναι ήδη σε backup mode θα πάρει το ακόλουθο error “ORA-01146”. 



Πέμπτη 7 Ιανουαρίου 2016

Oracle Recovery Manager - RMAN



Στο άρθρο αυτό θα μιλήσουμε για τον 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 περιοχή
Μια περιοχή στον δίσκο στην οποία η βάση μπορεί να αποθηκεύσει και να διαχειριστεί αρχεία σχετικά με το backup και το recovery. Μπορεί κάποιος να ορίσει την περιοχή αυτή και το μέγεθος που θα έχει με τις παρακάτω μεταβλητές περιβάλλοντος DB_RECOVERY_FILE_DEST και DB_RECOVERY_FILE_DEST_SIZE
  • Έναν media manager
Μία εφαρμογή που απαιτείται από τον RMAN για να αλληλεπιδράσει με τα media devices και τα tape libraries. O media manager ελέγχει αυτές τις συσκευές κατά την διάρκεια του backup και του recovery, διαχειρίζεται τον φόρτο, βάζει ετικέτες, βγάζει τις ταινίες από το tape library. Οι συσκευές διαχείρισης ταινιών (media manager) μερικές φορές λέγονται SBT (system backup to tape) συσκευές.
  • Ένα 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;


Στην συνέχεια θα μιλήσουμε για την εντολή 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 βάσεις και η παράγραφος αυτή δεν είναι τίποτα άλλο από μια απλή παρουσίαση του τι μπορεί να κάνει κανείς με το συγκεκριμένο εργαλείο.