24 Ocak 2012 Salı

Export ve datapump Araçları ile Yedek almak

Yedek alma işi çok değişik yöntemlerle yapılabilir.
En klasik yöntem olarak, işletim sistemi komutlarıyla önemli veritabanı dosyalarının fiziksel olarak kopyalanıp yedeklenmesi
Mantıksal olarak Export aracı ile yedek almak;
Datapump(expdp) aracı ile yedek almak;
RMAN ile yedek alınarak veritabanının sürekliliği sağlanmış olur.

Veritabanı için olmazsa olmaz üç tip dosya vardır.

Kontrol dosyaları(control file), veritabanı için önemli sayılan dosyalar ve onların path’leri, veritabanının yedek bilgisi, varsa bir standby veritabanı bilgisi gibi önemli bir çok bilginin kayıtlı olduğu kütük dosyasıdır. Çok önemli bir dosyadır. Default olarak 2 adettir. Fakat çoğaltılması isteğe bağlıdır. Yedeklerinde de aynı bilgiler mevcuttur. Bir controlfile kaybolur yada silinirse bu yedekler devreye sokulur. Bu dosya olmazda veritabanı çalışması durur ve açılmaz. Çözüm ise En güncel controlfile devreye sokulmasıdır yada yedeği alınmış controlfile ‘den yedekten dönülmesidir.

Veri dosyaları(data file), verilerin kaydedildiği dosyalardır. Önemli dosyalardır. Eksikliği yada silinmesi durumunda veri tabanını açılmaz. Yedek ihtiyacı hissedilir. Çözüm ise yedekten geri dönme ile sağlanılır.

Online Redo Log dosyaları, veritabanında yapılan tüm transactionların (değişikliklerin) kaydedildiği log dosyalarıdır. Bu log dosyaları default 3 group’tur. İsteğe görede çoğaltılabilir. Yada grouplara yeni üye log file’ lar eklenebilir. Ve doldur boşalt(switch) sistemiyle çalışan log mekanizmalarıdır. Eğer biz Veritabanı için Archivelog moduna alırsak, bu log dosyaları geriye dönük kurtarmalar(Recovery) için arşivlenir. Aksi halde yani veritabanı Noarchivelog modunda ise bu log dosyaları dolduktan sonra içeriği boşaltılıp tekrar loglanmaya hazır hale gelecektir. Veritabanı için önemli dosyalardır. Kaybı olması durumunda veritabanı sistemi logların mod yapısına göre değişiklik gösterilecektir.
Yukarıdaki üç dosya tipi veri tabanı için hayati dosyalardır. Bu dosyalar veri tabanın açılış safhasında önce parameter file, sonra controlfile okunarak veritabanı mount moduna getirilebilir. Daha sonra ise open moduna gelebilmesi içinde datafile ve online redo log dosyaları okunur. Controlfile okunarak içerisindeki yazılan datafile ve online redo log file eksiksiz ve tutarlı hale gelmiş ise sistem open moduna gelip hizmet vermeye başlayacaktır. O yüzden aşağıdaki dynamic performans view larini kullanarak bu dosyların yerlerini öğrenip bu dosyaların yedeğini almak istiyorum.

SQL> select name from v$controlfile union
2 select name from v$datafile union
3 select member from v$logfile;
NAME
--------------------------------------------------------------------
+DATA/mytablespace Veridosyası
+DATA/myundo Veridosyası
+DATA/neworcl/datafile/example.265.745007059 Veridosyası
+DATA/neworcl/datafile/sysaux.257.745006719 Veridosyası
+DATA/neworcl/datafile/system.256.756697091 Veridosyası
+DATA/neworcl/datafile/test.269.745702809 Veridosyası
+DATA/neworcl/datafile/undotbs1.258.745006721 Veridosyası
+DATA/neworcl/datafile/users.259.745006721 Veridosyası
+DATA/neworcl/onlinelog/group_1.261.765328145 Redo Log dosyası 1
+DATA/neworcl/onlinelog/group_2.262.765328167 Redo Log dosyası 2
+DATA/neworcl/onlinelog/group_3.263.765328189 Redo Log dosyası 3
+DATA/neworcl/onlinelog/group_4.273.765328207 Redo Log dosyası 4
+DATA/neworcl/controlfile/current.260.745007003 Kontrol Dosyası1
+FRA/neworcl/onlinelog/group_1.257.765328155 Redo Log dosyası 1 yed.
+FRA/neworcl/onlinelog/group_2.258.765328177 Redo Log dosyası 2 yed.
+FRA/neworcl/onlinelog/group_3.259.765328197 Redo Log dosyası 3 yed.
+FRA/neworcl/onlinelog/group_4.310.765328219 Redo Log dosyası 4 yed.
+FRA/neworcl/controlfile/current.256.745007003 Kontrol Dosyası yedek
/home/oracle/df_test.dbf

Fiziksel bir yöntem olarka unix cp ile mevcut bu dosyaları hedef yedek klasötlerine kopyalıyorum. Ve birer yedeklerini almış oluyorum.
$ cp +DATA/neworcl/datafile/sysaux.257.745006719 /home/oracle/yedekdatafile/
$ cp +DATA/neworcl/datafile/system.256.756697091 /home/oracle/yedekdatafile/
$ cp +FRA/neworcl/onlinelog/group_1.257.765328155 /home/oracle/yedekloglar/
$ cp +FRA/neworcl/onlinelog/group_2.258.765328177 /home/oracle/yedekloglar/
$ cp +FRA/neworcl/onlinelog/group_3.259.765328197 /home/oracle/yedekloglar/
$ cp +DATA/neworcl/datafile/users.259.745006721 /home/oracle/yedekdatafile/
$ cp +DATA/neworcl/datafile/undotbs1.258.745006721 /home/oracle/yedekdatafile/
$ cp +FRA/neworcl/controlfile/current.256.745007003 /home/oracle/yedekcontrolfile/

Export ile yedek Almak: Mantıksal bir yedek almak için kullanılan en eski yöntemdir. Database yedek almak için sysdba rolüne yada EXP_FULL_DATABASE yetkisine sahip bir kullanıcı olmak gerekir.

$ Exp help=y
Yazılarak export işlemi hakkında bilgiler yada seçenekler yardımı görülebilir.
Eğer siz kullanıcı adı ve password ‘u hangi backup mode alınacağını yada alınacak yedek ismini sonra da girebilirsiniz. Zaten export aracı sizden bu bilgileri prompt şeklinde sizden isteyecektir.
Örnek bir exp işlemi:

$ exp dbamhm/sifre full=Y file=/home/oracle/full_database.dmp; Test veritabanım yok denecek kadar az bir veri olmasına rağmen yaklaşık olarak 12 dk sürdü. “Full=y “ seçeneği tüm database yedek alınmasıdır.
Tables seçeneği ile yazılan tabloların yedeği alınmaktadır.
$ exp dbamhm/sifre tables=(employees,departments) file=/home/oracle/tbl_emp_dept.dmp;

Parametre dosyası ile de yedek alınabilmektedir. Yani tüm bilgilerin bu console ekranına yazmaktansa bir parametre dosysı oluşturulur ve PARFILE=dosya kullanılarak erişim yapılır.
Örnek kullanım:
$ exp dbamhm/sifre PARFILE=ydk.txt;
Ydk.txt içeriği:
FILE=fulldb.dmp
BUFFER=2000000
FULL=Y
OWNER=dbamhm
GRANTS=y
COMPRESS=n

Alınan bu yedek default olarak COMPRESS seçeneği Yes dir. Yani otamatik olarak alandan tasarruf için sıkıştırılma yapılmaktadır. İstenilmediği takdirde COMPRESS=N olarak belirtilmelidir.
BUFFER tagı ise Expor işlemi için tanınmış bir tampon bellek ayracıdır. Bu değerin çok olması exp işlemini hızlandıracaktır. 2000000=2MB anlamına gelmektedir.

Bir Query sonucunuda yedekleyebiliriz. Bunun için QUERY tagına Where şartı ile yazılaması gerekir.
Örnek kullanım;

exp file=yedeksorgu.dmp tables=deneme query=\"where name=\'MHM\'\" rows=yes

Expdp(Datapump) yedek Almak:

$ Expdp help=Y

komutu Tüm backup seçenekleri için yardım sunar.
Yedek alınacak bir dizin oluşturulur ve yetkili kullanıcıya bu dizin için yazma ve okuma hakları verilir.

SQL>CREATE OR REPLACE DIRECTORY exp_dir AS '/home/oracle/';
SQL>GRANT READ, WRITE ON DIRECTORY exp_dir TO exp_usr;

Tabloların yedeğini almak için;

$ expdp exp_usr/palavra tables=deneme,deneme01,deneme02 directory=EXP_DIR dumpfile=denemes.dmp logfile=denemes.log

Schema/Schemaların yedeğini almak için;

$ expdp exp_usr/palavra schemas=exp_usr,tx01 directory=EXP_DIR dumpfile=sch_exp_usr.dmp logfile=sch_exp_usr.log


Tablespace yedeğini almak için;

$ expdp exp_usr/palavra tablespaces=examples directory=EXP_DIR dumpfile=tbs_examples.dmp logfile=tbs_examples.log

Bütün bir database yedeğini almak için;

$ expdp exp_usr/palavra full=Y directory=EXP_DIR dumpfile=fulldb.dmp logfile=fulldb.log


Niçin Exp/imp yada expdp/impdp aracı kullanılır?
  • Küçük boyutlu database’ lerde backup ve recovery için uygundur.
  • Databaseler arasında tablespace,tablo yada schema taşımak için uygundur.
  • Farklı platformlardaki oracle databaseler arasında veri transferi için uygundur.
  • Test makinesine database taşımak ve test etmek için uygundur.
  • Oracle farklı versiyonlarda Upgrade etmek için exp/imp araçları kullanılabilir. Yalnız burada bilinmesi gereken düşük versiyondan alınan bir backup için bir üst yada son versiyondaki bir database veri taşıncaksa catexpX.sql dosyasını çalıştırılarak son sürümdeki bir veritabanına eski exp yedeği(dump) yeni sürümde import edilebilir hale gelir.ancak bu şekilde tutarlı olur. Örnek oracle 9i da alınmış bir exp dump’ ı oracle 10g ‘deki catxp9.sql çalıştırıldıktan sonra imp aracı kullanılır.
Bir sonraki yazımızda da RMAN(Recovery Manager) teknolojisi ile yedek almayı göreceğiz. Oracle,  veri sürekliliği  açısından yedek alma/kurtarma aracı olarak RMAN teknolojisini tavsiye etmektedir. 

Bir sonraki makalemizde görüşmek üzere...




0 yorum:

Yorum Gönder