Expdp ve impdp komutlarını kullanarak veri nasıl aktarılır?


29

Ben bir Oracle noob'um ve niyetim tüm verileri ve meta verileri bir şemadan bir Oracle veritabanı içindeki başka bir şemaya aktarmak. Datapump expdpve impdpkomutlarını kullanmayı planlıyorum . Bununla ilgili sorum var:

  • Kullanıcı olmadan bir hedef şema oluşturabilir miyim, yoksa önce bir kullanıcı mı oluşturmalıyım (ayrıca bir şema da oluşturur)?
  • Ben yürütebileceği expdpve impdpSYS (olarak SYSDBA) hesabını kullanarak komutları? Bu tercih edilen bir yöntem midir?
  • Bu ifade tüm nesneleri (veri ve meta veriler) bir şemadan alıyor ve bunları farklı bir şemaya taşıyor mu?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  

    Öyleyse hedef şema impdpkomuttan sonra kaynak şemanın tam bir kopyası mı?

Yanıtlar:


31

impdp Henüz mevcut değilse, kullanıcıyı yaratacaktır, bu yüzden istediğiniz şey olmadığı sürece endişelenmenize gerek yoktur.

Kaçma impdbya expdpkadar sysdba, sadece bunu belirli durumlarda Oracle destek isteklerini kabul edersek. Bunun için sıradan bir kullanıcı kullanın - dbaörneğin rol verilmiş olan . ( [IMPORT|EXPORT]_FULL_DATABASEBu tür bir şey için özel olarak ayrıcalıklar vardır , Oracle dizin nesnelerine de erişmeniz gerekir.)

Tam bir şema dışa aktarımı (meta veri ve içerik) gerçekten şöyle görünür:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

Farklı bir kullanıcı / şemaya aktarmak istiyorsanız (hedef veritabanı kaynakla aynı olabilir), şunları kullanabilirsiniz:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

Tam bir içe aktarma istemiyorsanız, hem verilerde hem de meta verilerde bazı filtreler ayarlayabilirsiniz. Alma İşlemleri Sırasında Filtreleme bölümüne bakın .

Kamu Kılavuzu tüm detaylara sahip, şiddetle bakış bölüm en azından okuma önerilir.


2

Kesilmiş tabloları içe aktarmak için, yani verilerin yalnızca tabloya geri alınmasını istersiniz:

impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE

Masamın üstünde deptalmak istediğim şey bu. Onu daha önce kısalttım. Dumpfile olan TEST.dmpve logfilehangileriyim, expdpTEST.logsadece verinin alınmasını istiyorum (tablo yapısı aynı olacaktır, bu yüzden parametreyi kullanırız TABLE_EXISTS_ACTION).

Örneğin 2 tablolar, kesilmiş varsa empve deptve empmasa vardır dept_idyabancı anahtar olarak, o zaman ithalat gerekir deptdaha sonra ilk masa ve empiçe aktarma sırasında önlemek hatalarına tablo.

daha fazla bilgi http://satya-dba.blogspot.in/2009/05/datapump.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.