صادر كردن اطلاعات با Export
Export را كه بعضاً به آن كپي پشتيبان منطقي نيز ميگويند، تعاريف DDL اشياي بانك اطلاعاتي و دادههاي بانك اطلاعاتي را در خود ذخيره ميكند. اين ابزار چهار سطح دارد:
Full Mode: تمامي Data Dictionary خوانده ميشود و تمامي ديتابيس export ميشود و تمامي DLLهايي كه براي ايجاد مجدد كل ديتابيس نياز است، در فايل Dump نوشته ميشود. اجزاي اين فايل از دستوراتي تشكيل شده است كه براي ساخت تمامي اجزا، كاربران، Tablespaceها، مجوزها و همه چيزهاي لازم در پايگاه داده جديد نياز است.
Tablespace Mode: تمامي ايندكسها و اجزاي مورد نياز كپي ميشود.
User Mode: اشياي متعلق به كاربر خاص و دادههاي آن انتقال مييابد.
Table Mode: جدول مشخص به همراه ايندكسها، ساختار آن انتقال مييابد.
براي export كردن ميتوانيد به خط دستوري Command Line برويد و عبارت exp را مستقيماً وارد كنيد. اما بهتر است براي يك Export كامل و بدون اشكال از فايل پارامتري استفاده شود. شكل 1 نمونهاي از اين فايل را نشان ميدهد (فايل scr_exp.exp را در درايو C به وجود آوريد).
|

|
|
شکل 1 |
جدول 1 پارامترهايي را مشخص كرده است كه ميتوانيد در دستور exp از آن استفاده كنيد. (پارامترهايي كه در كارايي بانك اطلاعاتي تأثير دارند، با رنگ متفاوت مشخص شدهاند).
|
پارامتر |
توضيح پارامتر |
|
USERID |
نام کاربر که مجوز Export دارد. USERID=traffic_admin@traffic |
|
BUFFER |
اندازه بافري که براي واکنش رکوردها از بانک اطلاعاتي تعيين ميگردد. اين مقدار حافظهاي است که براي Export نياز است. معمولاً بافرهاي بالا کارايي بالاتري دارند. |
|
FILE |
نام فايلي که Export ميسازد. |
|
GRANT |
اگر اين پارامتر را مساوي Y قرار دهيم، مجوزها در فايل Dump ذخيره ميشوند. |
|
INDEXES |
ايندکسها در فايل Export ذخيره ميشوند. |
|
ROWS |
اگر مقدار اين پارامتر را مساوي Y قرار دهيم، رکوردهاي جدول در فايل ثبت خواهد شد. |
|
CONSTRAINTS |
ميتوانيم Constraintsها را با Y ثبت و با N غيرفعال کنيم. |
|
COMPRESS |
اگر مقدار اين پارامتر را مساوي Y قرار دهيم، باعث بازنويسي مجدد پارامتر Storage جداول و Indexها ميگردد. استفاده از اين پارامتر باعث يکپارچگي دادهها و جداول خواهد شد. |
|
FULL |
با استفاده از اين پارامتر تمامي Schemaهاي بانک اطلاعاتي در فايل Export ذخير ميگردد. |
|
OWNER |
با انتخاب اين گزينه ميتوانيم کاربران اشياي بانک اطلاعاتي را انتخاب کنيم که ميخواهيم اطلاعاتشان را منتقل کنيم. |
|
RECORD LENGTH |
موقع انتقال اطلاعات از يک سيستم از يک سيستمعامل به سيستمعامل ديگر بايد از اين پارامتر براي مشخص نمودن اندازه طول رکورد فايل (براساس بايت) استفاده کنيم. |
|
INCTYPE |
اگر بخواهيم از Full Mode استفاده کنيم، ميتوانيم از اين پارامتر استفاده کنيم و مشخص کنيم که تمامي اطلاعات را ميخواهيم Backup بگيريم؛ يعني INCTYPE=COMPLETE. اگر بخواهيم تنها جداول تغيير يافته Backup شوند، از انتخابهاي Comulative و Incremental استفاده کنيم. |
|
RECORD |
با استفاده از اين پارامتر ميتوانيم مشخص کنيم که ثبت اطلاعات incremental در جداول SYS.INCEXP و SYS'INCID صورت گيرد يا خير. |
|
PARFILE |
نام فايل پارامتري. |
|
LOG |
نام فايلي که اطلاعات مربوط به LOG در آن ذخيره ميشود. |
|
CONSISTENT |
اين پارامتر مشخص ميکند که آيا جدولي که Export شده است، نياز به اعمال Read_consistent دارد يا خير. |
|
STATISTICS |
با مقادير Estimate و Compute اطلاعات آماري مربوط به جداول و ايندکسها در زمان Import. |
|
DIRECT |
براي لود مستقيم اطلاعات به کار ميرود که سرعت بيشتري دارد. |
|
FEEDBACK |
اگر مثلاً مقدار اين پارامتر را دويست تعيين کنيد، آنگاه به ازاي هر دويست رديفي که Export ميشود، يک نقطه در نمايشگر نمايش داده ميشود. |
|
FILESIZE |
حداکثر اندازه فايل Export با بايت |
|
TABLE SPACE |
فهرست تمامي Tablespaceهايي که بايد Export شود. |
|
VOLSIZE |
حداکثر اندازه در هر Volume بر حسب بايت |
|
جدول 1- پارامترهاي قابل استفاده براي Export |
مثلاً تصور كنيد ميخواهيم تمامي اشياي مربوط به كاربر HOTELMANAGER را از بانك اطلاعاتي HOTEL جمعآوري كنيم يا به اصطلاح Backup بگيريم. ابتدا به RUN ميرويم و CMD را انتخاب ميكنيم تا به محيط Command Lineبرويم.
حال همانطور كه در شكل 2 نشان داده شده است، در خط دستوري دستور exp را وارد ميكنيم. سپس سيستم از ما ميخواهد نام كاربر و رمز ورودي را وارد كنيم. سپس نام فايل Dump را سؤال ميكند. پس از آن همانطور كه مشاهده ميكنيد، سيستم سؤال ميكند كه ميخواهيد از كدام Export استفاده كنيد.
|

|
|
شکل 2 |
مثلاً ميگوييم ميخواهيم User را كپي كنيم. سپس نام كاربر را وارد ميكنيم. اگر بخواهيم تنها يك كاربر را منتقل كنيم، نام كاربر را وارد ميكنيم و اگر سيستم دوباره سؤال كرد كه كاربر بعدي را وارد كنيد، كافي است يك دات (نقطه) وارد كنيد. سپس سيستم فايل Dump را براي شما ميسازد.
وارد كردن اطلاعات با Import
در حقيقت دستور Import فايل Export Dump را ميخواند و دستورات آن را اجرا ميكند و اشيا و كاربراني كه در فايل Export وجود دارند را به بانك اطلاعاتي جديد معرفي ميكند. جدول 2 برخي از مهمترين پارامترهايي كه در دستور Import مورد استفاده قرار ميگيرد را نشان ميدهد.
|
پارامتر |
توضيح پارامتر |
|
Userid |
نام کاربر داراي مجوز USERID=traffic_admin;traffic Import |
|
Buffer |
اندازه بافري که در استخراج اطلاعات يک Row استفاده ميشود. |
|
File |
نام فايلي که بايد Import شود. |
|
Show |
اگر مقدار اين پارامتر را Y قرار دهيم، محتواي فايل نشان داده ميشود. |
|
Ignore |
ناديده گرفتن خطاهايي که موقع Create ايجاد ميشود. |
|
Grant |
اگر مقدار اين پارامتر را Y قرار دهيم، Grantهاي اشياي پايگاهداده هم وارد بانک جديد ميشوند. |
|
Indexes |
ايندکسهاي جداول |
|
Rows |
با انتخاب Row،Yهاي بانک اطلاعاتي به بانک جديد اضافه ميشوند و در غير اين صورت، فقط فايلهاي DLL اشياي پايگاهداده اجرا ميشود. |
|
Log |
اسم فايلي که لوگ Import در آن ذخيره ميشود. |
|
Full |
با قرار دادن اين پارامتر مساوي Y تمامي اطلاعات فايل انتقال مييابد. |
|
Fromuser |
اسامي کاربراني که بايد از فايل خوانده شود. |
|
Touser |
اسامي کاربراني که اطلاعات بايد به آنها داده شود. |
|
Tables |
فهرست جداولي که بايد Import شوند. |
|
Commit |
وقتي اين پارامتر Y باشد، بعد از هر تغيير در بانک اطلاعاتي به صورت خودکار تغييرات ذخيره ميشود. |
|
Parfile |
نام فايل پارامتري که در Import مورد استفاده قرار ميگيرد. |
|
Constraints |
وقتي اين مقدار مساوي Y قرار ميگيرد، Constraintsهاي جداول هم به بانک جديد منتقل ميشوند. |
|
Indexfile |
اين گزينه دستوراتي مانند Create Cluster، Create Table و... را به جاي آن که اجرا کند، در فايلي قرار ميدهد و آن را اجرا نميکند. |
|
Feedback |
اعداد رکوردهايي که در مرحله Import نمايش داده ميشود. اگر مقدار اين پارامتر را صفر قرار دهيم، هيچ Feedback تا وقتي که تمام Import انجام نشود، نمايش داده نخواهد شد. |
|
Filesize |
حداکثر اندازه فايل Dump |
|
Resumable |
مشخص ميکند که آيا Session بعد از وجود خطا به کار خود ادامه دهد يا خير. |
|
Compile |
کامپايل Procedureها، Functionها و... بعد از Import |
|
Volsize |
حداکثر اندازه بايت در يک فايل |
|
Datafiles |
فهرست DataFileهايي که بايد به Database انتقال يابد. |
|
جدول 2- پارامترهاي قابل استفاده براي Import |
براي اينكه بتوانيم اطلاعات موجود در فايل Export را به بانك اطلاعاتي جديد وارد كنيم، بايد از دستور Importاستفاده كنيم. تصور كنيد كه در دستگاه ديگري اوراكل نصب كردهايد و ميخواهيد فايل خود را Import كنيد. كافي است ابتدا به RUN برويم و CMD را انتخاب ميكنيم تا به محيط Command Line برويم.
سپس دستور IMP را وارد ميكنيم. سپس سيستم از شما ميخواهد اسم فايلي را وارد كنيد كه Export آن را توليد كرده است. سپس سؤالاتي در مورد پارامترهايي كه در جدول 2 در مورد آن صحبت شد، به عمل خواهد آمد و در ادامه سيستم نام كاربري را ميخواهد كه ميخواهيد آن را Import كنيد.
پس از وارد كردن نام كاربر، اگر نخواهيد كاربر ديگري را اضافه كنيد، كافي است يك دات (نقطه) وارد كنيد. سپس سيستم اشياي كاربر مورد نظر را به بانك اطلاعاتي جديد منتقل مينمايد. (شكل 3)
|

|
|
شکل 3 |
استفاده از Data Pump در Export و Import
پمپ اطلاعات در نسخه 10g به عنوان امكان انتقال اطلاعات معرفي گرديد. Data Pump ابزار Import و Export تحت سرور را مهيا ميكند. اين ابزار هم از نظر كارايي و معماري از ابزار معمولي Import و Export اطلاعات عملكرد بهتري دارد. در اين ابزار امكان شروع و خاتمه Jobها، ديدن عملكرد Jobها و محدود كردن اطلاعات وجود دارد.
نكته مهم اين است كه Data Pump ميتواند از فايلهاي توليد شده از مدل معمولي Export استفاده كند. اما ابزار Import معمولي نميتواند از فايلهاي توليد شده از Data Pump Export استفاده كند. Data Pump رويهاي است كه در سرور اتفاق ميافتد. در نتيجه پروسه كلاينتي كه يك Job را شروع كرده است ميتواند موقتاً اتصال را معلق نمايد و بعد از اتصال مجدد كار خود را انجام دهد.
از آن جايي كه در اين روش اطلاعات لازم نيست توسط برنامه كلاينت پروسس شود و استخراج و Load اطلاعات به صورت همزمان انجام ميپذيرد كارايي در اين روش بسيار بالا تر از مدل معمولي Export و Import است كه قبلاً در مورد آن توضيح داده شد.
براي استفاده از Data Pump بايد يك دايركتوري براي فايلهاي اطلاعات و Logها توليد گردد. براي اين كار همانطور كه در كدهاي زير مشاهده ميكنيد، بايد با استفاده از دستور Create Directory دايركتوري مربوطه را ايجاد كنيم و به كاربراني كه ميخواهند به فايلهاي Data Pump دسترسي داشته باشند، مجوزهاي مناسب را براي نوشتن و خواندن اطلاعات را بدهيم. مثال زير دايركتوري DumpDir را با Grantهاي خواندن و نوشتن براي اسكيماي Systemنشان ميدهد.
|
;'create directory dumpdir as 'c:\dumpdir ;grant read on directory dumpdir to system grant write on directory dumpdir to system |
پنج مدل براي Data Pump Export وجود دارد:
Full Export: براي استخراج تمام اطلاعات پايگاه داده و Metadata
Schema Export: براي استخراج اطلاعات و Metadata از اسكيماي خاص
Tablespace Export: براي استخراج اطلاعات و Metadata از Tablespaceها
Table Export: براي استخراج اطلاعات و Metadata از جدولها و پارتيشن آنها
Transportable Export: براي استخراج اطلاعات و Metadata از Tablespaceهاي خاص
نكته مهمي كه بايد در Data Pump Export به آن توجه شود اين است كه privilege يا اختيار EXP_FULL_DATABASE را بايد به كاربري كه ميخواهد Transportable Export را انجام دهد اضافه نمود.
در حقيقت وقتي كه كاربر يك Job را ارسال ميكند، اوراكل يك نام كه خود آن را ساخته است، براي آن Job ميسازد (البته ميتوان نام Job را با پارامتر Job_name نيز تعيين كرد، ولي بايد مراقب Conflict شدن نامها باشيم). وقتي Data Pump در حال كار است، اوراكل يك جدول براي آن Job ميسازد كه هم نام Job است.
براي شروع كار Data Dump Export ميتوانيم از فايل پارامتري استفاده كنيم. مثلاً نام اين فايل را pumpexp.par ميگذاريم و دستورات زير را در آن تايپ ميكنيم:
|
DIRECTORY=c:\dumpdir DIRECTORY=c:/metadata.dmp CONTENT=METADATA_ONLY |
سپس دستور زير را براي اجراي Data Pump Export اجرا ميكنيم:
|
Expdp system/system parfile=c:/pumpexp.par |
بعد از اجراي اين دستور اگر با اشكالي مواجه نشويد، يك فايل به نام metadata.dmp توليد خواهد شد كه حاوي اطلاعات XML از ساختار اسكيما است.
براي Import كردن اطلاعات ميتوانيم مستقيماً از دستور impdp يا از طريق فايل پارامتري استفاده كنيم و آبجكتهاي اسكيماي توليد شده در فايل metadata.dmp را به هر پايگاهي كه مايليم Import كنيم. البته در Export و Import نكاتي از قبيل چگونگي Stop كردن و دوباره شروع كردن Jobها نيز وجود دارد كه ميتوانيد اطلاعات خوبي را در اين زمينه از نشاني زير دريافت نماييد:
http://download.oracle.com/docs/cd/B12037_01/server.101/b10825/dp_overview.htm