Oracle DataPump, MetaData Backup & Source code backup (incl. DDL)

Wednesday, 07.01.2009 – Dejan

Sigurno ste već nekoliko puta bili u idućoj situaciji (a ako niste, onda ćete kad-tad biti 😉 ):

– razvijate neku aplikaciju na development serveru (nazovimo ga testdb), na kojem se za testnu bazu ne vrši backup
– database administrator svakih mjesec-dva mora bazu osvježiti, tako što obriše postojeću testnu/razvojnu bazu (testdb) i na njeno mjesto postavi aktuelnu kopiju production baze; svejedno je na koji način – da li kloniranjem, export/import metodom ili replikacijom.
– dođete idući dan na posao i shvatite da ste zaboravili sačuvati neki PL/SQL paket ili DDL izraz za kreiranje neke tabele, koji su izgubljeni brisanjem testne baze
– “Šta sad da radim!?” – prvo je pitanje…

Na svu sreću imate odličnog database administratora, koji je prije brisanja testne baze napravio backup svih MetaData objekata (tabele, privilegije, triggeri, PL/SQL procedure i paketi i td.), pa ga podmitite pivom i ćevapima uz blaženi smješak:”E buraz, treba mi onaj PL/SQL paket … zaboravio sam ga kreirati i na production bazi prije brisanja…

MetaData Backup
Da bi vam database administrator mogao vratiti izgubljeni PL/SQL paket nazad, on bi morao prije brisanja baze napraviti backup svih MetaData objekata u bazi (može čak i za pojedinačne šeme i objekte). Za tu svrhu se koristi Oracle DataPump alat (dostupan od verzije 10g), a backup MetaData objekata se obavlja ovako:

C:\> sqlplus / as sysdba
SQL> create or replace directory TEMPDIR as 'C:\temp';
SQL> exit
C:\> set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
C:\> expdp system full=y content=METADATA_ONLY 
DUMPFILE=TEMPDIR:METADATA_BACKUP.DMP status=90 job_name=METADATA_BACKUP_JOB

expdp je Oracle DataPump alat za eksportovanje objekata i podataka iz Oracle baze, a impdp je Oracle DataPump alat za importovanje objekata i podataka u neku Oracle bazu.

Vraćanje izgubljenih objekata
Vraćanje izgubljenih objekata se vrši pomoću impdp alata uz korištenje opcije SQLFILE.
Pokazaću na nekoliko primjera kako možete “povratiti izgubljene” objekte.

1. vraćanje izgubljenih tabela:

C:\>impdp system/passwd123@testdb dumpfile=TEMPDIR:METADATA_BACKUP.DMP
sqlfile=TEMPDIR:HR_TABLES.txt schemas=HR
include=TABLE:\" IN('EMP','DEPARTMENTS')\"

2. vraćanje svih izgubljenih PL/SQL paketa od određenog korisnika:

C:\>impdp system/passwd123@testdb dumpfile=TEMPDIR:METADATA_BACKUP.DMP
sqlfile=TEMPDIR:All_Packages.txt schemas=TESTUSER
include=PACKAGE_SPEC,PACKAGE_BODY

3. vraćanje određenog PL/SQL paketa od jednog korisnika:

C:\>impdp system/passwd123@testdb dumpfile=TEMPDIR:METADATA_BACKUP.DMP
sqlfile=TEMPDIR:Package_TEST1.txt schemas=TESTUSER
include=PACKAGE_BODY:\" ='TEST1'\",PACKAGE_SPEC:\" ='TEST1'\"

4. vraćanje svih PL/SQL paketa, koji započinju sa TEST:

C:\>impdp system/passwd123@testdb dumpfile=TEMPDIR:ESIDEV_METADATA.DMP
sqlfile=TEMPDIR:TEST_Packages.txt schemas=TESTUSER
include=PACKAGE_BODY:\" LIKE 'TEST%'\"

5. kombinovano vraćanje određenog PL/SQL paketa i tabele:

C:\>impdp system/passwd123@testdb dumpfile=TEMPDIR:METADATA_BACKUP.DMP
sqlfile=TEMPDIR:Package_TEST1_Table_TEST.txt schemas=TESTUSER
include=PACKAGE_BODY:\" ='TEST1'\",PACKAGE_SPEC:\" ='TEST1'\",TABLE:\" ='TEST_TABELA'\"

Dobar backup glavu čuva.

Post a Comment