Wednesday, February 01, 2017
Sunday, January 29, 2017
Configure RMAN using Oracle Enterprise Manager بالعربي
تستطيع تهيئة أوراكل ارمان عن طريق كتابة الأوامر المطلوبة او تنفيذها في منفذ الاوامر في rman مباشرة . قامت أوراكل بإضافة هذه الميزة على برنامجها Oracle Enterprise Manager لتيسير العمل و تقليل الوقت المطلوب . في هذه المدونة سأقوم ببرمجة الكود المطلوب داخل OEM ليتسنى تبسيط العمل في هذا الباب .
OEM :-
أحد أهم الأدوات لدعم برامج قاعدة البيانات أوراكل التي تعمل على Browser مباشرة ، أي أن هناك برنامج متكامل لدعم و مراقبة اوراكل بدون كتابة كود .
الخطوة 1 :- الدخول الى نظام OEM عن طريق browser و فتح البرنامج باستخدام اسم المستخدم sys ( مثل Root في Linux ) .
الخطوة الثانية :- التوجه الى Availability و منها اختيار Scheduled Backup .
الخطوة 3:- إدراج إسم المستخدم لنظام التشغيل الذي لديه صلاحيات لإستخدام أوراكل ، وهو هنا المستخدم Oracle . تحديد خصائص الـ Backup ثم الضغط على
Schedule Customized Backup
الخطوة 4 :- تحديد Type و Mode و من ثم Next .
الخطوة 5 :- تحديد مكان Backup و هو هنا Disk .
وقت التنفيذ = مرة واحدة الان او مرة واحدة لاحقا او الخيار المتعارف عليه و هو تنفيذ المهمة في وقت معين يوميا او اسبوعيا .
الخطوة 7 :- مراجعة كود rman و تنفيذ المهمة الآن بناءا على طلبي .
submit job .
الخطوة 8 :- مراقبة التنفيذ و الحالة له كما هو مبين في الصورة أدناه ، و تمت العملية كاملة خلال 138 ثانية بنجاح .
خاتمة :-
نستطيع التأكد من خلال Backup reports وفي حال رغبتنا بتغير بعض خصائص rman من خلال setup و من ثم backup setting .
تصنيف:
EM
OEM
Oracle backup
Oracle DBA
Rman
Sunday, January 22, 2017
Oracle RMAN مبتدئ
هذه المقالة لكل من هو مبتدأ في النسخ الاحتياطي او ما يعرف بأوراكل ارمان، الهدف هو تبسيط مفاهيم ارمان و وضع مثال بسيط يحاكي الأنظمة الموجودة في العالم ، حيث أن أداة ( RMAN ) يتم استخدامها في المشاريع المتوسطة و الكبيرة ، مع العلم ان كل مدير قاعدة بيانات أوراكل يجب الإلمام بعملية النسخ الاحتياطي و الاعادة ( backup & restore ) .
Oracle RMAN ؟
قامت شركة أوراكل بإصدار أداة متخصصة ( Recovery Manager ) بالنسخ الاحتياطي والاستعادة ( Backup and restore ) مع صدور الاصدار 8 من قاعدة البيانات أوراكل ،هذه الاداة هي المفضلة و الموصى بها من شركة أوراكل لما تحتويه من خصائص عدة :-
- مستوى أفضل في أداء النسخ الاحتياطي :- حيث أن Rman يعمل جنبا إلى جنب مع قاعدة البيانات ، اي لا تحتاج الى إيقاف التشغيل لنسخ قاعدة البيانات ( Online ).
- الكشف عن الكتل الفاسدة ( corrupted ) أثناء عملية النسخ الاحتياطي .
- توفير ميزات النسخ التراكمي Incremental Backup و النسخ الكامل Full Backup و أيضا تخصيص بموضوع النسخ مثل tablespace معين او Data file .
- إمكانية التكامل مع برامج النسخ الاحتياطي مثل TSM و غيرها عن طريق تحديد القناة و مكان الحفظ (Tape or Disk).
- يمكن الاستعلام عن المادة المنسوخة ، تسميها ، تغيير مكان النسخ .
- توفير ميزات عدة تساعد مدير قواعد البيانات DBA لإدارة النسخ الاحتياطي و الارجاع لتقليص زمن العطل او ما يعرف اصطلاحا بـ downtime .
كيفية الاتصال بـ RMAN ؟
تستطيع فتح RMAN بدون الاتصال بأي قاعدة بيانات عن طريق كتابة ( rman ) فقط والخروج منه عن طريق exit.
من أجل فتح rman ويكون مرتبط مع قاعدة البيانات ( target database ) نستطيع فتحه عن طريق كتابة الأمر التالي الذي يعني فتح قاعدة البيانات لأداة ارمان مع صلاحيات sysdba .
rman target /
ملاحظة :- يتم تخزين معلومات النسخ backup في control file مع أنه يمكن إنشاء schema لحفظ هذه المعلومات ( recovery catalog ) ، بناءا على الخطة المرسومة للباك اب يتم تحديد هذه الإجراءات .
خطوات العمل :-
هنالك العديد من جمل الاستعلام التي تستطيع تنفيذها عن طريق sqlplus او عن طريق حفظ ال log الذي يستخدمه rman .
الخطوة الخامسه :-
يقصد بعمل job هو كتابة الأوامر في ملف منفصل ويتم استدعاء هذه الاوامر اما عن طريق taskschd في ويندوز او عن طريق crontab في لينكس .
بالعادة يتم تخصيص جميع اوامر rman و تحديد مكان backup و عدد القنوات و حذف الملفات التي تحتوي على الـ باك اب القديم ( absolute data ) . ويتم حفظ الملف ب إمتداد .sh في لينكس . لذلك قمت بإنشاء ملف سميته rman_tam.sh و كتبت فيه كود ليعمل full backup ويقوم بحذف الملفات التي تصنف انها متنهية الصلاحية ( طبعا بناءا على policy التي قمت بوضعها ( فقط نسخة واحدة لا أكثر ) ) .
توضيحات مهمة :-
- إنشاء directory في بنية النظام لحفظ الباك اب فيه ومن ثم ربط هذا المكان مع نظام RMAN .
- تغيير إعدادات RMAN ليتوافق مع الـ Policy ( وهي هنا لأغراض التعليم ) .
- أخذ backup لنظام أوراكل .
- فحص backup .
- عمل Job ليتم عمل Backup كل يوم ( بناءا على Policy التي تخدم مصالح ( Business ) العمل في المؤسسة ) .
- ربط Job بـ crontab و تحديد موعد تنفيذ المهمة .
- المهمة الاخيرة ( عمل restore ) .
الخطوة الأولى :-
من أهم الخطوات تحديد مكان الباك اب ( Backup ) ولعل سياسة الشركة او اتفاقية التنفيذ للمشروع تحدد مكان و كيفية (آلية) النسخ الاحتياطي . هنا في هذا المثال قمت بإنشاء Directory في بنية النظام ، تستطيع حفظ الباك اب في san storage ( مكان لضمان عدم تلف الهاردسك ) او حتى سحب الباك اب على Tape مباشرة .
الخطوة الثانية :-
لمشاهدة إعدادات RMAN
هنالك العديد من الخصائص المهمة التي يجب وضع قيمة لها و من أهمها .
لمشاهدة إعدادات RMAN
rman> show all ;
retention policy ( فترة الاحتفاظ بـ rman backup ) و يمكن وضعها بالأيام او بالنسخ . ( سأقوم بحفظ 3 نسخ ) و بعد ذلك سأقوم بحذف النسخ المنتهية الصلاحية .
و CHANNEL DEVICE TYPE DISK FORMAT التي تختص بمكان ال rman backup .
الخطوة الثالثة و الرابعة :-
و CHANNEL DEVICE TYPE DISK FORMAT التي تختص بمكان ال rman backup .
الخطوة الثالثة و الرابعة :-
RMAN> BACKUP DATABASE;
Starting backup at 22-JAN-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/app/oracle/oradata/SDB/system01 .dbf
input datafile file number=00002 name=/oracle/app/oracle/oradata/SDB/sysaux01 .dbf
input datafile file number=00005 name=/oracle/app/oracle/oradata/SDB/example0 1.dbf
input datafile file number=00003 name=/oracle/app/oracle/oradata/SDB/undotbs0 1.dbf
input datafile file number=00006 name=/oracle/app/oracle/oradata/SDB/DEV_odi_ user.dbf
input datafile file number=00004 name=/oracle/app/oracle/oradata/SDB/users01. dbf
channel ORA_DISK_1: starting piece 1 at 22-JAN-17
channel ORA_DISK_1: finished piece 1 at 22-JAN-17
piece handle=/backup/rman/full_09rqkpfk_9_1 tag=TAG20170122T043500 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 22-JAN-17
Starting Control File and SPFILE Autobackup at 22-JAN-17
piece handle=/oracle/app/oracle/fast_recovery_area/SDB/autobackup/2017_01_22/ o1_mf_s_933914155_d88b4w05_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 22-JAN-17
RMAN>
من خلال النتيجة تبين انه تم عمل full backup .
نستطيع فحص المكان الموجود فيه و كم حجم الـ rman backup .
[oracle@tambarakat 2017_01_22]$ cd /backup
[oracle@tambarakat backup]$ ls
rman
[oracle@tambarakat backup]$ cd rman
[oracle@tambarakat rman]$ pwd
/backup/rman
[oracle@tambarakat rman]$ du -sh *
1.3G full_09rqkpfk_9_1
هنالك العديد من جمل الاستعلام التي تستطيع تنفيذها عن طريق sqlplus او عن طريق حفظ ال log الذي يستخدمه rman .
الخطوة الخامسه :-
يقصد بعمل job هو كتابة الأوامر في ملف منفصل ويتم استدعاء هذه الاوامر اما عن طريق taskschd في ويندوز او عن طريق crontab في لينكس .
بالعادة يتم تخصيص جميع اوامر rman و تحديد مكان backup و عدد القنوات و حذف الملفات التي تحتوي على الـ باك اب القديم ( absolute data ) . ويتم حفظ الملف ب إمتداد .sh في لينكس . لذلك قمت بإنشاء ملف سميته rman_tam.sh و كتبت فيه كود ليعمل full backup ويقوم بحذف الملفات التي تصنف انها متنهية الصلاحية ( طبعا بناءا على policy التي قمت بوضعها ( فقط نسخة واحدة لا أكثر ) ) .
[oracle@tambarakat backup]$ cat rman_tam.sh
TODAY=`date '+%d%m%Y%H%M%S'`
LOG=/backup/tambarakat_full_backup_${TODAY}.log
echo "Online backup of database started at $TODAY" > $LOG
echo "--------------------------------------------------------" >> $LOG
$ORACLE_HOME/bin/rman <<EOF >> tambarakat_full_backup_${TODAY}.log
connect target /
run {
allocate channel tam1 type disk ;
backup
format '/backup/rman/%ttambarakat_rman_backup%T_%u_s%s_p%p'
tag 'Daily_rman_backup'
(database);
release channel tam1;
}
crosscheck backup;
delete NOPROMPT obsolete;
list backup summary;
EOF
exit
TODAY2=`date '+%d%m%Y%H%M%S'`
echo "-------------------------------------------------------" >> $LOG
echo "Online backup of database finished at $TODAY2" >> $LOG
echo "-------------------------------------------------------" >> $LOG
[oracle@tambarakat backup]$
توضيحات مهمة :-
- الهدف من today و today2 هو حصر وقت البدء و الانتهاء .
- الهدف من Log هو حفظ output الخاص بكود rman ليتسنى لنا فحصه و التأكد انه خالي من الاخطاء .
- حذف ال backup المنتهي الصلاحية وذلك لحفظ المساحة حيث أني اعمل على VM ware .
- تسمية ال Backup و ذلك لمعرفة النوع و التاريخ لهذا الـ backup .
- الكود داخل Run {} يعرف ب job .
- يجب إعطاء صلاحيات التنفيذ لهذا الملف عن طريق الامر chmod 755 rman_tam.sh ويصبح لون الملف بالاخضر :)
- الى الان هذا الملف لا يعمل الا عن طريق تنفيذه يدويا عن طريق الامر
[oracle@tambarakat backup]$ ./rman_tam.sh
بعد تنفيذ الكود أعلاه تستطيع فحص المساحة و الملفات و الاستعانة بالكود الخارج لمعرفة نتيجة العملية .
الخطوة السادسة :-
ربطه بـ crontab . سيتم إستدعاء هذا الملف للتنفيذ الساعة الواحده صباحا و 36 دقيقه .
[oracle@tambarakat backup]$ crontab -l
36 01 * * * /backup/rman_tam.sh
[oracle@tambarakat backup]$
الخطوة السابعة :- لا تطبق على نظام يعمل ( production ) ، هذا المثال تجريبي تدريبي بحت .
المطلوب هو حذف حذف احد data files لمحاكاة مثال corruption ، يعني هناك فقدان بأحد data files او ان Hard Disk تعرض لعطل . لذلك قم بإعادة تسمية اخد data files الموجودين و قم بعمل shutdown و من ثم شغل قاعدة البيانات .
للحديث بقية . . . . . . . . .
Saturday, January 14, 2017
كيفية الحصول على حجم الملفات في أنظمة لينكس Linux df & du
هنالك العديد من الأوامر المفيدة التي يتم إستخدامها لتحديد المساحة المشغولة في نظام لينكس حيث أن الهدف الرئيس من تتبع معرفة المساحة هو المحافظة على ديمومة التشغيل و عدم انقطاع الخدمة .
هناك أمرين من أوامر لينكس يتم إستخدامهما:-
- df - report file system disk space usage ( Disk Files) .
- du - estimate file space usage ( Disk Usage ).
مثال على df ( عند كتابة الامر df لوحده يتم إرجاع معلومات المساحة بـ Block Size و هو ما يكافئ 1KB ) و تستطيع إضافة -h للحصول على المعلومات بطريقة مفهومة جدا دون اللجوء الى الالة الحاسبة لتحديد المساحة .
للأمر df صيغة معيارية نستطيع الحصول عليها من خلال ملف المساعدة المرفق في بنية لينكس .
root@tambarakat log]# man df
الأمر du :- يستخدم لمعرفة المساحة المستهلكة ( المستخدمة ) لملف او قسم معين ( Directory ) . وله عدة options تساعدك في تحديد المراد معرفتها و منها s و تعني ملخص summary و h تعني قابل للقراءة بصيغة GB او MB بدلا من KB.
سنجد مساحة /oracle بإستخدام الأمرين .
المساحة الكلية GB 25 و أوراكل تستخدم GB 18 ، لكن هذه المعلومات غير كافية ، ما نريده بالضبط معرفة المساحة للملفات الموجودة داخل أوراكل .
مثال آخر حيث اننا نريد معرفة حجم الملفات الموجودة في مكان أو البحث عن الملفات التي تبدأ ب حرف s ، طبعا هنالك العديد من الطرق المختلفة .
مثال أخير في هذه المقالة ، نريد الحصول على أكبر 10 ملفات حجما داخل دليل معين ( Directory ) هنا /var .
du -ah /var | sort -n -r | head -n 10
تم تجربة جميع الأوامر على بيئة Oracle Linux 6.5 .
المراجع :-
- https://en.wikipedia.org/wiki/Df_%28Unix%29
- https://en.wikipedia.org/wiki/Du_%28Unix%29
- http://www.linfo.org
- http://www.tecmint.com/find-top-large-directories-and-files-sizes-in-linux/
تصنيف:
df
du
linux
linux size files .