Bagaimana cara mentransfer data menggunakan perintah expdp dan impdp?

29

Saya seorang Oracle noob, dan maksud saya adalah untuk mentransfer semua data dan metadata dari satu skema ke skema lain dalam database Oracle. Saya berencana untuk menggunakan datapump expdpdan impdpperintah. Saya punya pertanyaan tentang ini:

  • Bisakah saya membuat skema target tanpa pengguna atau haruskah saya membuat pengguna terlebih dahulu (yang juga membuat skema)?
  • Bisakah saya menjalankan expdpdan impdpmemerintahkan menggunakan akun SYS (as sysdba)? Apakah itu metode yang disukai?
  • Apakah pernyataan ini mengambil semua objek (data dan metadata) dari suatu skema dan memindahkannya ke skema yang berbeda?

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

    Jadi apakah skema target merupakan salinan tepat dari skema sumber setelah impdpperintah?

jrara
sumber

Jawaban:

31

impdp akan membuat pengguna jika belum ada, jadi Anda tidak perlu khawatir tentang hal itu kecuali itu bukan yang Anda inginkan.

Jangan jalankan impdbatau expdpseperti sysdba, hanya lakukan itu jika dukungan Oracle memintanya dalam keadaan tertentu. Gunakan pengguna biasa untuk itu - pengguna yang telah diberikan dbaperan misalnya. (Ada [IMPORT|EXPORT]_FULL_DATABASEhak istimewa khusus untuk jenis hal ini, Anda harus memberikan akses ke objek direktori Oracle juga.)

Ekspor skema penuh (metadata dan konten) memang akan terlihat seperti:

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

Jika Anda ingin mengimpor ke pengguna / skema yang berbeda (database target bisa sama dengan sumbernya), Anda dapat menggunakan:

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

Jika Anda tidak ingin impor lengkap, Anda dapat mengatur beberapa filter pada data dan metadata. Lihat Memfilter Selama Operasi Impor .

The Panduan Utilities memiliki semua rincian, saya sangat menyarankan membaca setidaknya bagian ikhtisar.

Tikar
sumber
2

Untuk mengimpor tabel terpotong, yaitu Anda hanya ingin data diimpor kembali ke tabel:

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

Di atas meja saya adalah deptyang ingin saya impor. Saya telah memotongnya sebelumnya. Dari dumpfile yang ada TEST.dmp, dan logfileyang expdpTEST.logsaya inginkan hanya data yang akan diimpor (struktur tabel akan sama sehingga kami menggunakan parameter TABLE_EXISTS_ACTION).

Jika Anda telah memotong 2 tabel, misalnya empdan dept, dan emptabel memiliki dept_idsebagai kunci asing, maka Anda perlu mengimpor depttabel terlebih dahulu dan kemudian emptabel untuk menghindari kesalahan selama impor.

info lebih lanjut http://satya-dba.blogspot.in/2009/05/datapump.html

pengguna3649154
sumber