لنفرض مثلا أن مديرك في العمل طلب منك أن تقوم بنقل الـ datafile من المسار الحالي إلى مسار آخر وذلك لغرض ما فكيف تقوم بذلك ؟
هناك طريقتين :
الطريقة الأولى بإستخدام Alter Tablespace :
اولا : قم أولا بوضع الـ tablespace المحدد offline
Alter tablespace my_source offline;
ثانيا : قم باستخدام أوامر نظام التشغيل لنسخ datafile إلى المسار الجديد فمثلا إذا كنت تستخدم unix أستخدم الأمر cp وإذا النظام ويندوز استخدم اوامر Dos او استخدم الويندوز كما تحب (لقد قمنا بالنسخ وليس النقل تحسبا لأي خطأ) .
ثالثا : أستخدم الكود التالي :
Alter tablespace my_source
rename datafile ‘/recovery/Mydata/data01.dbf’
to ‘/MySouce/Mydata/data01.dbf’;
كما تلاحظون أنني قمت تعديل مسار ال datafile الى المسار الجديد وبما أنني استخدم نظام التشغيل unix تلاحظون المسارات بهذا الشكل .
رابعا : قم أولا بوضع الـ tablespace المحدد online
Alter tablespace my_source online;
خامسا : للتأكد من أن النقل تم بشكل صحيح استخدم الكود التالي :
select FILE_NAME,TABLESPACE_NAME from dba_data_files
where TABLESPACE_NAME='MY_SOURCE';
عند تنفيذ الكود السابق ستلاحظ أن العمود المسمى file_name يحوى المسارات لكل ال datafile التابعة للفضاء المحدد في الاستعلام إذا لاحظت ا ن ال datafile في المسار الجديد فهذا يعني أن شغلك صحيح .
ملاحظة : إذا أردت نقل كل datafile كرر العملية 3 على عدد ال datafile مع تغيير أسماءها في الكود .
أخيرا : قم بحذف datafile من المسار القديم فإذا كنت تستخدم unix استخدم الأمر rm وإذا كنت تستخدم ويندوز أكيد بتعرف لحالك تساوي حذف للملف .
الطريقة الثانية بإستخدام alter database :
قد يخطر ببالك نقل جميع ال datafile الموجودة في الفضاء system وكما تعلمون ان هذا الفضاء بيتثبت مع أوراكل ويحوي data dictionary لذلك لا يمكن أن تضعه في حالة offline لذا انت ملزم باستخدام هذه الطريقة ويمكنك استخدامها مع أي tablespace آخر كذلك .
أولا : قم بإطفاء قاعدة البيانات بعد التاكد بأنه لا يوجد أي session شعالة عليها والا أنت بحاجة لاستخدام خيارات shutdown لمزيد من المعلومات راجع كتاب DBA fundamental I
بشكل عام أكتب الأمر التالي في sqllus : shutdown
ثانيا : قم باستخدام أوامر نظام التشغيل لنسخ datafile إلى المسار الجديد فمثلا إذا كنت تستخدم unix أستخدم الأمر cp وإذا النظام ويندوز استخدم اوامر Dos او استخدم الويندوز كما تحب (لقد قمنا بالنسخ وليس النقل تحسبا لأي خطأ) .
ثالثا : قم بتشغيل قاعدة البيانات في وضع mount كما في الكود التالي :
STARTUP mount
ولمزيد من المعلومات عن هذا الأمر راجع DBA fundamental I
رابعا : نفذ الكود التالي :
ALTER DATABASE rename file
‘/recovery/Mydata/data01.dbf’
to ‘/MySouce/Mydata/data01.dbf’;
خامسا : بعد الحصول على رسالة نجاح العملية السابقة استخدم الكود التالي لوضع قاعدة البيانات في وضع open
Alter database open;
سادسا : للتأكد من أن النقل تم بشكل صحيح استخدم الكود التالي :
select FILE_NAME,TABLESPACE_NAME from dba_data_files
where TABLESPACE_NAME='MY_SOURCE';
عند تنفيذ الكود السابق ستلاحظ أن العمود المسمى file_name يحوى المسارات لكل ال datafile التابعة للفضاء المحدد في الاستعلام إذا لاحظت ا ن ال datafile في المسار الجديد فهذا يعني أن شغلك صحيح .
ملاحظة : إذا أردت نقل كل datafile كرر العملية 3 على عدد ال datafile مع تغيير أسماءها في الكود .
أخيرا : قم بحذف datafile من المسار القديم فإذا كنت تستخدم unix استخدم الأمر rm وإذا كنت تستخدم ويندوز أكيد بتعرف لحالك تساوي حذف للملف .

ليست هناك تعليقات:
إرسال تعليق