-
1. معنى التعافي
عندما نستخدم قاعدة بيانات، نأمل دائمًا أن تكون محتويات قاعدة البيانات موثوقة وصحيحة، ومع ذلك، فإن أعطال نظام الكمبيوتر (فشل الأجهزة، فشل الشبكة، فشل العمليات، وفشل النظام) تؤثر على تشغيل نظام قاعدة البيانات ودقة المعلومات. البيانات الموجودة في قاعدة البيانات جنسيًا، أو حتى تدمير قاعدة البيانات، مما يتسبب في فقدان كل أو جزء من البيانات الموجودة في قاعدة البيانات. لذلك، عند حدوث الفشل أعلاه، من المأمول أن يتم إعادة إنشاء قاعدة بيانات كاملة. وتسمى هذه العملية استرداد قاعدة البيانات. يعد نظام الاسترداد الفرعي جزءًا مهمًا من نظام إدارة قاعدة البيانات. تختلف معالجة الاسترداد وفقًا للبنية المتأثرة بنوع الفشل الذي حدث.
2. طريقة الاسترداد
طريقة الاستيراد:
استخدم IMPORT لاستيراد ملف البيانات الأخير الذي تم تصديره إلى قاعدة البيانات الجديدة. يمكن لهذه الطريقة استعادة أي كائن قاعدة بيانات إلى الحالة التي تم تصديره فيها، وستكون التغييرات اللاحقة غير قابلة للتراجع. يمكن تنفيذ أمر IMPORT بشكل تفاعلي لمعرفة المعنى المحدد لكل معلمة، راجع الشرح التفصيلي لمعلمات ORACLE EXP/IMP. هذه الطريقة مناسبة للبيئات التي لا تستخدم وضع الأرشيف.
طرق الاسترداد الآمنة:
إذا كانت قاعدة البيانات تعمل في وضع الأرشيف، فبمجرد تلف قاعدة البيانات، يمكن استعادة قاعدة البيانات إلى حالة نقطة التوقف من خلال النسخ الاحتياطي البارد (النسخ الاحتياطي السريع) والنسخ الاحتياطي للأرشفة.
استرداد ملف التحكم في قاعدة البيانات (بافتراض تدمير كافة ملفات التحكم):
تعتمد قاعدة البيانات على نظام الملفات: ما عليك سوى استخدام tar وcp والأوامر الأخرى لنظام التشغيل.
تعتمد قاعدة البيانات على الأجهزة الأولية: dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 Seek=12
استعادة ملف بيانات قاعدة البيانات
استعادة مساحات جدول البيانات والفهرس ومساحات جدول النظام:
انسخ ملفات قاعدة البيانات ذات الصلة وجميع ملفات السجل المنطقية التي تم إنشاؤها منذ أن تم نسخ ملف البيانات احتياطيًا، ثم قم بتنفيذ الأمر التالي:
svrmgrl > جبل بدء التشغيل
svrmgrl > تغيير قاعدة البيانات واستردادها تلقائيًا
في حالة تلف ملف التحكم، قم بما يلي: svrmgrl > تغيير استعادة قاعدة البيانات باستخدام ملف التحكم الاحتياطي؛ أدخل اسم ملف السجل وأعد تسجيل الاسم كما هو مطلوب.
svrmgrl > تغيير عمليات إعادة تعيين قاعدة البيانات المفتوحة؛
استعادة الملفات المؤقتة لقاعدة البيانات ومساحات جدول التراجع: ما عليك سوى التوقف عن الاتصال بالإنترنت وإعادة البناء.
ملاحظة: إذا لم تكن قاعدة البيانات قيد التشغيل في وضع الأرشفة، فيمكن فقط استعادة حالة النسخة الاحتياطية الأخيرة. للحصول على معلومات حول إعدادات وضع الأرشيف والتقنيات المتعلقة بالنسخ الاحتياطي، راجع تقنية النسخ الاحتياطي لقاعدة بيانات ORACLE.
3. حل استعادة مساحة الجدول ORACLE
(1) ظاهرة خطأ مساحة الطاولة المنزلية:
يحدث خطأ ORA-01157 أو ORA-01110 أو مستوى نظام التشغيل عند بدء تشغيل قاعدة البيانات
أخطاء مثل ORA-07360، عند إيقاف تشغيل قاعدة البيانات (باستخدام إيقاف التشغيل العادي أو إيقاف التشغيل الفوري) ستؤدي إلى أخطاء ORA-01116 وORA-01110 وخطأ على مستوى نظام التشغيل ORA-07368
يحل:
هناك حلان أدناه:
الحل 1: يمكن إعادة بناء مساحة جدول المستخدم بسهولة، أي أن الكائنات التي تم تصديرها مؤخرًا متاحة أو يمكن إعادة بناء الكائنات الموجودة في مساحة الجدول بسهولة، وما إلى ذلك. في هذه الحالة، أسهل طريقة هي عدم الاتصال بالإنترنت وحذف ملفات البيانات وإسقاط مساحة الجدول وإعادة بناء مساحة الجدول وجميع الكائنات.
svrmgrl> جبل بدء التشغيل
svrmgrl> تغيير اسم ملف قاعدة البيانات في وضع عدم الاتصال؛
svrmgrl> تغيير قاعدة البيانات المفتوحة؛
svrmgrl> قم بإسقاط مساحة الجدول tablespace_name بما في ذلك المحتويات؛
إعادة بناء مساحة الجدول وكافة الكائنات.
الحل 2: لا يمكن إعادة بناء مساحة جدول المستخدم بسهولة. في معظم الحالات، تكون إعادة بناء مساحة الجدول مستحيلة وعملاً شاقًا للغاية، وتتمثل الطريقة في عكس عملية النسخ الاحتياطي وإجراء استرداد الوسائط، إذا كان نظامك يعمل في وضع NOARCHIVELOG، فعندئذ فقط يمكن استرداد البيانات المفقودة في سجل الإعادة عبر الإنترنت.
الخطوات هي كما يلي:
1) استعادة ملف البيانات المفقود من نسخة احتياطية
2)svrmgrl> جبل بدء التشغيل
3)svrmgrl> حدد v1.group#, member,sequence#,first_change# من v$log v1,v$logfile v2 حيث v1.group#=v2.group#;
4) إذا كانت قاعدة البيانات تعمل في وضع NOARCHIVELOG: svrmgrl> حدد file#,change# from v$recover_file;
إذا كان CHANGE# أكبر من الحد الأدنى FIRST_CHANGE# فيمكن استعادة ملف البيانات.
إذا كان CHANGE# أقل من الحد الأدنى FIRST_CHANGE#، فإن ملف البيانات غير قابل للاسترداد. قم باستعادة أحدث نسخة احتياطية كاملة أو استخدم الخيار الأول.
5)svrmgrl> استعادة اسم ملف البيانات؛
6) التأكد من نجاح عملية الاسترداد
7)svrmgrl> تغيير عمليات إعادة تعيين قاعدة البيانات المفتوحة؛
ليست هناك حاجة لإجراء استرداد الوسائط لمساحات الجدول المخصصة للقراءة فقط، فقط قم باستعادة النسخة الاحتياطية. الاستثناءات الوحيدة هي:
تم تغيير مساحة الجدول إلى وضع القراءة والكتابة بعد النسخ الاحتياطي الأخير. تم تغيير مساحة الجدول إلى وضع القراءة فقط بعد النسخ الاحتياطي الأخير. في هذه الحالة، يلزم استرداد الوسائط.
(2) مساحة الجدول المؤقتة لا تحتوي مساحة الجدول المؤقتة على بيانات حقيقية. طريقة الاسترداد هي حذف مساحة الجدول المؤقتة وإعادة بنائها.
(3) إذا كانت النسخة الاحتياطية لمساحة جدول النظام غير متوفرة، فيمكن أن تكون الطريقة الوحيدة هي إعادة بناء قاعدة البيانات.
(4) هناك حالتان لاستعادة مساحة الجدول:
1. تم إغلاق قاعدة البيانات بالكامل (استخدم أمر إيقاف التشغيل الفوري أو إيقاف التشغيل)
1) تأكد من إغلاق قاعدة البيانات بالكامل
2) قم بتعديل ملف init.ora وقم بالتعليق على "مقطع التراجع"
3) svrmgrl> جبل تقييد بدء التشغيل
4) svrmgrl> تغيير اسم ملف قاعدة البيانات في وضع عدم الاتصال؛
5) svrmgrl> تغيير قاعدة البيانات المفتوحة؛
بناءً على النتائج التي تظهر: "تمت معالجة البيان" انتقل إلى (7)؛ "ORA-00604,ORA-00376,ORA-01110" انتقل إلى (6)
6) svrmgrl> إيقاف التشغيل الفوري
قم بتعديل ملف init.ora وأضف السطر التالي: _corrupted_rollback_segments = (<roll1>,...<rolln>)
svrmgrl> تقييد بدء التشغيل
7) svrmgrl> قم بإسقاط مساحة الجدول tablespace_name بما في ذلك المحتويات؛
8) إعادة بناء مساحة الجدول وقطاع التراجع
9) svrmgrl> تغيير النظام وتعطيل الجلسة المقيدة؛
10) تعديل ملف init.ora
2. قاعدة البيانات ليست مغلقة بالكامل (تتعطل قاعدة البيانات أو يتم استخدام أمر Shutdown Abort لإغلاق قاعدة البيانات)
1) استعادة النسخة الاحتياطية
2) svrmgrl> جبل بدء التشغيل
3) svrmgrl> حدد الملف #، الاسم، الحالة من ملف بيانات $ v؛
svrmgrl> تغيير اسم ملف بيانات قاعدة البيانات عبر الإنترنت؛
4) svrmgrl> حدد v1.group#, member,sequence#,first_change# من v$log v1,v$logfile v2 حيث v1.group#=v2.group#;
5) svrmgrl> حدد file#,change# من v$recover_file; #انظر الحل 2-4
6) svrmgrl> استعادة اسم ملف البيانات؛
7) svrmgrl> تغيير قاعدة البيانات المفتوحة؛
3. قاعدة البيانات مفتوحة
1) احذف مقطع التراجع ومساحة الجدول
2) إعادة بناء مساحة الجدول ومقطع التراجع (5)، التحكم في استرداد الملفات
1. يتم إتلاف كافة ملفات التحكم. انسخ ملفات التحكم الاحتياطية إلى الدليل الأصلي بالنسبة لجهاز RAW (جهاز مجرد)، ثم: dd if='con.bak' of='/dev/rdrd/drd1' See=128.
2. لم يتم إتلاف كافة ملفات التحكم. استخدم ملفات تحكم أخرى لبدء تشغيل قاعدة البيانات (6)، واحفظ كتل البيانات والبيانات الموجودة بها. الظاهرة: يحدث خطأ ORA-01578 عند تنفيذ عملية ORACLE تعتبر كتل البيانات قد تكون تالفة وقد يحدث ذلك للأسباب التالية:
تلف أجهزة الإدخال/الإخراج أو البرامج الثابتة فشل الإدخال/الإخراج أو ذاكرة التخزين المؤقت لنظام التشغيل خطأ في تبديل الذاكرة أو الصفحة تمت الكتابة فوق جزء من ملف البيانات محاولة الوصول إلى قرص كتلة غير منسق إصلاح أسباب أخرى خطوات الحل:
تحقق من ملفات السجل والتتبع لمعرفة ما إذا كانت هناك أية أخطاء أخرى أو أخطاء في تحديد المواقع:
sql>select * from v$datafile حيث file#=<F>;
sql>حدد المالك واسم_القطاع ونوع_القطاع من dba_extents حيث file_id=<F> و<B> بين block_id وblock_id+blocks-1;
بناءً على نوع القطعة التي تم إرجاعها:
نوع المقطع مؤقت أو مخبأ أو لا يحتوي على قيمة إرجاع. تحقق مما إذا كانت عبارة SQL صحيحة.
إذا كان نوع المقطع هو مقطع التراجع، فيجب استعادة كتلة البيانات.
نوع المقطع هو فهرس، تحقق من الجدول حيث يقع. فقط قم بإعادة بناء الفهرس.
sql> حدد المالك، اسم الجدول من dba_tables حيث اسم المجموعة = اسم_القسم
لا يزال يحدث الخطأ 1578 وتحتاج قاعدة البيانات إلى الاستعادة.
نوع المقطع هو جدول ويحفظ البيانات في الجدول.
تحليل ما إذا كان الكيان يعاني من تلف دائم في البيانات
SQL> تحليل الجدول table.name التحقق من صحة البنية المتتالية؛
sql> تحليل اسم مجموعة الجدول والتحقق من صحة البنية المتتالية؛
قاعدة بيانات استرداد أخطاء الأجهزة التي تعمل في وضع ARCHIVE
قم بنسخ ملف البيانات المقابل دون اتصال بالإنترنت
إعادة تسمية ملف البيانات إلى الموقع الجديد
استعادة ملف البيانات باستخدام سجل الأرشيف
يتم تشغيل قاعدة بيانات ملفات البيانات عبر الإنترنت في وضع غير ARCHIVE
دون اتصال بالإنترنت، يقوم ملف البيانات المقابل بنسخ ملف البيانات الذي تم نسخه احتياطيًا، وإعادة تسمية ملف البيانات، ثم توصيله بالإنترنت
احفظ البيانات في الجدول، على سبيل المثال: sql>select * from bigemp;
خطأ: ORA-01578: كتلة بيانات ORACLE تالفة (ملف رقم 8، كتلة رقم 8147) ORA-00110: ملف البيانات 8: '/Oracle/usr714.dbf'... ... معرف ملف تالف: 8=8 (ست عشري) معرف كتلة تالف : 8147=1fd3(hex) الصف الأول في الكتلة الفاسدة: 0000.1fd3.0000.0008 الصف الأخير في الكتلة الفاسدة: 0000.1fd2.7fff.0008 الصف الأول بعد هذه الكتلة: 0000.1fd4.0000.0008
sql > قم بإنشاء درجة حرارة الجدول كما حدد * من bigemp حيث 1=2؛
sql > أدخل في درجة الحرارة حدد * من bigemp /*+rowid(bigemp) */ Where Rowid >='0000.1fd4.0000.0008';
sql > أدخل في درجة الحرارة حدد * من bigemp حيث Rowid <='0000.1fd2.7fff.0008';
في الإصدارات السابقة لـ ORACLE 7.1، عندما لا يكون فحص نطاق الصف موجودًا، يمكن تحقيق نفس الغرض المذكور أعلاه من خلال الفهرسة.
4. حاشية
يمكن القول أن تقنية النسخ الاحتياطي والاسترداد الخاصة بـ ORACLE واسعة النطاق وعميقة، ولا أعرف سوى جزء صغير منها، وهي ليست شاملة تمامًا، وآمل أن تكون هذه المقالات مفيدة للجميع، كما نرحب بمشاركة تجربتك مع النسخ الاحتياطي أخبرني بالمشكلة، وسوف أقوم بتنظيمها ونشرها هنا لتكون مرجعًا لجميع أصدقاء DBA ومسؤولي البيانات المهتمين بالقيام بذلك، ربما ينقذ جهدك الصغير الشركة!
وفي الوقت نفسه، أود أن أذكر جميع أصدقائي بأن النسخ الاحتياطي مهم جدًا جدًا جدًا جدًا جدًا جدًا جدًا جدًا. . . الأهم من ذلك، إذا كان ذلك ممكنًا، يجب عليك استخدام وضع الأرشيف، وإلا فقد يحدث خطأ ما ولن تتمكن حتى من البكاء.