it-swarm.asia

كيفية نقل البيانات باستخدام أوامر expdp و impdp؟

أنا أوراكل noob ، وأعتزم نقل جميع البيانات والبيانات الوصفية من مخطط واحد إلى مخطط آخر داخل قاعدة بيانات Oracle. أنا أخطط لاستخدام أوامر expdp و impdp. لدي أسئلة بخصوص هذا:

  • هل يمكنني إنشاء مخطط مستهدف بدون مستخدم أم يجب إنشاء مستخدم أولاً (الذي ينشئ مخططًا أيضًا)؟
  • هل يمكنني تنفيذ أوامر expdp و impdp باستخدام حساب SYS (مثل sysdba)؟ هل هذه طريقة مفضلة؟
  • هل يأخذ هذا البيان جميع الكائنات (البيانات والبيانات الوصفية) من مخطط وينقلها إلى مخطط مختلف؟

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

    إذن هل المخطط الهدف نسخة طبق الأصل من المخطط المصدر بعد الأمر impdp؟

29
jrara

impdp سينشئ المستخدم إذا لم يكن موجودًا بعد ، لذلك لا داعي للقلق بشأنه إلا إذا لم يكن هذا ما تريده.

لا تقم بتشغيل impdb أو expdp مثل sysdba ، افعل ذلك فقط إذا طلب دعم Oracle ذلك في ظروف محددة. استخدم مستخدمًا عاديًا لهذا الغرض - مستخدم تم منحه دور dba على سبيل المثال. (هناك هي [IMPORT|EXPORT]_FULL_DATABASE امتيازات خاصة لهذا النوع من الأشياء ، ستحتاج إلى منح حق الوصول إلى كائن (كائنات) دليل Oracle أيضًا.)

قد يبدو تصدير المخطط الكامل (البيانات الوصفية والمحتويات) كما يلي:

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

إذا كنت تريد الاستيراد إلى مستخدم/مخطط مختلف (يمكن أن تكون قاعدة البيانات الهدف هي نفسها المصدر) ، يمكنك استخدام:

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

إذا كنت لا تريد استيرادًا كاملاً ، يمكنك تعيين بعض الفلاتر على كل من البيانات والبيانات الوصفية. راجع التصفية أثناء عمليات الاستيراد .

دليل المرافق يحتوي على جميع التفاصيل ، أوصي بشدة بقراءة جزء النظرة العامة على الأقل.

31
Mat

لاستيراد الجداول المقطوعة ، أي أنك تريد فقط استيراد البيانات مرة أخرى إلى الجدول:

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

وفوق طاولتي يوجد dept الذي أريد استيراده. لقد اقتطعته في وقت سابق. من ملف التفريغ الذي هو TEST.dmp و logfile وهو expdpTEST.log أريد استيراد البيانات فقط (ستكون بنية الجدول هي نفسها لذا نستخدم المعلمة TABLE_EXISTS_ACTION).

إذا قمت باقتطاع جدولين ، على سبيل المثال emp و dept ، و emp يحتوي الجدول على dept_id كمفتاح خارجي ، فأنت بحاجة إلى قم باستيراد الجدول dept أولاً ثم الجدول emp لتجنب الأخطاء أثناء الاستيراد.

مزيد من المعلومات http://satya-dba.blogspot.in/2009/05/datapump.html

2
user3649154