Παρασκευή 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 ειδάλλως οι κενοίπίνακεσ δεν θα μεταφερθούν.

0 σχόλια:

Δημοσίευση σχολίου