Στο αρθρο αυτό θα μιλήσουμε για το λογικό 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
Στην συνέχεια φαίνεται η εντολή που εξάγει τα δεδομένα από συγκεκριμένους πίνακες της βάσης.
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
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
Χρήσιμες Συμβουλές:
- Κατά το full import δεν εισάγονται στην βάση τα objects του sys καθώς και τα grants που έχουν γίνει σε objects του sys. Οπότε πρέπει να τα ελέγξουμε και να τα περάσουμε μετά το τέλος του Import manual σε κάθε χρήστη.
- Full export δεν κάνουμε ποτέ με τον χρήστη sys αλλά με τον system, για να μην έχουμε προβλήματα με το catalog της oracle σε περίπτωση full import.
- Η παράμετρος log ορίζει το log file της διαδικασίας, το οποίο χρησιμοποιείται στην συνέχεια για τον εντοπισμό προβλημάτων που προέκυψαν κατά την διάρκεια της διαδικασίας εξαγωγής ή εισαγωγής δεδομένων σε μία βάση.
- H παράμετρος compress πρέπει να είναι πάντοτε n (No) εκτός και έχουμε πληρώσει αδειοδότηση για Advanced compression.
- Προσπαθούμε η εντολή να είναι σε μια γραμμή για να τρέξει σωστά.
0 σχόλια:
Δημοσίευση σχολίου