"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ı ve başka bir yere taşınması için sırasıyla expdp ve impdp adlı araçlar kullanılmaktadır.

DataPump Araç Seti

Oracle veritabanları üzerinde yedekleme ve veri taşınması işlemleri Data Pump araç seti ile gerçekleştirilmektedir. Veri çıkarma işlemi için bu araç seti içerisinde bulunan expdp aracı kullanılmakta, verinin başka bir yere taşınması ise impdp aracı ile gerçekleştirilmektedir. Yapılan tüm veri çıkarma ve taşıma işlemleri sunucu tarafında komut satırı üzerinden 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 yedekleme ve taşıma işlemleri paralel olarak yapılabilmektedir. Bununla birlikte Data Pump ile harici tablolar da kullanılabilmektedir. Data Pump ile tüm veritabanını export edebildiğimiz gibi, sadece belli tabloları veya belli şemaları (schema) da export/import edebiliriz.

  1. Data Pump ile yedekleme işlemine başlamadan önce veritabanı sunucusu üzerinde oracle kullanıcısının yazma ve okuma yetkisinin olduğu bir klasör oluşturup bunu Oracle database üzerinde tanımlamamız gerekiyor.

Ö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 tanımlayalım.

$ sqlplus / as sysdba

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

Directory created.

Eğer belli bir oracle kullanıcısına bu klasör üzerinde okuma/yazma hakları vereceksek aşağıdaki komutu kullanabiliriz.

SQL> GRANT read,write ON DIRECTORY dump_dir TO harun;
  1. Oracle veritabanımızda bulunan tabloları yedeklemek/dışarı çıkarmak 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ı alınmış bir tabloyu 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ı aktarma ve geri yükleme 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