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

كيفية العمل بأنواع ال Backup المختلفة

مغلق
بدأه mamod_r في 27 يوليو 2004 · 12 رد · 5,217 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أولا أريد أن أقول أنني سعيد جدا بوجود مثل هذه المجموعة وأتمنى أن أستفيد وأفيد

أعتقد أنه من أهم الوظائف التي يجب أن يجيدها مدير قواعد البيانات هي عمليتي ال backup & restore لذلك في الأيام القادمة بإذن الله سوف أحاول أن أقوم بشرح لبعض أنواعها المختلفة على أوراكل 9 بشكل مبسط

أن كان هذه الموضوع شيق بالنسبة للبعض أرجوا أن لا تبخلوا علينا بخبراتكم أو مشاركاتهم

#2

أن هذه الموضوع طويل بعض الشيء ولكن سوف أحاول أن أبدأ من البداية

لكن يفترض أن يفيد هذا الموضوع لمن لهم معرفة متوسطة بالأوراكل وليس المبتدئين

بسم الله

أولا لنحاول ان نتعرف على الإختلاف بين أن تكون قاعدة البيانات في أحد الوضعين

archivelog mode أو noarchivelog mode

أي أن قاعدة البيانات قابلة للأرشفة archivelog mode أو غير قابلة للأرشفة noarchivelog mode

الإختلاف بين النوعين

في الحالة الأولى archivelog mode

أي أن ملفات الـ redo log files سيتم حفظها في ملفات archive log files

(ملفات الـ redo log files هي التي تقوم بتخزين جميع العمليات التي تتم على قاعدة البيانات لكن عادة لفترة زمنية قصيرة ويتم مسحها وإعادة الكتابة عليها لذلك أذا أردنا حفظها لمدة زمنية طويلة لابد من أرشفتها أي نقا محتوياتها في مافات archive log files )

عندما تكون قاعدة البانات في هذه الحالة archive log mode يمكننا عمل الآتي

* إجراء عملية حفظ نسخة إحتياطية ساخنة من قاعدة البيانات أو Hot backup وهو يعني أنه يمكن إجراء هذا النوع من الـ backup وقاعدة البانات مفتوحة وعاملة (لا نحتاج لإغلاق القاعدة)

* يمكن عمل إسترجاع كامل لقاعدة البيانات حتى اللحظة التي حدث بها العطل وذلك لأن ملفات الـ archive log files تحفظ كل العمليات التي تمت على قاعدة البيانات

* لابد من زيادة حجم القرص الصلب حتى يستطيع حفظ جميع ملفات الرشيف archive log files

في الحالة الثانية وهي noarchive log mode

يتم إعادة الكتابة على ملفات الredo log files أي لا وجود لملفات الأرشيف وهذا يعني أن :

* في معظم الأوقات لا يمكن عمل إسترجاع لكامل محتويات قاعدة البيانات ( أي أن بعض البيانات ستفقد)

* لابد قبل إجراء عملية الـbackup لهذا النوع من قواعد البيانات أن تكون قاعدة البيانات مغلقة تمانا shutdown

* لا تحتاج لمساحات كبيرة في القرص الصلب لعدم وجود ملفات الأرشيف

في الدرس القادم سوف أحاول أن أشرح كيف نحول قاعدة البيانات لوضع archive log mode

#3

* تحويل قاعدة البيانات لوضع archive log mode والعكس

* جعل الأرشفة أوتوماتيكية أو يدوية

يمكن جعل قاعدة البيانات في وضع archive log mode عند إنشاء قاعدة جديدة أو يمكن أيضا تحويل قاعدة بيانات موجودة إلى هذا الوضع

( لابد من توضيح أنه يوجد نوعين من عملية الأرشفة يدوية manual أو أوتوماتيكية automatic وعادة ما تستخدم الطريقة الأوتوماتيكية)

يتم تحديد المكان الذي ستحفظ فيه ملفات الأرشيف بالمعامل ARCHIVE_LOG_DEST في ملف init.ora

نستخدم الأمر التالي لكن لابد أن يكون الدخول للقاعدة في وضع as sysdba

نستخدم الأمر

alter database archivelog

وتظل القاعدة في وضع archive log حتى نصدر الأمر

alter database noarchivelog

ملاحظة : افتراضيا تكون عملية الأرشفة للقاعدة بالطريقة اليدوية manualوهذايعني أنه إذا إمتلأت ملفات الـredolog files سوف تتعطل القاعدة حتى يتم تفريغ محتوياتها في ملفات الأرشيف وذلك بإستخدام الأمر archive log all

ملاحظة : لمعرة إذا كانت قاعدة البيانات تعمل في وضع archivelog أو noarchivelog mode نستخدم الإستبيان

select name,log_mode from v$database;

لجعل عملية الأرشفة أوتوماتيكية

1- نعدل في الملف init.ora قيمة المعامل LOG_ARCHIVE_START=TRUE إذه كانت قيمته مختلفة أو إذا لم يكن موجودا

2- قم بإغلاق قاعدة البيانات بالأمر shoutdown immediate

3- قم بإعادة تشغيل قاعدة البيانات بإستخدام الأمر startup mount

4- اكتب الأمر alter database archivelog;

5- شغل قاعدة البيانات بإستخدام الأمر alter database open

لتتأكد من أن قاعدة البيانات تقوم فعلا بالأرشفة نستخدم أحد الطريقتين التاليتين

1- استخدام الأمر archivelog list لإظهار حالة الأرشفة

2- نستخدم الأمر alter database switch log file وننفذ هذا الأمر عدد n+1 مرة حيث n هي عدد ملفات الـ redo log files

لاحظ أنه إذا لم تجعل المعامل LOG_ARCHIVE_START=TRUE فإن قاعدة البيانات سوف تتعطل أو تتوقف في آخر مرة أي المرة n+1

إن عملية الأرشفة الأوتوماتيكية سوف تقوم بتفريغ محتويات الـ redo log files في الـ archive log files أوتوماتيكيا دون الحاجة للقيام بالخطوتين السابقتين إنما هما للتأكد من أن عمية الأرشفة فعالة

عملية الأرشفة اليدوية manual

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

1- shutdown immediate

2- startup mount

3- alter database archive log

4- alter database open

ثم نستخدم الأمر archive log all;

عندها سوف يتم تفريغ محتويات الـ redo log files في الـ archive log files

لابد ان تكون قيمة المعامل LOG_ARCHIVE_START في ملف الـ init.ora تساوي FALSE

الرجاء بلغوني إذا كان هذا الموضوع شيق لبعضكم كي أستمر فيه

#4

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

اخى الحبيب .. السلام عليكم ورحمة الله

بارك الله فيك و نفعنا و اياك بما تقول و نحن فى شوق للمزيد و المزيد ان شاء الله

#5

الأخ mamod_r

شكرا على هذه المساعدة وانا اتابع الموضوع باهتمام كبير

أرجو منك المتابعة وفقك الله

لدي سؤال :

هل يجب ان اغق قاعدة البيانات قبل تحويلها الى وضعية Archivelog mode

أو بالعكس

وما من كاتب إلا سيبلى ويبقي الدهر ما كتبت يداه

فلا تكتب بكفك غير شيء يسرك في القيامة أن تراه

#6

السلام عليكم ورحمة الله

الأخ mamod_r لقد جربت تحويل قاعدة البيانات الى الوضع Archive log

ولكن نريد منك ان تبين كيف استطيع استعادة بيانات معينة يعني في تاريخ معين وساعة معينة ربما يكون هذا الموضوع يحتاج الى شرح كثير

جزاك الله

وانا اعتقد ان هذا الموضوع من اهم ما يقوم به مدير النظام

database administrator

ونرجو ان ننهي هذا الموضوع

لكي تكون لنا وقفة مع performance & Tunning

ثم Replication

وما من كاتب إلا سيبلى ويبقي الدهر ما كتبت يداه

فلا تكتب بكفك غير شيء يسرك في القيامة أن تراه

#7

أريد أن أقول أن سعادتي لا توصف عندما علمت أن البعض متابع لما أكتب

وشكرا جزيلا لكم على ردودكم

بالنسبة لسؤال الأخ toad فيفترض أن تكون مغلق لقاعدة البيانات في الوقت الذي تعدل فيه في الملف init.ora

لابد بعدها أن تتصل بقاعدة البيانات بالوضع

connect / as sysdba

ثم تشغل قاعدة البيانات في وضع mount

startup mount

ثم تستعمل الأمر

alter database archivelog

ثم تشغل قاعدة البيانات

alter database open

#8

اليوم فلنحاول أن نقوم بعمل backup و restore كامل لقاعدة بيانات في الوضع noarchivelog mode

انتبه لأنه لابد من عمل cold backup فقط لهذا النوع أي لابد أن تكون قاعدة البيانات مغلقة

1- أغلق قاعدة البيانات بأحد الأوامر التالية إدا كانت مفتوحة

shutdown normal;

أو

shutdown immediate;

أو

shutdown transactional;

ولكن لا تستخدم أبدا

shutdown abort;

2- قم بنسخ جميع الملفات الخاصة بقاعدة البيانات

وهي ملفات البيانات data files

ملفات المعاملات parameter files

ملفات التحكم control files

يفضل نسخها في قرص منفصل أو وحدة تخزين خارجية

3- قم بإعادة تشغيل قاعدة البيانات مر أخرى

وهذا كل ما في الأمر لعمل backup لقاعدة بيانات في الوضع no archive log mode

عمل backup في وضع archive log mode

في هذا النوع يمكن عمل cold backup كالسابق أي عمل النسخة الإحتياطية وقاعدة البيانات مغلقة كالسابق

أو عمل hot backup أي عمل النسخة الإحتياطية وقاعدة البيانات مفتوحة

هنا لابد من فهم أن كل البايانات المحفوظة في قاعدة البيانات موجودة في ما يسمى tablespace، وفي كل قاعدة بيانات يوجد العدبد من الـtable spaces فيمكن أن يكون لكل مجموعة من المستخدمية table space خاص بهم. في هذا التوع أو الـ hot backup كما ذكرنا تكون قاعدة البانات مفتوحة ومتوفرة لجميع المستخدمين ولكننا بإغلاق الـ table space المعين (أي في هذه اللحظة قاعدة البيانات متحة لكل المستخدمين ما عدا الذين تحفظ بياتانهم في الـ table space المغلق هؤلاء سوف يكونوا في وضع الإنتظار ختى يتم تشغيل الـ table space الخاص بهم، ومؤقتا يتم حفظ إستعلاماتهم وطلباتهم في الـ redo log buffers)

1- لابد أن تكون متصلا بقاعدة البيانات وأ،ت في الوضع dba

connect / as sysdba

2- لمعرفة الـ table spaces المكونة لقاعدة بياناتك وأماكنها قم بتنفيذ الإستعلام التالي

select a.TS#,a.NAME,b.NAME from 
v$tablespace a, v$datafile b
where a.TS#=b.TS#;

نقوم بإستخدام الإستعلام السابق لمعرفة الأtable spaces المكونة لقاعدة البيانات ولمعرفة عدد وأمانك الـdata files المكونة للـ table space لأنه يمكن أن يكون للـ table space أكثر من data files واحد ولذلك عندما نريد أن نعمل backup للـ table space لابد من نسخ جميع الـ data files المكونة له

3- نقوم بوضع أحد الـ table spaces في حالة الـ backup وذلك بإستخدام الأمر

alter tablespace users begin backup

لاحظ أننا هنا إستخدمنا الـ table space المسمى users

4- قم بعمل نسخ ولصق للـ data files الخاصة بـ users

5- قم بإرجاع الـ table space للوضع الطبيعي بإستخدام الأمر

alter tablespace users end backup

6- قم بتكرار الخطوات من 3 الى 5 في بقية الـ table spacesحتى تنتهي منها جميعا

ملحوظة هامة:

للتأكد من أن كل الـ table spaces تم إرجاعها لوضع التشغيل قم بكتابة الإستعلام التالي

select * from v$backup;

إذا وجدت أمام إسم أي table space كلمة ACTIVE فهذا معناه أنه لايزال في وضع الـ backup لذلك لايد من إرجاعه لوضع التشغيل كما هو موضح في الفقرة الخامسة

في الدرس القادم إن شاء الله سوف أوضح كيفية عمل الـ backup للـcontrol files لقاعدة البيانات في هذا الوضع الذي هو archive log mode

#9

السلام عليكم ورحمة الله

الأخ mamod_r اشكرك على الاجابة على سؤالي

وأرجو ان تستمر في الدروس

وما من كاتب إلا سيبلى ويبقي الدهر ما كتبت يداه

فلا تكتب بكفك غير شيء يسرك في القيامة أن تراه

#10

للرفع

#11

مشكور اخى على هذه المعلومات الجميلة والمفيدة

#12

جزاك الله خير أخي على هذا الموضوع المهم والجميل

وجعله الله في ميزان حسناتك

وأرجو الاستمرار

#13

اخي / تقريبا مشكلتي قريبة من الباك اب حيث اني اعمل على برنامج شؤون الموظفين ويقوم السيرفر في مقر عملي بعمل نسخة في الباك اب كل يوم بملفات امتدادها emp1.dmp

المشكلة هي عندما اخذ نسخة من الملف emp1.dmp ووضعة في جهازي الشخصي في المنزل بدلامن النسخة القديمة لتحديثها لابد ان اقوم بحذف اليوزر ثم اقوم بانشاء يوزر جديد ثم تشغيل ملف ال emp1.dmp عن طريق محرر ا لاوامر (command) بالامر imp ثم يتم تنزيل الجداول من جديد

هل من الممكن ان تدلني على امر معين يقوم بتحديث ملف ال emp1.dmp بدون حذف اليوزر ثم انشاءة مرة اخرى وتنزيل الجداول مرة اخرى

علما ان نسخة الاوراكل هي 8I

والديفلوبر هو 6

مع تحيات اخوك عاددل

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

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