"Enter"a basıp içeriğe geçin

Oracle Veritabanında Export ve Import İşlemleri

Oracle veritabanlarında veri taşıma işlemleri için Data Pump adlı yardımcı araç seti kullanılmaktadır. Verilerin bir veritabanından çıkarılması veya veritabanının komple çıkarılması, yedeklenmesi veya başka bir yere taşınması için sırasıyla expdp ve impdp adlı araçlar kullanılabilir.

DataPump Araç Seti

Oracle veritabanları üzerinde yedekleme ve veri taşınması işlemleri Data Pump araç seti ile gerçekleştirilebilmektedir. Dışa aktarma işlemi için bu araç seti içerisinde bulunan expdp aracı kullanılmakta, içe aktarma işlemi için ise impdp aracı kullanılmaktadır. Yapılan tüm içe aktarma ve dışa aktarma işlemleri sunucu tarafında yapılmaktadır. Burada istemci sadece yapmak istediği işlemin komutunu vermektedir. Bir API vasıtası ile PL/SQL procedureları içerisinden de Data Pump araçlarının kullanımı mümkün hale gelmiştir. Komut satırından verilen “parallel=” parametresi ile dışa ve içe aktarma işlemleri paralel olarak yapılabilmektedir. Bunun yanında Data Pump ile harici tablolar da kullanılabilmektedir. Data Pump ile tüm veritabanını dışa veya içe aktarabildiğimiz gibi, sadece belli tabloları veya belli şemaları (schema) da dışa veya içe aktarabiliriz. Şimdi Oracle Veritabanı üzerinde dışa veya içe aktarma işleminin nasıl yapıldığını sırasıyla görelim:

  1. Data Pump ile yedekleme işlemine başlamadan önce dışa veya içe aktarma işlemini yapacağımız veritabanı sunucusunun erişebileceği bir depolama konumunda oracle kullanıcısının yazma ve okuma yetkisinin olduğu bir klasör oluşturup bunu Oracle veritabanına mantıksal bir dizin nesnesi olarak tanımlamamız gerekiyor. Bu örnekte dizinimiz “/u01/yedek/yolu” olacak.

Öncelikle oracle kullanıcısı ile sistemimize bağlanıp yedekleme dosyalarının yazılacağı
klasörü oluşturalım.

$ mkdir -p /u01/yedek/yolu

Sunucu üzerinde oluşturmuş olduğumuz klasörü Oracle veritabanına dizin nesnesi olarak tanımlayalım.

$ sqlplus / as sysdba

SQL>CREATE OR REPLACE DIRECTORY dump_dir AS '/u01/yedek/yolu';

Directory created.

Dışa aktarma işlemini yapacak olan kullanıcıya bu dizin üzerinde okuma ve yazma izinlerini verelim.

SQL> GRANT read,write ON DIRECTORY dump_dir TO harun;

Dışa aktarma yapmak isteyen kullanıcıya dizin üzerinde okuma ve yazma yetkisi vermenin yanı sıra, DATAPUMP_EXP_FULL_DATABASE rolünü de vermemiz gerekiyor.

SQL>GRANT DATAPUMP_EXP_FULL_DATABASE TO harun;
  1. Şimdi veritabanındaki tabloları dışarı aktarmaya hazırız. Oracle veritabanında bulunan tabloları dışa aktarmak için aşağıdaki komutu kullanıyoruz.
$ expdp harun/[email protected] tables=harun.MUSTERILER directory=dump_dir dumpfile=yedek.dmp logfile=yedek.log parallel=3
  1. Veritabanımıza daha önceden dışarı aktarılmış bir tabloyu içe aktarmak için aşağıdaki komutu kullanıyoruz. Burada veritabanına alacağımız tabloların önceden veritabanında mevcut olmamasına dikkat etmemiz gerekiyor.
$ impdp harun/[email protected] tables=harun.MUSTERILER directory=dump_dir dumpfile=yedek.dmp logfile=yedek.log
  1. Veritabanımızda bulunan bir şemayı dışarı aktaracaksak aşağıdaki komutu kullanıyoruz.
$ expdp harun/[email protected] schemas=harun directory=dump_dir dumpfile=yedek.dmp logfile=yedek.log
  1. Veritabanımıza önceden yedeklemiş olduğumuz bir şemayı import etmek için aşağıdaki komutu kullanıyoruz. Burada import edeceğimiz şema içeriğinin veritabanımızda mevcut olmamasına dikkat etmemiz gerekiyor.
$ impdp harun/[email protected] schemas=harun directory=dump_dir dumpfile=yedek.dmp logfile=yedek.log
  1. Veritabanımızın tamamını export etmek için aşağıdaki komutu kullanıyoruz.
$ expdp system/[email protected] full=Y directory=dump_dir dumpfile=dbyedek.dmp logfile=dbyedek.log
  1. Yedeklediğimiz veritabanımızı mevcut bir veritabanı üzerine aktarmak için aşağıdaki komutu kullanıyoruz. Burada impdp komutunun var olan nesneleri atlayacak olmasına dikkat etmemiz gerekiyor. Bu yüzden üzerine aktarım yapacağımız mevcut veritabanımızın yeni oluşturulmuş boş bir veritabanı olması gerekiyor.
$ impdp system/[email protected] full=Y directory=dump_dir dumpfile=dbyedek.dmp logfile=dbyedek.log
  1. Oracle veritabanında dışarı ve içeri aktarma işlemleri db link üzerinden de yapılabilmektedir. Böylece uzak veritabanında bulunan bir tabloyu yedekleme imkanı bulunmaktadır. Bunun için:

Öncelikle “tnsnames.ora” dosyasına uzak veritabanı bilgilerini girelim.

$ vi /u01/app/oracle/product/19.0.0.0/db/network/admin/tnsnames.ora

DB_LINK_ADI =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=<ip_adresi>)(PORT = <port_numarasi>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <servis_adi>)
)
)

Ardından veritabanımıza sqlplus aracını kullanarak dba yetkisi ile bağlanalım.

$ sqlplus / as sysdba

Şimdi de uzaktaki veritabanımıza db link oluşturalım.

SQL> create public database link <link_adi>
connect to <kullanici_adi>
identified by <parola>
using '<servis_adi>';

Buradaki parametreleri açıklayacak olursak:

<link_adi>: Db link adı
<kullanici_adi>: Bağlantı kuracağımız uzak veritabanındaki kullanıcı adı
<parola>: Bağlantı kuracağımız uzak veritabanındaki kullanıcının parolası
<servis_adi>: TNS (tnsnames.ora) dosyasında db link için tanımlanan isim.

Uzak veritabanımızdan veri çıkarma (export) işlemini yapmak için

$ expdp system/[email protected] tables=harun.MUSTERILER network_link=DB_LINK_ADI directory=dump_dir dumpfile=yedek.dmp logfile=yedek.log

Export edilmiş bir dump (dmp) dosyasından uzak veritabanımıza verileri almak için

$ impdp system/[email protected] tables=harun.MUSTERILER network_link=DB_LINK_ADI directory=dump_dir dumpfile=yedek.dmp logfile=yedek.log remap_schema=harun:cetin
  1. Veritabanımızda belli bir zamana veya belli bir SCN numarasına göre dışarı alma işlemi de yapabiliriz. Bunun için expdp komutunun sonuna aşağıdaki parametreleri eklememiz gerekir.

Belli bir zamana göre export yapmak için

flashback_time=\"to_timestamp(\'11-11-2020 22:37:00\', \'DD-MM-YYYY HH24:MI:SS\')\"

Belli bir SCN numarasına göre export yapmak için

flashback_scn=46827951432

10. Data Pump araçlarına vereceğimiz parametreleri harici bir parametre dosyasından da alabiliriz. Bunun için;

$ vi /home/oracle/dmp_parameters.par

directory=dump_dir
tables=PERSONEL,MUSTERILER
dumpfile=yedek.dmp
logfile=yedek.log
parallel=4

$ expdp harun/[email protected] parfile=/home/oracle/dmp_parameters.par

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir