الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دروس في EXPORT/IMPORT

مغلق
بدأه ayman_zaki في 22 أبريل 2003 · 11 رد · 3,862 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

Import/Export utilities (الاستيرادالتصدير)

**مقدمة:

في البداية يجب أن نفرق بين نوعين من الbackup و هما:

-Physical backups: و التي تقوم بأخد نسخ فيزيائية للملفات المكونة لقاعدة البيانات.و يتم ذلك باستخدام أوامر معينة تبعاً للحالة التي تكون فيها قاعدة البيانات، أو باستخدام RMAN(Recovery Manager) الذي سهل هذه المهمة على مدير قاعدة البيانات و جعلها أكثر فعالية.

-Logical backups: و هو صلب موضوعنا ! يمكننا من اسمه أن نستنتج ما يقوم بحفظه. هذا النوع يقوم بأخذ نسخة احتياطية للكائنات (schema objects). يتم استخدام الاستيرادالتصدير لهذا الأمر. الأمر Export (التصدير) يقوم بأخذ النسخة الاحتياطية(backup) لما تحدده ، و يحفظه ضمن ملف (.dmp) ،بينما يقوم الأمرImport (الاستيراد)بعمل restore لهذه الكائنات الى قاعدة البيانات.

**مميزات الاستيرادالتصدير :

- تعليمة Export تقوم بفحص الdata blocks للنسخ التي تقوم بتكوينها.

- يمكنك أن تستخدم Export لحفظ قسم من الجدول و ذلك عند كتابة الاستعلام الذي تريده.

- الملفات الناتجة (.dmp) يمكنك استخدامها على أي platform دون أي مشكلة.

- تعتبر من أفضل الوسائل المستخدمة عند الترقية لاصدارات جديدة من اوراكل.

- تستخدم أيضاً لنقل الجداول من مستخدم لآخر أو من قاعدة بيانات لأخرى.

- يمكن للمطورين استخدام هذه الطرق لحفظ جداولهم التي يقومون بإجراء التجارب عليها.

**سلبيات الاستيرادالتصدير:

- بطيئة بالمقارنة مع ال Physical backups.

- أي تغيير يطرأ على الكائن بعد اجراء Export لن يكون مخزناً في الملفات الناتجة(أمر طبيعي).

*ملاحظة: للقيام بذلك يجب أن تمتلك الroles التالية:

-EXP_FULL_DATABASE

-IMP_FULL_DATABASE

---------** أنواع الاستيرادالتصدير **---------

من المهم أن نفهم جيداً الأنواع التالية من الاستيرادالتصدير حتى لا نضيع عندما يأتي السؤال( ما الذي سأخزنه بالضبط؟)....توجد لدينا أربعة مستويات و سأقوم بشرح عمليتي الاستيرادالتصدير لكل مستوى مع أمثلة ، عساها أن تكون واضحة، و لنفترض من الآن أن الحساب المستخدم هو system ، و الملف الناتج باسم arabteam.dmp ،

أما الملف الخاص بتسجيل أي ملاحظات أو أخطاء قد تحصل أثناء الاستيرادالتصدير هو oralog.log ، أما المستخدم الذي سنصدر جداوله فهو صاحبنا المسكين scott، و أما الاستيراد فهو للمستخدم salah

1- مستوى الجدول(Table mode) :

يتم تحديد الجداول التي تريد تصديرها باستخدام البارامتر TABLES .

مثال: لتصدير جدولي emp,dept بكل سجلاتهما :

C:> EXP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
TABLES=scott.emp,scott.dept ROWS=y

الآن نقوم باستيراد جدول منهما لحساب salah و ليكن emp :

C:> IMP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
TABLES= emp  FROMUSER=scott  TOUSER=salah

يتبع ان شاء الله...(f)

#2

انا عندي سؤال ..

انا عندي قاعده بيانات على جهاز و ابغى انقل عده جداول معينه من القاعده الى قاعده اخرى بنفس اسم المستخدم ؟؟ فهل في طريقه اقدر من خلالها اصدر الجدول !!

#3

جواب سؤالك هو نفس ما تم شرحه تماماً!!!

المهم أن يكون للمستخدم الذي يقوم بالعمل الroles المذكورة.

إذا كان الشرح غير واضح :o ..اعطني اسماء الجداول و المستخدمين من أجل كتابة التعليمات الملائمة.

(f)

#5

أخي صلاح...

الحمدلله أنك تخطيت المشكلة. (f)

الدرس الثاني

مثال آخر:

كما ذكرت مسبقاٌ بأنه يمكننا تحديد قسم من الجدول ( أو عدة جداول ) للتصدير من خلال استعلام نفوم بكتابته.

فإذا أردنا مثلاً أن نصدر جميع سجلات الموظفين في الجدول emp الذين يتبعون للدائرة رقم 20 :

C:> EXP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
TABLES=scott.emp QUERY=”””where deptno=20””””

ملاحظة:البارامتر QUERY يستخدم فقط لمستوى الجدول.

2-مستوى المستخدم(User Mode):

يمكنك أن تقوم بتصديراستيراد جميع الكائنات التابعة لمستخدم ما من خلال تحديد الاسم.

ففي التصدير نستخدم البارامتر OWNER كما في المثال التالي:

إذا أردنا تصدير كل كائنات المستخدم scott:

C:> EXP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
OWNER=scott

أما الاستيراد فيجب استخدام البارامترين FROMUSER,TOUSER كما يلي:

لاستيراد كل كائنات scott الى المستخدم salah:

   C:> IMP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
    FROMUSER=scott  TOUSER=salah

3-مستوى قاعدة البيانات(Full Database Mode):

و المكتوب باين من عنوانه!!! تستطيع أن تصدرتستورد كامل قاعدة البيانات باستخدام البارامتر FULL=YES.و يستثنى طبعاً من هذه الكائنات ما يخص حساب SYS،أي (SYS Schema)

مثال:لتصدير قاعدة البيانات :

C:> EXP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
         FULL=Y

بالنسبة لعملية الاستيراد، يجب أن تقوم بها على قاعدة بيانات جديدة تحتوي فقط على

system tablespace+undo tablespace.

C:> IMP USERID=system/manager FILE=arabteam.dmp LOG=oralog.log
         FULL=Y

يتبع إن شاء الله...

#6

الدرس الثالث:

4- مستوى الTablespace:

--ملاحظة: هذا المستوى يخص المستخدم الذي يملك سماحية الSYSDBA.

بصراحة......................هنا تكمن القوة في تعليمتي الاستيراد التصدير ، لأنه بإمكانك أن تنقل tablespace من قاعدة بيانات إلى أخرى !! هذه الميزة تسمى transportable tablespace.

تتم هذه العملية باستخدام البارامتر TRANSPORT_TABLESPACE=Y،و البارامتر TABLESPACES لتحديد اسم الtablespace.

لكن انتبه.. عندما تقوم بعملية التصدير للtablespace فإن ما يتم تخزينه في ملف ال(.dmp) فعلياً هو تعريف الكائنات الموجودة داخل الtablespace و ليس البيانات. لذلك يجب أن نأخذ نسخ من الdatafiles المنتمية للtablespace.

و أيضاً يجب أن يكون الtablespace في وضع read-only عند تنفيذ تعليمة التصدير.

ربما يجد البعض مشكلة في فهم هذا المستوى، لكن اتمنى أن تصبح الأمور واضحة بهذا المثال:

ليكن لدينا USER Tablespace و الذي يحوي كائنات scott ويتكون من ملف datafile واحد(باسم data01.dbf) موجود ضمن قاعدة بيانات db1.

و أريد أن أنقل ال USER Tablespace إلى قاعدة أخرى db2 على جهاز آخر و لحساب المستخدم salah .

يجب اتباع الخطوات التالية:

1) في db1 ، ضع الuser tablespace في وضع read-only :

ALTER TABLESPACE USER READ ONLY;

2) قم بتنفيذ التصدير:

C:>EXP USERID=’sys/sys as sysdba’  FILE=arabteam.dmp LOG=oralog.log
        TRANSPORT_TABLESPACE=Y TABLESPACES=USER

3) قم بأخذ نسخة من data01.dbf إلى الجهاز الآخر في المكان المناسب له بالإضافة إلى ملف arabteam.dmp الناتج (افترض انك وضعت الملفين في d:test )

4) قم بتنفيذ الاستيراد :

C:>IMP USERID=’sys/sys as sysdba’  FILE =d:testarabteam.dmp LOG=oralog.log
       TRANSPORT_TABLESPACE=Y TABLESPACES=USER  DATAFILES=’d:testdata01.dbf”  TTS_OWNERS=scott  FROMUSER=scott  TOUSER=salah

ملاحظة: توجد بعض القيود بالنسبة لمستوى الtablespace:

- يجب أن تكون قاعدتا البيانات من نفس الcharacter set.

- لا يمكن اجراء العملية بين بيئتي عمل مختلفتين.

- لا يمكن اجراء العملية على tablespace تحتوي على مرجعيات(references) مرتبطة بكائنات خارج الtablespace.

- و أخيراً لا يمكن نقل الtablespace الى قاعدة بيانات تحتوي على tablespace بنفس الاسم.

يتبع إن شاء الله...

أتمنى ألا يكون هناك أي غموض و أن تتحقق الفائدة للجميع (f)

#7

الأخ العزيز:

حدثت عندي مشكلة أثناء عمل نسخة إحتياطية على مستوى الTablespace

حيث ظهرت لى الرسالة الأتية

ORA-00439: الخاصية غير فعالة: Export transportable tablespaces

السؤال الأن كيف يمكن تفعيل خاصية transportable tablespaces

أرجو الإفدة لما لهذا الموضوع من أهمية عندي وشكرا

#8

أخي الغالي...

يبدو من رسالة الخطأ أنك لم تضع البارامتر TRANSPORT_TABLESPACE=Y

لأنه هو المسؤول عن تفعيل الخاصية.

والله أعلم..

#9

ياأخي العزيز :

لا يوجد parameter يسمى TRANSPORT_TABLESPACE

ماذا أفعل حتى أحل هذا المشكل

#10

هل يمكن التصدير والاستيراد من قاعدتين مختفلتي النسخة...

أقصد بذلك التصدير من oracle 8i إلى oracle 9i...

#11

صدمتني بالفعل :confused:

راجعت ما عندي من ملفات، و لم أجد ما يدل على الاصدار الذي بدأ بدعم ال

TRANSPORT_TABLESPACE. لكن الأكيد هو أنها تعمل في الاصدار 8i,9i

و اذا أحببت: www.innovative-consult.com/tech_solution/pdf/ White%20Paper%20-%20Transportable%20Tablespaces.pdf

أما الأخ programer، طبعاً تستطيع.... بالأصل هاتان التعليمتان هما المفضلتان

للDBAs (حسب قولهم ) عند الترقية الى اصدارات جديدة.

#12

الدرس الرابع و الأخير:

ربما لاحظنا تعدد البارامترات الموجودة في كل تعليمة، و قد يرغب البعض في استخدام طريقة أخرى لكتابة البارامترات، و ذلك بوضعها في ملف نصي ، و من ثم تنفيذ عملية الاستيرادالتصدير ، كما يلي:

  C:> EXP USERID=system/manager  PARFILE=’c:parexp.txt’

و ذلك بفرض أن الملف النصي يحتوي على :

 FILE=arabteam.dmp
LOG=oralog.log
FULL=Y

ربما يستغرب البعض من هذه الطريقة الكسولة ، لكنك ستدرك فائدتها عندما ترى البامترات الأخرى(الهامة جداً) التي لم نستخدم معظمها حتى الآن و التي ربما تحتاجها يوماً ما، و هي موجودة في الملف المرفق..

---توجد بالطبع بارامترات أخرى ، لكن شرحها يتطلب الدخول في تفاصيل أخرى طويلة.

هذا كل ما لدي...إن شاء الله تكون الفائدة قد تحققت.. و سامحوني على أي تقصير.

و الحمد للــــــه رب العالمين.... (f)

هذا الموضوع مغلق.

مواضيع مشابهة