DBAtlas · Veritabanı operasyon atlası

Oracle Data Pump: export / import, taşıma, şema yenileme ve transportable

OracleSeviye: OrtaSüre: 30–90 dk (veri boyutuna göre)

expdp/impdp ile tablo, şema, tablespace ya da full kapsamda export, import, iki veritabanı arasında taşıma (dump dosyası + scp + checksum ya da NETWORK_LINK) ve dump'tan DDL çıkarma (SQLFILE). Directory, kullanıcı ve parfile hazırlığı, tutarlılık, paralellik, remap, izleme ve yarıda kalan job temizliği dahil. RAC'te SCAN + servis bağlantısı, paylaşımlı directory ile CLUSTER=YES ya da yerel diskle CLUSTER=NO; isteğe bağlı olarak export'un wallet'lı betik ve /etc/cron.d ile zamanlanması. Senaryolar: üretimden teste şema yenileme (DROP USER … CASCADE ya da TABLE_EXISTS_ACTION=REPLACE, parola/profil ve yetkilerin korunması), transportable tablespace (aynı/farklı platform ve endian, RMAN CONVERT), full transportable (11g/12c → 19c PDB), dump şifreleme ve sıkıştırma, büyük taşımada performans ve yarıda kalan job'ı ATTACH/START_JOB/KILL_JOB ile yönetme.

Yapı: 1 veritabanı (tek instance, Oracle Restart ya da RAC); taşımada kaynak + hedef

Senaryolar

  • Export: veritabanından dump dosyası üret — Tablo, şema, tablespace ya da tüm veritabanı dump dosyasına yazılır (expdp). Veritabanı açık kalır, uygulama çalışmaya devam eder. Mantıksal kopyadır: RMAN yedeğinin yerini tutmaz (zamana dönüş ve tam geri dönüş için RMAN gerekir).
  • Import: dump dosyasını veritabanına al — Daha önce alınmış dump dosyası impdp ile yüklenir; şema/tablespace/tablo adı değiştirilebilir. Hedef açık kalır; yüklenen nesneleri kullanan uygulama durdurulmalıdır.
  • Taşıma: kaynak veritabanından hedefe aktar — Export → dosya kopyalama → import ya da NETWORK_LINK ile dump dosyası olmadan doğrudan. Hedefte şema henüz yoksa (ilk yükleme) bu kartı seçin; hedefte aynı şema zaten varsa ve üretimdekiyle değiştirilecekse "Şema yenileme" kartı. Kaynak açık kalır.
  • Dump dosyasından yalnız DDL çıkar (SQLFILE) — Hiçbir şey yüklenmez; nesnelerin CREATE komutları bir .sql dosyasına yazılır. Veritabanında değişiklik olmaz.
  • Üretimden teste şema yenileme (refresh) — Test/UAT'de zaten var olan şema, üretimdeki güncel hâliyle değiştirilir: hedef şemanın yedeği, oturumların kapatılması, DROP USER … CASCADE ya da TABLE_EXISTS_ACTION=REPLACE, parola/profil ve yetkilerin korunması. Kaynak açık kalır; hedef şema iş boyunca kullanılamaz.
  • Tablespace'i datafile kopyalayarak taşı (transportable tablespace) — Büyük tablespace'ler (yüzlerce GB ve üstü) satır satır değil datafile kopyalanarak taşınır; aynı ya da farklı platform/endian (RMAN CONVERT). Karakter setleri iki tarafta aynı olmalıdır. Kaynakta tablespace'ler iş boyunca READ ONLY olur (yazma kesintisi).
  • Tüm veritabanını taşı: full transportable (11g/12c → 19c, non-CDB → PDB) — FULL=Y TRANSPORTABLE=ALWAYS ile kullanıcı tablespace'leri datafile olarak, geri kalan her şey (kullanıcılar, PL/SQL, yetkiler) metadata olarak yeni bir PDB'ye taşınır; 11.2.0.3+ kaynakta VERSION=12. Kaynakta tüm kullanıcı tablespace'leri iş boyunca READ ONLY olur.
  • Yarıda kalan / askıdaki Data Pump job'ı: izle, devam ettir, sonlandır — Bir expdp/impdp job'ı askıda (resumable wait), durdurulmuş ya da yarıda kalmış; ATTACH ile bağlanıp devam ettirmek, KILL_JOB ile kapatmak ya da orphan master tabloyu temizlemek istiyorsunuz. Veritabanı açık kalır.

Başlamadan önce

  • Komutlar veritabanı sunucusunda oracle kullanıcısıyla çalışır; bu kullanıcının login profili ORACLE_HOME, ORACLE_SID ve PATH değişkenlerini tanımlıyor ve expdp/impdp yolda. expdp, impdp, sqlplus $ORACLE_HOME/bin altındadır; PATH'te değilse bash: expdp: command not found alınır (. oraenv ya da tam yol: $ORACLE_HOME/bin/expdp).… RAC'te her node'da ORACLE_SID o node'un instance adıdır (ör. 1. node'da ……………).…
  • Veritabanı 12.2 veya üstü (19c, 21c, 23ai). Rehberdeki LOGTIME, ENCRYPTION_PWD_PROMPT, DISABLE_ARCHIVE_LOGGING parametreleri 12c ile geldi. 10g/11g için parametre listesi farklıdır; Oracle 9i ve öncesinin .dmp dosyaları yalnız eski imp ile açılır.… Full transportable: export 11.2.0.3'ten (11g'de VERSION=12 ile), import 12.1'den itibaren desteklenir; 11g'de LOGTIME/METRICS yoktur, rehber bu durumda onları kullanmaz.…
  • Listener çalışıyor ve … servisi kayıtlı…; hedefte … servisi kayıtlı….
  • Hedef sunucuda listener çalışıyor ve … servisi kayıtlı.
  • …… (kaynak) ve … (hedef)… için yeterli boş alan var: export'ta tahmini boyut kadar (COMPRESSION=ALL ile genelde 3–5 kat daha az), import'ta dump dosyaları zaten bu dizinde olmalı. Dizin veri dosyaları ve FRA ile aynı diskte olmamalı.
  • Uzun süren tutarlı (FLASHBACK_TIME/SCN) export'ta ORA-01555 almamak için UNDO_RETENTION export süresinden uzun (ör. 3 saatlik export için en az 10800 sn) ve undo tablespace'i bu süreye yetecek kadar büyük (autoextend).
  • Import çok redo üretir: veritabanı ARCHIVELOG modundaysa FRA'da (ya da arşiv hedefinde) yer olmalı. DISABLE_ARCHIVE_LOGGING FORCE LOGGING açıkken (Data Guard) etkisizdir.
  • Hedef veritabanının güncel bir RMAN yedeği var ve geri dönüş yöntemi belli (import geri alınamaz: yanlış şemaya ya da TRUNCATE/REPLACE ile yapılan import ancak yedekten ya da Flashback ile geri döner). Kritik ortamda import öncesi guaranteed restore point alınabilir (ARCHIVELOG + FRA gerekir).
  • Bakım penceresi planlandı: …kaynakta taşınan tablespace'ler export ve datafile kopyalama boyunca READ ONLY olur (yazan uygulama hata alır, ORA-00372); hedefte plug-in sırasında yeni nesneler kullanılmamalı…import süresince hedef nesneleri kullanan uygulamalar durdurulmalı ya da etkilenmeyeceği doğrulanmalı…tutarlılık seçilmediği için export süresince uygulama yazması durdurulmalı….
  • Kaynaktaki oracle kullanıcısı hedefe parolasız (anahtarla) SSH/SCP yapabiliyor ya da dosyalar başka bir yolla (paylaşımlı disk, nesne depolama) taşınacak.
  • Hedef sunucu kaynağın listener portuna (…:…) erişebiliyor (firewall açık).
  • Lisans kontrolü: …COMPRESSION=ALL (ve DATA_ONLY) Advanced Compression Option lisansı gerektirir. ……Dump şifreleme (ENCRYPTION, ENCRYPTION_PASSWORD/ENCRYPTION_PWD_PROMPT) Enterprise Edition'da Advanced Security Option lisansı gerektirir. …Lisansınız yoksa bu seçenekleri kapatın.

Rehberin aşamaları

  • Hazırlık: ortam, kullanıcı ve directory — Ortamı ve listener servisini doğrula · Ortamı ve listener servisini doğrula (kaynak) · Ortamı ve listener servisini doğrula (hedef) · SCAN ve servisin instance'larını doğrula · Sürüm, karakter seti ve log modunu kontrol et · Sürüm, karakter seti ve log modunu kontrol et (kaynak) …
  • 1. Teşhis: doğru hedef mi? (şema yenileme) — Hedef şemanın durumunu kaydet (hedef) · Kaynak şemanın durumunu kaydet (kaynak)
  • 2. Güvenlik ağı: hedef şemanın yedeği ve kullanıcı tanımı — Test kullanıcısının tanımını ve yetkilerini kaydet (hedef) · Hedef şemanın yedeğini al (hedef)
  • 1. Teşhis: transportable koşulları — Kaynakta platform, karakter seti ve tablespace kümesini kontrol et (kaynak) · Hedefte platform, karakter seti ve ad çakışmasını kontrol et (hedef)
  • 2. Güvenlik ağı ve hazırlık — Datafile listesini ve mevcut READ ONLY durumunu kaydet (kaynak) · Hedefte datafile dizinini hazırla (hedef)
  • 3. Uygulama: kaynakta READ ONLY, metadata export ve kopyalama — Tablespace'leri READ ONLY yap (kaynak) · Transportable export parfile'ını yaz (kaynak) · Metadata export'unu çalıştır (kaynak) · Datafile'ları ve dump'ı hedefe kopyala (kaynak)
  • 4. Uygulama: hedefte plug-in — Kopyalanan dosyaları doğrula (hedef) · Datafile'ları bu platforma dönüştür: RMAN CONVERT (hedef) · Nesne sahibi şemaları oluştur (hedef) · Plug-in import parfile'ını oluştur (hedef) · Plug-in import'u çalıştır (hedef) · Tablespace'leri yazılabilir yap (hedef)
  • 5. Doğrulama ve sonrası — Tablespace dışındaki nesneleri dışa aktar (kaynak) · Tablespace dışındaki nesneleri yükle (hedef) · Geçersiz nesneleri derle ve doğrula (hedef) · Kaynakta tablespace'leri READ WRITE'a geri al (kaynak)
  • Export — Büyük nesneleri, LOB'ları ve partition'ları incele · Boyutu tahmin et (ESTIMATE_ONLY) · Boyutu tahmin et (ESTIMATE_ONLY) (kaynak) · Export parfile'ını yaz · Export parfile'ını yaz (kaynak) · Export'u çalıştır …
  • Dump dosyalarını hedefe taşıma — Checksum dosyasını oluştur · Dump dosyalarını hedefe kopyala · Hedefte checksum'u doğrula
  • Database link (NETWORK_LINK) — Hedefte database link'i oluştur
  • 3. Uygulama: hedef şemayı boşalt — Kullanıcıyı kilitle ve oturumları kapat (hedef) · Şemayı sil ve test kullanıcısını yeniden oluştur (hedef) · REPLACE modunda güncellenmeyecek nesneleri listele (hedef)
  • Import — Dump dosyalarını kontrol et · Dump dosyalarını kontrol et (hedef) · Hedefte alan ve mevcut şemaları kontrol et · Hedefte alan ve mevcut şemaları kontrol et (hedef) · Import parfile'ını yaz · Import parfile'ını yaz (hedef) …
  • Import sonrası: derleme ve istatistik — Geçersiz nesneleri derle · Geçersiz nesneleri derle (hedef) · İstatistikleri topla · İstatistikleri topla (hedef)
  • 4. Doğrulama ve sonrası (şema yenileme) — Üretimden gelen scheduler job'larını durdur (hedef) · Şemanın başkalarına verdiği yetkileri yeniden uygula (hedef) · Nesneleri, synonym'leri ve link'leri kontrol et (hedef) · Kullanıcıyı aç (hedef)
  • SQLFILE: dump'tan DDL çıkarma — Dump dosyalarını kontrol et · SQLFILE parfile'ını yaz · DDL dosyasını üret · DDL dosyasını incele
  • Zamanlama: export'u düzenli çalıştır (cron) — Betik, log ve TNS dizinlerini hazırla… (…)… · Wallet'ı oluştur ve kimlik bilgisini ekle · Wallet'ı diğer node'lara kopyala · sqlnet.ora'yı yaz (yalnız bu iş için)… (…)… · tnsnames.ora'yı yaz (yalnız bu iş için)… (…)… · Export betiğini yaz… (…)… …
  • 1. Teşhis: job ne durumda? — Job'ın durumunu, oturumlarını ve bekleme nedenini göster · Sonucu yorumla ve işlemi seç
  • 2. Uygulama: job'ı devam ettir — Durma ya da askıya alınma nedenini gider · Job'a bağlan ve devam ettir (ATTACH, START_JOB) · Job'ın çalıştığını doğrula
  • 2. Uygulama: job'ı sonlandır (KILL_JOB) — Job'a bağlan ve KILL_JOB ile sonlandır · Job'ın kalktığını doğrula
  • 2. Uygulama: orphan master tabloyu temizle — Orphan job'ın master tablosunu sil
  • İzleme — Çalışan job'ı izle · Çalışan job'ı izle (kaynak) · Çalışan job'ı izle (hedef) · Job'a bağlan: ATTACH ve etkileşimli komutlar · Job'a bağlan: ATTACH ve etkileşimli komutlar (kaynak) · Job'a bağlan: ATTACH ve etkileşimli komutlar (hedef)
  • Temizlik ve güvenlik — Yarıda kalan job'ları ve master tabloları listele · Yarıda kalan job'ları ve master tabloları listele (kaynak) · Yarıda kalan job'ları ve master tabloları listele (hedef) · Job'ı KILL_JOB ile sonlandır · Job'ı KILL_JOB ile sonlandır (kaynak) · Job'ı KILL_JOB ile sonlandır (hedef) …
Ortamına göre adım adım planı aç →