Wednesday, February 01, 2017

Oracle Enterprise Manager شرح



أوراكل EM أحد أهم البرامج التي تستخدمها أوراكل لإدارة والتحكم المرئي لمكونات اوراكل عن طريق Browser او ما يعرف بي جي يو ي ( GUI ) وانشاء المهام المتخصصة مثل تفعيل RMAN ، مراقبة الـ RAC و كل Instance على حدا .


في هذه التدوينة سنتطرق الى كيفية تشغيل وإعداد Oracle EM و من ثم تشغيله .


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 .




الخطوة 6 :- اختيار إسم المهمة ( Job ) و وقت التنفيذ كما هو موضح في الصورة
وقت التنفيذ = مرة واحدة الان او مرة واحدة لاحقا او الخيار المتعارف عليه و هو تنفيذ المهمة في وقت معين يوميا او اسبوعيا . 




الخطوة 7 :- مراجعة كود rman  و تنفيذ المهمة الآن بناءا على طلبي . 
submit job .






الخطوة 8 :- مراقبة التنفيذ و الحالة له كما هو مبين في الصورة أدناه ، و تمت العملية كاملة خلال 138 ثانية بنجاح .





خاتمة :- 

نستطيع التأكد من خلال Backup reports وفي حال رغبتنا بتغير بعض خصائص rman  من خلال setup  و من ثم backup setting .




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 ) ، بناءا على الخطة المرسومة للباك اب يتم تحديد هذه الإجراءات .    



خطوات العمل :- 

  1. إنشاء directory  في بنية النظام لحفظ الباك اب فيه ومن ثم ربط هذا المكان مع نظام RMAN . 
  2. تغيير إعدادات RMAN ليتوافق مع الـ Policy ( وهي هنا لأغراض التعليم )  .
  3. أخذ backup لنظام أوراكل . 
  4. فحص backup .
  5. عمل Job ليتم عمل Backup كل يوم ( بناءا على Policy التي تخدم مصالح ( Business ) العمل  في المؤسسة ) .
  6. ربط Job بـ crontab و تحديد موعد تنفيذ المهمة . 
  7. المهمة الاخيرة ( عمل restore ) .  

الخطوة الأولى :-

من أهم الخطوات تحديد مكان الباك اب ( Backup ) ولعل سياسة الشركة او اتفاقية التنفيذ للمشروع تحدد مكان و كيفية (آلية) النسخ الاحتياطي . هنا في هذا المثال  قمت بإنشاء Directory في بنية النظام  ، تستطيع حفظ الباك اب في san storage ( مكان لضمان عدم تلف الهاردسك ) او حتى سحب الباك اب على Tape مباشرة . 

الخطوة الثانية :- 

لمشاهدة إعدادات RMAN 
rman> show all ;


هنالك العديد من الخصائص المهمة التي يجب  وضع قيمة لها و من أهمها .    
retention policy ( فترة الاحتفاظ بـ rman backup ) و يمكن وضعها بالأيام او بالنسخ . ( سأقوم بحفظ 3 نسخ ) و بعد ذلك سأقوم بحذف النسخ المنتهية الصلاحية . 
و 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

هنالك العديد من الأوامر المفيدة  التي يتم إستخدامها  لتحديد المساحة المشغولة في نظام لينكس حيث أن الهدف الرئيس من تتبع معرفة المساحة هو المحافظة على ديمومة التشغيل و عدم انقطاع الخدمة .  



هناك أمرين من أوامر لينكس  يتم إستخدامهما:-
  1. df - report file system disk space usage ( Disk Files) .
  2. 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/





Wednesday, October 15, 2014

Invalid Oracle Schema Objects

Invalid Oracle Schema Objects
عند اضافة عامود جديد  او تعديل في بنية جدول معين  فأن جميع الـ Objects المرتبة به تحتاج الى اعادة تنفيذ compile  و ذلك لتجنب حدوث عطل  ما و من الـ objects التي تتأثر بتعديل بنيية جدول هي

1.backges
2.functions
3. Procedures

  و لمعرفة الـ Objects التي يجب اعادة تنفيذها   نفذ الجملة التالية

select owner, object_name, object_type from dba_objects where status='INVALID' order by owner


Wednesday, April 09, 2014

كيفية معرفة حجم جدول معين في اوراكل .

كيفية معرفة حجم جدول معين في اوراكل .


select OWNER ,segment_name,segment_type,bytes/1024/1024/1028 GB
 from dba_segments
 where segment_type='TABLE' and segment_name='production_trxn_log'
and OWNER ='MOL-TLR' 



segment_name= Table Name
OWNER        =Schema  



OWNER SEGMENT_NAME SEGMENT_TYPE Total size (GB)
MOL-TLR production_trxn_log TABLE 50