oracle - abahe.uk · arab british academy for higher education. oracle – part1

155
Arab British Academy for Higher Education. Oracle – Part1 www.abahe.co.uk 0 Oracle Part 1

Upload: others

Post on 20-Sep-2019

20 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

0

Oracle Part 1

Page 2: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

1

اجلزء األول تعريفات

ما هي األوركل Structure Filesاهليكل املادي للملفات يف أوراكل وحدات ختزين البيانات يف أوراكل

Processesالعمليات Memory Structure الذاكرة يةهيكل

تنفيذ املعامالت يف أوراكل Database Startupفتح قاعدة البيانات

Database Startupدة البيانات إغالق قاع The Data Dictionaryالكتالوغ

معلومات البد منها

قاعدة بيانات أوراكلتنصيب

Page 3: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

2

برنــــــامج قاعــــــدة بيانــــــات وهــــــي شــــــبيهة إلــــــىنقــــــول إنــــــه وراكــــــل األ إن أردنــــــا تعريــــــف

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

ألنهــا تمكنــك مــن عمــل بــرامج ذات أهــداف متعــددة وال يــشترط أن تكــون بــرامج قواعــد بيانات فيمكنك عمـل برنـامج رسـم كمـا برنـامج الرسـام فـي وينـدوز ويمكنـك الـتحكم بهـا

حتـى باالرتبـاط بقواعـد بيانـات على حد كبير من المرونة واإلمكانيات التي تـسمح لـك متعددة ولكن أوراكل هي قاعدة بيانات قوية و آمنة ولكـن يوجـد لـديها أدوات تـساعدها للتعامل معها واظهارها في أشكال متعددة مثل الدفلوبر بحيـث يمكنـك إدخـال البيانـات واســـتخراجها عـــن طريـــق نمـــاذج وتقـــارير ورســـوم بيانيـــة ولكـــن ال يمكنهـــا التعامـــل مـــع

عــدة بيانــات غيــر أوراكــل كمــا أنهــا ال تمنــك مــن عمــل بــرامج مثــل الرســام دعنــا نأخــذ قاطلــب منــك ثالثــة مــشاريع ولنفتــرض مــثال بــأن مــديرك . أمثلــة لكــي يتبــين الفــرق لــديك

:وهي

المشروع األول

برنــــامج يقــــوم بعمــــل ملــــصقات خاصــــة بالرســــائل لكــــي يــــتم إلــــصاقها علــــى مظــــاريف .بيانات العمالءالمراسالت يستند إلى قاعدة

الحل

يمكن للبرنامج االستناد على قاعدة بيانات أوراكل أو عمل قاعدة بيانات صـغيرة علـى أكــسس ويمكــن عمــل الملــصقات كتقريــر مخــرج مــن نفــس أوراكــل ولكــن فــي الفيجــوال بيــــسك يمكنــــك إضــــافة لمــــسات فنيــــة واضــــافة فالتــــر معينــــة تعمــــل علــــى الملــــصقات

ر ففـــي حـــال أوراكـــل تحتـــاج إلـــى نـــسخة قاعـــدة بيانـــات إلظهارهـــا بأشـــكال جماليـــة أكثـــأوراكل لتحميلها على الجهاز كما تحتاج للملفات التشغيلية الخاصة بالنماذج والتقارير كمــا أن الحمايــات يجــب أن تــوزع للمــستخدمين بحيــث ال يــسمح لكــل مــستخدم الــدخول

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

المشروع الثاني

Page 4: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

3

ين وهواتف العمالءوبرنامج يقوم بعمل مفكرة للهاتف الشخصي أو لعنا

الحل

هذا البرنامج ينطبق عليه نفس ما ينطبق على المشروع األول

المشروع الثالث

الـشركة فـي ثالثـة فـروع برنامج خـاص بالحـسابات يـستند علـى قاعـدة بيانـات حـسابات وهــذه المؤســسة تتعامــل أيــضا بالتجــارة اإللكترونيــة علــى اإلنترنــت كمــا جغرافيــا موزعــة

تحتــاج لتقــارير واحــصاءات دوريــة تــزود للعمــالء مــن قبــل البرنــامج دون الحاجــة لعمــل .يدوي

الحل

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

مع قاعدة البيانات التي وضع الديفلوبر ألجلها كما أن التطبيق وذلك لمرونة البرنامجمــــن أدوات أوراكــــل إمكانيــــة التعامــــل مــــع اإلنترنــــت واعطــــاء حمايــــة وأمــــان للبيانــــات الموجــودة كمــا أن البرنــامج ال يمكــن أي مــستخدم مــن الــدخول إليــه والعبــث بمحتوياتــه

.سوى من هم مختصين بذلك وبسماحيات متفاوتة

إلـى الكاهنـة المقدسـة التـي يطلبهـا النـاس Oracleناني القديم أوراكـل يشير االسم اليو

للتبوء بالغيب ولتفسير حكمة اإللهة المقدسـة إن كـل مـا تقولـه هـو حكمـة ولكنهـا دائمـا ويــصف اللفــظ أيــضا كــل مــا لديــه الكثيــر مــن العلــم . حكمــة مقدســة مغلفــة بــالغموض

وهـى oracularأما الصفة فهـي . بموضوع معين ويستطيع أن يقدمه كنصيحة غاليةـــى الـــصعوبة فـــي الفهـــم ـــسحر . تـــشير إل واذا كانـــت أوراكـــل جـــديرة بـــان تتتـــوج أميـــرة لل

كيــــف يعمــــل هــــذا البنــــاء الــــضخم ىوالغمـــوض إال إننــــا ننــــوي بــــإذن اهللا أن ننظــــر لنـــرالمسمى بأوراكل من الـداخل وذلـك األمـر يعـد مقدمـة ال غنـى عنـه لمـن يريـد أن ينتفـع

Page 5: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

4

من أقوى نظم قواعد البيانات وان يتقدم قليال في دراسته كـي يـصبح بعـون بمزايا نظاماهللا مديرا ومسيطرا على أوراكل األميرة الساحرة .

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

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

Page 6: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

5

ما هي األوركلإلـــى مجموعـــة منظمـــة مـــن البيانـــات والتـــي تخـــزن Databaseتـــشير قاعـــدة البيانـــات

ويتم التعامل مع تلك . بطريقة معينة بحيث يسهل الوصول إليها والتعامل معها بكفاءةبــرامج معقــدة وأدوات تمكننــا وهــى RDBMSالبيانــات بواســطة نظــم قواعــد البيانــات

. من الوصول إلى البيانات بسهولة :إن إدارة قواعد البيانات تتطلب العديد من العمليات واإلجراءات ومن أمثلتها

وهــي الحاويــة أو الوعــاء التــي ســتنتظم فيــه البيانــات وكيفيــة :إنــشاء قواعــد البيانــاتعها كمــــا تتــــضمن أيــــضا تنظــــيم البيانــــات نفــــسها داخــــل تلــــك الحاويــــة وطــــرق اســــترجا

. إجراءات تأمين البيانات وطرق االحتفاظ بتا سليمة وحمايتها من التلفإن أوراكل كنظام إلدارة لقواعد البيانات قـد تـم تـصميمه خصيـصا لكـي يعمـل فـي بيئـة عمـــل تحـــوي العديـــد مـــن المـــستخدمين الـــذين يريـــدون إنجـــاز إعمـــالهم بـــسرعة وســـهولة

نفــس الوقــت تقريبــا إلــى قاعــدة البيانــات واالســتفادة مــن وبالتــالي ضــمان الوصــول فــي :مواردها المتاحة وتتميز بيئة العمل تلك بالتالي

يعمـــل نظـــام التـــشغيل علـــى تنفيـــذ العديـــد مـــن العمليـــاتProcess فـــي نفـــس .الوقت

يقـــوم نظـــام التـــشغيل بتحديـــد وقـــت معـــين لكـــل عمليـــة وطريقـــة تنفيـــذها وأولويـــة .التنفيذ

تــشغيل بتقــسيم الــذاكرة يقــوم نظــام الMemory إلــى منــاطق أو أجــزاء محجــوزة . للمستخدمين ومناطق تتشارك فيها مجموعة من العمليات

رتوضــيح معنــى الــسيرفقبـل أن نــصور الكيفيــة التــي يعمــل بهــا ســيرفر األوركــل ينبغــي

والذي هو ببساطة مجموعة من البرامج والتي تشكل نظاما متكامال تركب علـى جهـاز

Page 7: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

6

بيوتر بمواصفات خاصة كي يستطيع تقديم خدمات معينة إلى برامج أخـرى أو إلـى كم . عدة مستخدمين في نفس الوقت تقريبا

:إطاللة على سيرفر األوركل شـامال هـو مجموعـة مـن البـرامج التـي تـشكل نظامـا Oracle Server سـيرفر أوراكـل

ء عمليــات عديــدة فــي الــذاكرة مــن خــالل تلــك البــرامج يــتم إجــرا. إلدارة قاعــدة البيانــاتوالتــي تتعامــل معهــا األوركــل بــشكل خــاص حيــث تــسمح تلــك العمليــات بالوصــول إلــى

يمكـن توضـيح تلـك . الملفات المادية التي تشكل قاعدة البيانـات والتعامـل معهـا بكفـاءة :الفكرة عن طريق الشكل التالي

:وراكل على النحو التاليمن خالل العرض السابق يمكن تصور معمارية السيرفر أل

Processesالعمليات .1

Memory Structureمعمارية الذاكرة .2

Physical File Structureالملفات المادية المكونة لقاعدة البيانات .3حيـث يـشير المـصطلح إلـى Databaseينبغي أن نعي التفرقة بـين األوركـل كـداتابيز

فهـو مجموعـة مـن Instance المثـال مجموعة منظمة من الداتا مخزنة في ملفات أما

Page 8: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

7

والتــي تــتم فــي منــاطق معينــة مــن الــذاكرة تحــددها أوراكــل كــي Processesالعمليــات . نــتمكن مــن الوصــول إلــى الملفــات الماديــة التــي تــشكل قاعــدة البيانــات والتعامــل معهــا

:أي أن العمليات التي تتم فيها + معمارية الذاكرة =Oracle Instance

مادية المكونة لقاعدة البيانات يشار إليها عادة بـ الملفات الDatabase

مثال األوركل + الملفات المادية المكونة لقاعدة البيانات =Oracle Server :الشكل التالي يبين اكثر المقصود مما قلناه

ولكن ما الذي يحدث عندما يقوم المستخدم باالتصال بأوراكل ؟

:م التالي يمكننا توضيح ذلك بالرس

Page 9: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

8

عندما يقوم المستخدم باالتصال بأوراكل من خالل تطبيق ستقوم أوراكـل بتوليـد عمليـة وســـتظل موجـــودة Process Dedicated Serverجديـــدة مخصـــصة بالكامـــل لـــه

طــوال فتــرة االتــصال ويكــون الــشاغل األساســي لتلــك العمليــة هــو خدمــة المــستخدم فــإذا هــا سـوف تـستقبل جملـة االســتعالم وتنفـذها حيـث تبـدأ فــي قمنـا بتنفيـذ اسـتعالم مـثال فإن

إعطاء األوامر للـسيرفر للبحـث عـن الـداتا سـواء فـي ذاكـرة الكـاش أو الملفـات ثـم تقـوم أن الغرض األساسي منها هو االستجابة إلى طلبات . بجلبها إلى التطبيق الذي طلبها

Sql الخاصة بالمستخدم . ـــ صال يـــسمح لمجموعـــات ضـــخمة مـــن المـــستخدمين إن أوراكـــل تقـــدم بـــديال آخـــر لالت

وهـو ميكـانيزم لالتـصال يمكـن Shared Serverبالعمل في نفس الوقت بكفـاءة وهـو تشبيه بجدول كبير من المياه التي يتم توزيعها على عدد كبير من األفـراد فيكـون لكـل

تقريبـا واحد منها حصته وهذا األسـلوب يتـيح لزيـادة عـدد المـستخدمين لقاعـدة البيانـاتآالف مــستخدم 10بــال حــدود فبــدال مــن تخــصيص عمليــة لكــل مــستخدم ولنفــرض أنهــم

علـى خدمـة ذلـك العـدد ةعمليـة مـن أوراكـل تظـل مـسؤول100يمكن بذلك الطريقة فـتح . الكبير من المستخدمين

وطبقــــا لهــــذا البــــديل تقــــوم أوراكــــل بفــــتح مجموعــــة مــــن العمليــــات تــــسمى مــــستقبالت dispatchers طلبــات المــستخدمين علــى هيئــة طــابور جــاهز ســتقوم بوضــع والتــي

للتنفيــذ فــي منطقــة للــذاكرة المؤقتــة التــي تعينهــا أوراكــل وتــسمى منطقــة النظــام الــشاملة System Global Area )(SGA ويـتم االنتقـاء مـن العمليـات الغيـر شـاغرة لتنفيـذ

Page 10: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

9

طلــب آخــر فإنهــا فلــو كانــت العمليــة األولــى غيــر مــشغولة بتنفيــذ Queeذلــك الطــابور . ستتولى االنتقاء من الطابور لتنفيذه وهكذا كما يتضح من الشكل التالي

:يتضح من الشكل السابق التالي

أن المــــستخدم ســــوف يقــــوم باالتــــصال بالمــــستقبلdispatcher وعنــــدها يقــــوم ــــذاكرة المــــستقبل بوضــــع أمــــر المــــستخدم فــــي طــــابور االنتظــــار فــــي منطقــــة ال

SGA . تكون جاهزة سوف تقوم بأخذ الطلب من الطابور لتنفيذهأول عملية . طلــب المــستخدم تــم تنفيــذه وتــم وضــع نتــائج التنفيــذ فــي طــابور االنتظــار مــرة

أخــرى تمهيــدا لعرضــه علــى المــستخدم يقــوم المــستقبل بأخــذ نتــائج الطلــب مــن . الطابور ثم يقدمه إلى المستخدم ثم يغلق قناة االتصال

: باالتصال بأوراكل Clientتخدم ولكن كيف يقوم المس

Page 11: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

10

تناولنـــا فـــي الفقـــرة الـــسابقة مـــا الـــذي يحـــدث عنـــدما يقـــوم المـــستخدم باالتـــصال بأوراكـــل واعطــاء طلباتــه ليــتم تنفيــذها ولكــن كيــف يقــوم فعليــا بــإجراء ذلــك االتــصال أو بمعنــى

آخر ما الذي يمكنه من إجراء مثل ذلك االتصال ؟ي وهــو حالــة تخــصيص عمليــة لكــل مــستخدم يمكــن توضــيح ذلــك مــن الــشكل التــال

Process Dedicated Server

االتــصال الــشبكي تفــي معظــم الحــاالت يــتم االتــصال مــن خــالل عــن طريــق برتوكــوالTCP/IP حيــث يكــون المــستخدم علــى جهــاز يقــوم باالتــصال بالــسيرفر والــذي يكــون

باستخدام تطبيـق يقوم المستخدمTCP/IPمركبا على جهاز آخر من خالل برتوكول .لالتصال بأوراكل

هنا يقـوم بكتابـة اسـم المـستخدم الـذي يريـد الـدخول إليـه فـي أوراكـل وكـذلك كلمـة الـسر . TNS Namesكما يكتب اسم الخدمة الشبكية التي يريد االتصال بها

ـــــى جهـــــاز المـــــستخدم وهـــــو اختـــــصار TNSأن هـــــي برنـــــامج لالتـــــصال موجـــــود علويقـوم بالتعامــل مـع االتــصاالت عـن بعــد Transparent Network Substrateلــ

Remote وكـذلك االتـصال مـن نقطـة لنقطـةPeer to peer communication .

Page 12: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

11

ت ا يحـل إلـى مجموعـة عبـارConnect Stringن اسم الخدمة الشبكية هو اختصار إبكتابــة اســم الخدمــة الــشبكية وهــو . تخبــر عــن مكــان الــداتابيز الــذي يــراد االتــصال بهــا

يقــوم برنــامج االتــصال بمحاولــة حــل ora816.us.oracle.com للمثــال الــسابق وفقــا توضــح مكــان وكيفيــة االتــصال تاســم الخدمــة الــشبكية أو معرفــة مــا يقابلهــا مــن عبــارا

بقاعــدة البيانــات وهنــاك اكثــر مــن طريقــة لمعرفــة تلــك المعلومــات ولنأخــذ أســهلها وهــي ن علـــى الـــشكل التـــالي ويكـــوTNSNAMES.ORAاالســـتعانة بملـــف نـــص يـــسمى

حيث تتم قراءته بالنسبة للخدمة السابقة على النحو التالي

هنا يقدم الملف السابق مجموعة من المعلومات المفيدة والتي تعـين علـى تحديـد موقـع :قاعدة البيانات المراد االتصال بها على النحو التالي

اسم الجهاز الموجود به أوراكلHostNmae

ة المفتوحة لالتصال بأوراكل على الجهاز اسم البوابPort

اسم الداتابيزSID

اآلن عــرف التطبيــق فــي جهــاز المــستخدم أيــن ســوف يتــصل فهــو يــستخدم بروتوكــول فــي فــتح قنــاة اتــصال بينــه وبــين قاعــدة البيانــات الموجــودة علــى TCP/IPاالتــصال

Page 13: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

12

جـــود علـــى الجهـــاز المو1521 بواســـطة فـــتح البوابـــة aria.us.oracle.comالجهـــاز . المذكور

في الجهاز الموجود عليه السيرفر توجد عملية تعمل في الخلفيـة طـوال الوقـت مهمتهـا يمكـن تـشبيه . TNS Listenerاسـتقبال طلبـات االتـصال مـن المـستخدمين وتـسمى

تلــك العمليــة بــأذن كبيــرة مهمتهــا أن تتنــصت علــى الــشبكة لتــرى هــل هنــاك أحــد يطلــب فإذا كان هناك طلب يبحث في مشروعيته أوال فإذا كـان مـن . ر أم الاالتصال بالسيرف

. الجهات المسموح لها بالدخول يقوم بامرار االتصال علــى حــسب إعــداده بالــسماح بفــتح قنــاة اتــصال Listnerيقــوم البرنــامج الــسابق وهــو

إلعـــدادات الـــسيرفر فهـــو يقـــوم بفـــتح عمليـــة مـــن بـــين المـــستخدم وبـــين الـــسيرفر وطبقـــاأو بتوصـيله Didicated Server Processعمليـات الـسيرفر لخدمـة طلـب العميـل

وفــى حالـة نجاحــه فـي تلــك . Shared Serverفـي حالــة Dispatcherبالمـستقبل قد انتهت بفتح تلك القنـاة ويبقـى فـي حالـة تـسمع آخـر Listenerالعملية تكون مهمة

انــات ويكــون بخدمتــه عمليــة مــن بينمــا يكــون المــستخدم قــد اتــصل مباشــرة بقاعــدة البي . عمليات السيرفر كما أوضحنا من قبل

Page 14: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

13

Shared Serverفي حالة Listnerدور الليسنر

يعلم الليسنر بالـضبط المـستقبالت التـي تعمـل علـى الـداتابيز وعنـدما يطلـب المـستخدم ليقـدم االتصال يقوم الليسنر باختيار مستقبل من تلك المستقبالت التـي تعمـل ثـم يعـود

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

. مباشرة بالمستقبل كما يتبين ذلك من الشكل التالي

Page 15: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

14

ن وهــو يوضــح التفاعــل الــذي يــتم بــين والــشكل التــالي هــو توضــيح لمــا تــم ذكــره قبــل اآل المستخدم وبين عمليات السيرفر

Page 16: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

15

Structure Filesاهليكل املادي للملفات يف أوراكل

ببــساطة يمكــن النظــر إلــى أوراكــل ســيرفر علــى أنــه عبــارة عــن مثــال مربــوط بملفــات

ال كمـا ذكرنـا تـشكل الجـزء المـادي مـن قاعـدة البيانـات فالمثـPhysical Filesماديـة تقـسيم واسـتخدام معـين تـستخدمه أوراكـل فـي إدارة (من قبل هو معمارية معينـة للـذاكرة

يــتم فيــه عمليــات تهــدف إلــى ضــمان الوصــول وادارة الملفــات الماديــة المكونــة ) الــذاكرةوهنا سـنتكلم عـن مجموعـة الملفـات التـي تـشكل الجـزء المـادي لقاعـدة . لقاعدة البيانات فـي Data Filesحيـث تـستخدم ملفـات الـداتا . كم فـي فـتح المثـال نفـسهالبيانات وتـتح

التخزين المادي للجداول والفهارس بما تحتويـه مـن سـجالت منظمـة كمـا يمكنهـا أيـضا الــــخ ويتــــولى كاتــــب البلــــوك .. proceduresواإلجــــراءات Viewsتخــــزين المنــــاظير

DBWR .مالت التي تم تأكيـدهاوهو عملية تتم في الخلفية كما سنرى بعد نقل المعا . من مكانها المؤقت بالذاكرة إلى الملفات المادية لقاعدة البيانات

تحوى ملفـات التراجـع واإلعـادة علـى سـجالت مـسجل عليهـا معلومـات كافيـة عـن أيـة تـتم علــى الـداتابيز والمنطــق فـي ذلــك بـسيط وهــو تـسجيل تلــك Transactionمعاملـة

لفـــات األساســـية بحيـــث لـــو حـــدث تلـــف فـــي تلـــك المعـــامالت بـــصورة مـــستقلة عـــن الم يتولى كاتـب Redo Logالملفات يمكن استرجاع التغيرات التي حدثت من ملفات الــ

وهــو عمليــة تــتم فــي الخلفيــة كتابــة التغيــرات التــي حــدثت حيــث يقــوم LGWRاللــوغ بنقـــل الـــسجالت المعبـــرة عـــن تلـــك التغيـــرات مـــن الـــذاكرة الكـــاش والتـــي تعينهـــا أوراكـــل

إلــى ملفــات اللــوغ Redo Log Bufferوتــسمى ) Redoالــوج(معلومــات اإلعــادة لRedo Log Files بـصورة مـستمرة ويوجـد عـادة مجمـوعتين مـن تلـك الملفـات ويبـدأ

إلى الملـف اآلخـر Switchingالكتابة في أحد الملفات فإذا امتلئ تماما يتم التحويل واعــادة الكتابـة علـى الملـف األول بطريقــة وهكـذا فـإذا امتلـئ الملــف اآلخـر يـتم التبـديل

دائرية والسؤال هنا ماذا لو حدث تلف بتلك الملفات؟ أوراكل تتيح وسـيلة حمايـة أيـضا ARCHعــن طريــق أرشــفة تلــك الملفــات قبــل إعــادة الكتابــة عليهــا حيــث تقــوم عمليــة

Page 17: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

16

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

تعـــادل ملفـــات البـــارمتر ملفـــات األوامـــر فـــي نظـــام الـــدوس وهـــى ملفـــات تـــسمح بإعطــاء قــيم تحــدد الطريقــة التــي ســيعمل بهــا مثــال األوركــل بينمــا يلــزم ملــف الــتحكم

Control File وتقـوم أوراكـل بتـسجيل األخطـاء . لفتح قاعـدة البيانـات والتعامـل معهـا Logالتي تحدث أثناء التشغيل وكذلك معلومات التشغيل بصورة تفصيلية في ملفات

& Alert . Filesالشكل التالي يوضح الهيكل المادي ألوراكل وعالقته بالعمليات و .

:والشكل التالي يوضح أنواع الملفات المختلفة التي تشكل قاعدة البيانات

:دي ألوراكل على النحو التاليحيث يمكن تصور هيكل الملفات الما

Page 18: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

17

ملفات البارمترParameter files

SGAيتحكم ملف البارمتر في فتح المثال حيث يعطى التعريفـات الخاصـة بــ وتعيين مساحتها كما يتضمن اسم ملف التحكم الخاص بقاعدة البيانات وأيضا

يوجـد نـوعين مـن و. بأوراكـل فـي الخلفيـةفي وضـع تعريفـات العمليـات الخاصـة SPFILE )Serverوملــف PFILEالملفــات األول يــسمى ملــف البــارمتر

Paramater file.( تقـسم 10g قيمة في كـال مـن الملفـين وفـي أوراكـل 250يمكن تحديد اكثر من

قيمـة ينبغــي تحديـدها وبقيــة 30القـيم إلـى نــوعين أولهمـا أساســي ويحتـوى علــى .تيارات المتقدمةالقيم لالخ

ملف التحكمControl File الملف الرئيسي للتحكم في فتح قاعدة البيانات حيث يحدد ذلـك الملـف مواضـع الملفـــات الماديـــة لقاعـــدة البيانـــات واســـم قاعـــدة البيانـــات ولغـــة قاعـــدة البيانـــات وحجــم البلــوك المــستخدم فــي تخــزين الملفــات باإلضــافة إلــى معلومــات ال غنــى

ليــــات اإلصــــالح واعــــادة اســــترجاع البيانــــات فــــي حالــــة فــــشل قاعــــدة عنهــــا لعموتعتبر ملفات التحكم من األجزاء التي ال يمكن االستغناء فـي قاعـدة . البيانات

:البيانات حيث تقوم بتخزين معلومات حيوية عن الداتابيز ومنها

Physical ھيكل الملفاتStructure

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

Files Dataملفات الداتا

Control Fileملف التحكم

Redo Log Filesملف اللوغ

Parameter Fileملف البارمتر

Password file ملف كلمة السر

Oracle Net

Page 19: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

18

اسم قاعدة البيانات

أسماء ومواقع وحجم ملفات الداتا واللوغ

ستعادة واصالح قاعدة البيانات في حالة وقوع أخطاءمعلومات ال

ملفـــات الــــتحكم يــــتم إنــــشاءها أثنــــاء عمــــل قاعــــدة البيانــــات وفــــى المكــــان الــــذي يحــــدده ومن أجل أهمية الملف يراعى وجود ما . في ملف البارمتر Control Filesالبارمتر

تحكم فـي حيث يتم إنـشاء نـسخ مـن ملفـات الـ Multiplexيسمى ازدواج ملف التحكم أماكن مختلفة ويتم تحديثها أتوماتيكيا بآخر التعديالت والذي تقوم به خصيصا عمليـة

االســـتعالم عـــن Viewيمكـــن مـــن خـــالل . CHKPبأوراكـــل تـــتم فـــي الخلقيـــة تـــسمى يملفات التحكم وه

SQL> select name from v$controlfile;

ملفات الداتا المكونة لقاعدة البياناتData Files

عتبــر ملفــات الــداتا هــي أهــم مكــون مــن مكونــات قاعــدة البيانــات حيــث تحــوى تتلــك . جميــع الجــداول والفهــارس والتــي تخــزن بهــا البيانــات علــى هيئــة صــفوف

الملفــات ال يمكــن قراءتهــا مباشــرة بواســطة أيــة وســيلة مــن محــررات النــصوص اسـتعالم العادية وانما يتم التعامل معها بواسطة أوراكل عـن طريـق تنفيـذ جمـل

إن تلك المعلومة هامة للغاية فإننا ال نملك السيطرة على كيفيـة تخـزين . معينةالــداتا فــي الملفــات الماديــة فهــذا دور أوراكــل ولكننــا فقــط نــستطيع التعامــل مــع

علــــى هيكــــل افتراضــــي مكــــون مــــن SQLالبيانــــات مــــن خــــالل تنفيــــذ جمــــل Tablesداول والتــــــي تنــــــشأ فيهــــــا جــــــ TableSpacesالمــــــساحات الجدوليــــــة

: كما يتضح من الشكل التاليIndexesوفهارس

Page 20: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

19

:يتضح من الشكل السابق ما يلي

الهيكل المادي للملفات مكون من عدة ملفاتData Files وهى ملفـات توجـد . على نظام التشغيل تشكل الوعاء المادي للبيانات

راكـــل حيـــث ال يمكـــن إدارة تلـــك الملفـــات بـــصورة مباشـــرة بـــل تـــتم مـــن خـــالل أوتنـــشئ هيكـــل افتراضـــي للملفـــات مكونـــا بـــصفة أساســـية مـــن مـــساحات جدوليـــة

TableSpaces .

المساحات الجدولية تحوى على الجداول والفهارس والمناظيرViews .

ـــاظير وبواســـط ـــتم تنظـــيم SQL تنفيـــذ جمـــل ةمـــن خـــالل تلـــك الجـــداول والمن ي .البيانات الفعلية وادارتها

واحد أو اكثر من الملفات المادية كل مساحة جدولية تنظم DataFiles.

كل ملف داتـاDataFile يـرتبط بمـساحة جدوليـة واحـدة فقـط بينمـا المـساحات . الجدولية نفسها يمكن أن تكون مرتبطة بأكثر من ملف داتا

ـــى ـــى مكـــان وضـــع الجـــداول أو الفهـــارس عل ـــسيطرة عل ـــا ال ـــا ال يمكن الحـــظ أنن . DataFilesملفات الداتا المادية

Page 21: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

20

أما عن ملفات الداتا نفسها فـأهم مـا يمكـن أن يقـال عنهـا هـو أن كـل ملـف داتـا يخـزن

يدل على آخر SCN) (System Change Numberبه رقم مولد بواسطة أوراكل عمليـة تغييــر حــدثت وتمــت علــى مــستوى قاعــدة البيانــات وهــذا الــرقم لــه أهميتــه الكبيــرة

تغييـــرات ينبغـــي تأكيــــدها وتخزينهـــا علــــى فعـــن طريقـــه يمكــــن ألوراكـــل أن تعـــرف أيــــةالملفــات وبالتــالي فــان ذلــك الــرقم ال يمكــن االســتغناء عنــه فــي حالــة النــسخ االحتيــاطي

. واصالح واستعادة قاعدة البيانات في حالة حدوث أخطاءتللملفابقـــي أن نعـــرف أن ملفـــات الـــداتا يـــتم تحديـــدها وحجزهـــا علـــى نظـــام التـــشغيل بـــالحجم

م تحديـده فـي أمـر إنـشاءها فلـو حـددنا مـثال أن حجـم المـساحة الجدوليـة الكلى والذي تTablespace 100سيكونM فانه سيتم إنشاء وحجز ملف داتا على نظام التشغيل

. الملف ال يوجد به أية بيانات بعدنبنفس القيمة حتى ولو كا ملفات الريدو لوغRedo Log Files

البيانـــات فمـــثال إدخـــال معاملـــة جديـــدة تخـــزن فيهـــا أيـــة تغيـــرات تحـــدث لقاعـــدة New transaction أو التعــديل فيهــا أو إلغاءهــا وهــذه الملفــات أساســية فــي

حالــة فــشل الوصــول إلــى قاعــدة البيانــات فتــستخدم تلــك الملفــات فــي اإلصــالح . واعادة الوضع إلى ما كان عليه

ملف التحكم في كلمة السرPassword File و SYSDBA المـــستخدمين والــذين لهــم صـــالحيات يــستخدم لتــسجيل أســماء

SYSOPR إلدارة لقاعدة البيانات .

Page 22: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

21

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

:مساحات التخزين على نظام التشغيل كالتالي :Segmentالقطاع

ء الـــــذي يـــــشغل حيـــــزا معينـــــا لتخـــــزين بالوعـــــاSegmentيمكـــــن تمثيـــــل القطـــــاع وكما أننا يمكننا نخزن ماءا في وعاء معين فيكـون وعـاء يحتـوى علـى المـاء . البيانات

وربمــا احتجنــا آخــر لتخــزين ســائال آخــر فيــه فيكــون أيــضا وعــاءا لتخــزين الزيــت مــثال تكـون كذلك كل كائن يتطلب تخزينه في قاعـدة البيانـات الوعـاء الخـاص بـه فالجـداول

Table Sgmentمكونة من العديد مـن االمتـدادات القطاعيـة فيكـون لـدينا مـا يـسمى Index Sgmentsوالفهــارس تحتــاج إلــى امتــدادات مختلفــة أخــرى فتمــسى امتــدادها

. وهكذا Rollback Sgmentsومعلومات التراجع تسجل على امتدادات تسمى Extentsاالمتداد

وهــى عبــارة عــن مــساحات تخزينيــة Extentsادات القطاعــات نفــسها مؤلفــة مــن امتــدأن كل قطاع يتـألف علـى األقـل مـن واحـد امتـداد وبعـض القطاعـات تتطلـب . متجاورة

. rollback Segmentأن يكـــون هنـــاك أكثـــر مـــن امتـــداد مثـــل قطـــاع التراجـــع . جيجا 2 بلوك وحتى 1 قد تتفاوت في الحجم من تاالمتدادا Blockالبلوك

وهـــى أصـــغر وحــدة تخزينيـــة يمكـــن حجزهـــا Bloackتكـــون مـــن بلوكــات االمتــدادات تأن البلوكـــات هـــي مـــا ســـوف تخـــزن بـــه أوراكـــل الـــداتا فعليـــا . وتخصيـــصها فـــي أوراكـــل

Physical أن البلوك هو أصـغر وحـدة يمكـن قراءتهـا . في ملفات على نظام التشغيللبلــوك فــي نظــام أو كتابتهــا مــن الديــسك ويالحــظ أن البلــوك فــي أوراكــل يختلــف عــن ا

كيلـــو 32 كيلـــو بايـــت أو 16 أو حتـــى 8 أو 4او 2(التـــشغيل مـــثال فهـــو يتـــراوح بـــين )بايت

Page 23: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

22

كمــا يعبــر الــشكل فــان القطــاع يكــون مــن واحــد أو اكثــر مــن امتــدادExtents و . يتشكل كل امتداد من بلوكات متجاورة

نفـس التكـوين العـام كل بلوك في الداتابيز يكون حجمـا ثابتـا كمـا أن البلوكـات لهـا

: حيث يتكون البلوك كما يوضح الشكل التالي

رأس البلوكBloch Header

o يحتــوى رأس البلــوكHeader علــى معلومــات توضــح نــوع البلــوك ســواء كــان . Index Blockأو بلوك فهرس Table Blockبلوك جداول

Page 24: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

23

o معلومات عن المعاملة الحاليةActive transaction علـى البلـوك والتي تتم . أخر واحدة تمت على ذلك البلوك

o معلومات عن عنوان البلوك على الديسك .

دليل الجداولTable Directory

o يحتــوى الــدليل إن وجــد علــى معلومــات عــن الجــداول والتــي تخــزن صــفوف فــيذلــــك البلــــوك أو مجموعــــة الجــــداول إذا كانــــت أكثــــر مــــن جــــداول تخــــزن علــــى

.صفوف على هذا البلوك

ل الصفوف دليTable Directory

o يحتــــوى علــــى معلومــــات تــــشير إلــــى أمــــاكن وجــــود الــــصفوف فــــي البلــــوك عــــن . الصفوف الموجودة في البلوك

وهــى مــساحة مــن Block Overheadتــسمى العناصــر الــسابقة بــسقف البلــوك أوراكــل فــي إدارة البلــوك نفــسه والبــاقي مــن االبلــوك مخصــصة فقــط لكــي تــستخدمه

.أما أن يحتوى على الداتا نفسها أو جزء فارغ يمكن ملئه مساحة البلوك

:TableSpaceالمساحة الجدولية

يمكـــن تـــشبيهها بوعـــاء كبيـــر حـــاوي لجميـــع القطاعـــات فكـــل قطـــاعSegment يجـــــب أن ينتمـــــي إلـــــى مـــــساحة جدوليـــــة خاصـــــة بـــــه التـــــي تحـــــوى االمتـــــدادات

Extents والتي تحوى البلوكات Block .

علــى المــستوى المــادي كــل مــساحة جدوليــة Phiscal مكونــة مــن واحــد أو أكثــرالـشكل التـالي يوضـح العالقـة بـين . المرتبطة بهـاData Filesمن ملفات الداتا

ــــداتا وأنــــواع الكائنــــات التــــي تحتويهــــا المــــساحة المــــساحات الجدوليــــة وملفــــات ال .الجدولية

Page 25: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

24

: من الشكل التالي نتعلم بعض الحقائق الهامة

ـــــــ تـــــــسمى TableSpaceشكل يتـــــــضح لنـــــــا وجـــــــود مـــــــساحة جدوليـــــــة مـــــــن ال

USER_DATA ملف داتا ) 2( تتكون من الناحية المادية من عددData

Files وهما )user_data01.dbf و user_data02.db .(

المـساحة الجدوليـة الــسابقة تحتـوى علـى ثالثــة قطاعـات وهـى)T1, T2,I1 ( فهـرس ) 1(وعـدد T1, T2ول وهمـا جـدا) 2(من المحتمل انهمـا يكونـان عـدد

I1 ـوهو المعبر عنه ب

امتـــدادات ) 4(المـــساحة الجدوليـــة مخـــصص لهـــا عـــددExtents وكـــل امتـــداد . عبارة عن مجموعة متجاورة من البلوكات

Page 26: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

25

القطاعSegment ( T1) امتداد بحيـث يكـون كـل امتـداد ) 2(يتكون من عددExtentيوجد ماديا على ملف داتا خاص به .

لقطاع ا)T2, I1 ( كال منهما مكون من امتداد وحيد .

بفرض أننا نحتاج إلى زيادة مساحة إضافية فيكون أمامنا أحد أمرين:

o تكبير ملفات الداتا الموجودين بالفعل .

o إضافة ملف داتا جديد إلى المساحة الجدولية.

: للمساحات الجدوليةلإدارة أروا كسلوبا إلدارة االمتدادات داخل المساحة الجدوليـة إال لم يكن هناك أ 8.1.5قبل أوراكل

dictionary‐managed tablespaceبمـــا يعـــرف اإلدارة عـــن طريـــق الكـــاتلوغ ويمكننا تصور تلك الطريقة كما في إدارة حساب لك فـي البنـك حيـث يحتـوى الحـساب

:على جانبين جانب مدين وجانب دائن كما في الشكل التالي

لجانب الدائنا الجانب المدين

ــــدادات ــــع االمت ــــتم وضــــع جمي Extentsي المخصصة للكائن كجداول مثال

جميع االمتدادات المتاحة من النظام

عنــدما يحتــاج الكــائن لمــساحة إضــافية يــتم طلــب ذلــك مــن أوراكــل والتــي تــصدر أمــر بحث عن المساحات المتاحة والتي يمكن إعطاءها للكائن وذلك عن طريق تنفيذ عـدة

وفــى هــذه الحالــة تعــدل الجــداول Dictionary tables علــى الكــاتلوغ SQLجمــل الخاصـــة بالكتـــالوغ بنتـــائج البحـــث عـــن المـــساحات الخاليـــة وربمـــا تـــضاف أو تلغـــى أو

يـؤدى أداء . تحدث صفوف إلى بعض الجداول الموجودة في الكتالوغ الخاص بأوراكل كبيــرا علــى ؤثر تــأثيراذلــك بــصفة مــستمرة إلــى وجــود عــبء علــى النظــام ممــا كــان يــ

مــــن أوراكــــل قــــدمت أوراكــــل أول مــــرة مفهــــوم 7.3فــــي اإلصــــدار . اعتبــــارات الكفــــاءة

Page 27: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

26

والتــي ال يمكــن عمــل أيــة Temporary TableSpaceالمــساحة الجدوليــة المؤقتــة المتاحـة Extentsكائنات بصورة دائمة عليها وهنا خصصت أوراكـل كـل االمتـدادات

بتنفيـذ ل وعندما يطلب أي كائن مساحة إضافية تقـوم أروا كـإلى تلك المساحة المؤقتةجمـــل فـــي الكـــاتلوغ ويـــتم البحـــث عـــن المـــساحات الخاليـــة وتـــضاف إلـــى تلـــك المـــساحة الجدوليــة المؤقتــة وتظــل فيهــا فــإذا مــا احتــاج الكــائن أو غيــره إلــى مــساحة إضــافية تبــدأ

في الذاكرة فـإذا وجـدتها بالبحث في الذاكرة عن مساحات خالية من االمتدادات لأوراكويعيـب األسـلوب . تقوم باستغاللها واذا لم تجدها فإنها ترجع الستخدام األسلوب القديم

الـــسابق بـــان المـــساحة الجدوليـــة المؤقتـــة ســـرعان مـــا تـــشغل وبالتـــالي تـــؤثر علـــى أداء . النظام

locally وهـو اإلدارة المحليـة 8.1.5قدمت أوراكل مفهوم جديد ابتداء مـن اإلصـدار

managed tablespace فــي مقابــل إدارة المــساحات الجدوليــة عــن طريــق الكــاتلوغdictionary managed الـسابق فيقـوم األسـلوب الجديـد علـى أن المـساحة الجدوليـة

TableSpace تقـــوم بـــإدارة االمتـــداداتextents الخاصـــة بهـــا حيـــث يـــتم االحتفـــاظ البلوكـــات المخزنـــة علـــى تلـــك علـــى كـــل ملـــف داتـــا لتـــدل علـــى حالـــة Bitmapبقيمـــة

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

Redo Log Filesالتراجع أو اإلعادة ملفات

فهـي تحـوي سـجالت العمليـات التـي تعتبر تلك الملفات حيوية بالنسبة لقاعدة البيانـاتتمت على قاعـدة البيانـات وال تـستخدم تلـك الملفـات إال فـي عمليـات إصـالح واسـتعادة أيــة أخطــاء فــي قاعــدة البيانــات فعلــى ســبيل المثــال لــو حــدث انقطــاع التيــار الكهربــائي عن الجهاز الموجود به السيرفر فان ذلك سيسبب في األغلـب فـي حـدوث أخطـاء فـي

OnLine Redoوهنـا تـستخدم أوراكـل ملـف التراجـع Instance Failureل المثـا

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

Page 28: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

27

فــات التراجــع أن نعيــد مــا فقــد مــن نــسخة احتياطيــة لقاعــدة البيانــات باإلضــافة إلــى مل .بيانات

ONLINE Redoكـل عمليـة تقريبـا تـتم فـي أوراكـل يـتم تـسجيلها فـي ملفـات الريـدو فعلى سبيل المثال عندما ندخل صفا جديدا أو عندما نلغي صـفا فـإن ذلـك يـسجل فـي

يوجد نوعين من ملفات الريدو وهما . ملفات الريدو ملفات التراجعOnline Redo Log

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

. لملــف األول وهكــذاالملــف الثــاني وفــى حالــة امتالئــه يــتم إعــادة الكتابــة علــى ا :كما يتضح من الشكل التالي

Page 29: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

28

Switchتــــسمى عمليــــة االنتقــــال مــــن اللــــوغ إلــــى اللــــوغ اآلخــــر بالتبــــديل أو التحويــــل Log0 ولفهم كيفية عمل ملفـات الريـدو فإنـه يتعـين علينـا فهـم عمليـة التأكـد Check

pointing (CHKP) وكاتب البلوكDatabase Block Writer (DBWn) . دأ قـــصتنا بجـــزء معـــين مـــن الـــذاكرة الكـــاش تـــسمى الـــذاكرة المؤقتـــة لتخـــزين بلوكـــات تبـــ

والتــــي تمثــــل منطقــــة معينــــة مــــن الــــذاكرة Database buffer cacheالــــداتابيز تــستخدمها أوراكــل فــي تخــزين بلوكــات قاعــدة البيانــات المــراد التعامــل معهــا حيــث يــتم

م التعامــل معهــا فــي تلــك المنطقــة مــن اســتدعاء بلوكــات الــداتا مــن الملفــات الماديــة ليــتويـــتم بـــالتوازي تـــسجيل معلومـــات كافيـــة عـــن تلـــك . الـــذاكرة ســـواء بـــالقراءة أو التعـــديل

تـــسمى الـــذاكرة المؤقتـــة للريـــدو لـــوغ SGAالتعـــديالت فـــي منطقـــة أخـــرى مـــن الـــذاكرة redo log buffe وعنـــدما تـــتم التعـــديالت ويـــراد تأكيـــدها وذلـــك بإصـــدار األمـــر

Commitن أوراكــــل ال تبــــدأ فــــي الحــــال بكتابــــة البلوكــــات المعدلــــة علــــى الملفــــات فــــا مرة أخرى بل تنتظر قليال حيث يتم أوال نقل المعلومات الخاصـة Data filesالمادية

ONLine إلــى ملــف الريــدو Redo Log Bufferبالتعــديالت مــن ذاكــرة الريــدو

Redo Log تــب اللــوغ بواســطة عمليــة ألوراكــل تــتم فــي الخلفيــة تــسمى كاLGRW كما يوضحه الشكل التالي

Page 30: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

29

وبعد إتمام تلك العملية بنجـاح يـتم نقـل التعـديالت مـن الـذاكرة المؤقتـة لتخـزين بلوكـات ذلــك ة إلــى ملفــات الــداتا حيــث تتــولى مــسؤوليDatabase buffer cacheالـداتابيز

.DBWRعملية أخرى تعمل في الخلفية تسمى

هــو تجنــب اآلثــار الناتجــة عــن فــشل المثــال فجــأة والمنطــق فــي هــذا التــصرف بــسيطكحالة انقطاع التيار الكهربائي عن الـسيرفر فبوجـود ملـف الريـدو فإنـه فـي تلـك الحالـة يـــتم االســـتعانة بمعلومـــات التراجـــع الموجـــودة بـــه حيـــث ســـتقوم أوراكـــل بـــشكل تلقـــائي

بملفــات التــي لــم تــتم بــشكل صــحيح باالســتعانة Transactionsبإرجــاع المعــامالت الريـــدو ثـــم تقـــوم مـــرة أخـــرى بمحاولـــة التعـــديل فـــي البلوكـــات ثـــم تـــتم العمليـــة بنقـــل تلـــك

ولكـن مـا العمـل فـي حالـة . التعديالت إلى الملفات المادية فتتم بذلك تأكيد التعـديالت Dirty بالبلوكات المعدلـة وتـسمى Database buffer cacheامتالء ذاكرة الكاش

Buffer .عملية هامة للغاية تتم في الخلفية بدون أن يـشعر المـستخدم هنا يأتي دور لـــة التحقـــق والتـــي تتأكـــد مـــن مـــدى CHKP (Checkpoints( بوجودهـــا وهـــى عملي

امــتالء ذاكــرة الكــاش فــإذا وصــلت إلــى حــد معــين وجــب تفريــغ تلــك الــذاكرة الســتقبال لفــات الماديــة بلوكــات جديــدة ويــتم تفريــغ ذاكــرة الكــاش بنقــل البلوكــات المعدلــة إلــى الم

CHKPثـم بعــد إتمـام النقـل تقـوم عمليـة التحقــق ) DBWR(وهـو دور كاتـب البلـوك يـؤدى إلـى تنـشيط عمليـة التحقـق وهـو عـادة Eventيوجـد حـدث . بإتمام تفريغ الذاكرة

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

االســتخدام بواســطة معلومــات التراجــع المــسجلة فــي ملــف الريــدو لــوغ فــإذا مــا حاولنــا : إعادة استخدامها فان رسالة تظهر كالتالي

Page 31: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

30

وهــذا يعنــى أن كاتــب اللــوغ لــم ينتــه مــن عملــه بعــد وقــد امتلــئ ملــف اللــوغ فــال يــستطيع ديدة وهنا يكون على مدير قاعدة البيانات أن يزيد بقـدر المـستطاع استقبال سجالت ج

. من سعة ملفات الريدو لوج :Archived Redo Logملفات اللوغ االحتياطية

يمكــن أن تعمــل قاعــدة البيانــات بإحــدى أســلوبين وهمــا إمــا عــدم الــسماح بتكــوين نــسخ ويـسمى Online Redo Log احتياطيـة علـى الديـسك مـن ملفـات اإلعـادة والتراجـع

أو بالسماح بتخزين وأرشفة الملفـات الـسابقة NOARCHIVELOGالوضع بـ ذلك وهو الوضع المحبذ لتخفيض ARCHIVELOGقبل إعادة الكتابة عليها من جديد

. احتماالت فقد البياناتإال ما ال نهايـة Online Redoإن أوراكل ال يمكنها السماح بتكبير حجم ملف اللوغ

ن تعيد الكتابة عليه بعد امتالئه وقلنا مما سبق أن ملفـات اللـوغ ال غنـى عنهـا فالبد واإذا لـم يكـن ملـف اللـوغ . في حالة اإلصالح فما العمل في حالة تلف ملـف اللـوغ نفـسه

فـــي حالـــة لموجـــودا فانـــه ال مفـــر ســـوف تفقـــد الكثيـــر مـــن الـــداتا ولـــذلك تعمـــل أروا كـــArchivelog ملفــات التراجــع وتحــرص علــى تجديــدها أن تكــون نــسخ احتياطيــة مــن

كمــا يتــضح مــن الــشكل Online Redo logباســتمرار تحــسبا لتلــف ملفــات اللــوغ :التالي

Page 32: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

31

Processesالعمليات

تمثل العملية سلسلة من األوامر أو الخطوات التي يـتم تنفيـذها بـصورة متابعـة وتحجـز مكانا خاصا بها في الذاكرة حيث يتم تنفيذها وفى ب يئـة العمـل التـي تتميـز بالعديـد مـن

المــستخدمين يعلمــون فــي نفــس الوقــت يــتم تنفيــذ العديــد مــن العمليــات فــي نفــس الوقــت ). كل منها يعمل بصورة مـستقلة عـن األخـرى وتقريبـا فـي نفـس الـزمن(بصورة متوازية

يمكن بصورة عامة وضع تـصور عـام لمـا تقـوم بـه أوراكـل مـن مهـام وعمليـات رئيـسية :لنحو التاليعلى ا عمليات تهدف إلـى خدمـة طلبـات المـستخدمProcesses servicing user

requests

عمليــات تقــوم بكتابــة البيانــات علــى ملفــات الــداتابيزProcesses writing

data to the data files

ـــــرات تحـــــدث ـــــة أحـــــداث أو تغيي ـــــسجيل أي ـــــوم بت ـــــات تق Processesعملي

recording transactions in log files

عمليات تقوم بمراقبة أداء قاعدة البيانات ومحاولـة اكتـشاف األخطـاء وعالجهـاProcesses monitoring the functioning of the database

تقــــــــــــــــــــوم

Page 33: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

32

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

سوف تأمر تلك المجموعة من العمليات كـي تقـوم بربطـك بقاعـدة البيانـات ثـم تحـضر مـــا طلبتـــه مـــن معلومـــات واذا مـــا قمـــت بتعـــديالت أو تحـــديثات فإنهـــا تـــأمر باســـتدعاء عمليات أخرى لتسجل تلك التعديالت في مناطق خاصـة فـي الـذاكرة تمهيـدا لنقـل تلـك

.التحديثات فيما بعد إلى الملفات الخاصة بالداتابيز مــن تلـــك العلميــات فهـــي تعنــى بوضــع وكتابـــة البيانــات علـــى المجموعــة الثانيـــةأمــا

فكمـــا قلنـــا مـــن قبـــل فـــان المعلومـــات تخـــزن Data Filesالملفــات المكونـــة للـــداتابيز تنقـل بواسـطة ثم Shared Memory مبدئيا في مناطق تحددها األوركل في الذاكرة

تلك العمليات بعد وقت معـين إلـى الملفـات ويـتم إخـالء المنطقـة لتـوفير قـدر اكبـر مـن .مساحة الذاكرة

بكتابــة مــا يحــدث علــى البيانــات مــن تعــديالت فــي ملفــات المجموعــة الثالثــةوتخــتص اللــوغ حيــث تــسمح تلــك الملفــات باســتعادة آخــر مــا تــم علــى البيانــات مــن تعــديالت فــي

الوصول إلى الداتابيز والذي يحدث نتيجـة العديـد مـن األسـباب ومنهـا تلـف حالة فشل . وحدات التخزين

أية إدخال جديد لبيانات ( Transactionإن أوراكل تسجل كل معاملة وعليه ف

Logفــي ملفــات اللــوغ ) أو التعــديل فــي بيانــات موجــودة ســواء باإلضــافة أو باإللغــاء

Files الــداتا وفــى حالــة فقــدان أيــة مــن ملفــات الــداتا وهــى ملفــات مــستقلة عــن ملفــات المكونـــة للـــداتابيز أو فـــشل التعامـــل معـــه فـــيمكن اســـتدعاء ملـــف اللـــوغ للمـــساعدة فـــي عمليــات اإلصــالح حيــث يمكــن اســتدعاء نــسخة احتياطيــة مــن ملــف الــداتا وتطبيــق مــا هو موجود في ملف اللوغ من آخر معامالت حتى يمكـن اسـتعادة الوضـع إلـى مـا هـو

.عليه . وتختص آخر مجموعة من العمليات بمراقبة أداء الداتابيز

Page 34: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

33

تقــسم العمليــات التــي تقــوم بهــا أوراكــل إلــى نــوعين أساســين مــن وجهــة المــستخدم

: الذي يريد االتصال بأوراكل

واذا نظرنــا إلــى المــستخدم الــذي يريــد االتــصال بقاعــدة البيانــات نجــد أن هنــاك نــوعين خصصين لضمان اتصال المستخدم بمثـال األوركـل وبالتـالي لالتـصال من العمليات م

يقــوم المــستخدم بتــشغيل تطبيــق ولــيكن مــثال برنــامج . بقاعــدة البيانــات والتعامــل معهــالــشؤون األفــراد والــذي يتطلــب الحــصول علــى داتــا مــن قاعــدة البيانــات فتقــوم األوركــل

حيـــث تقـــوم تلـــك User Processبتـــشغيل عمليـــات خاصـــة لخدمـــة هـــذا المـــستخدم العلميات بعمل قناة اتصال تسمح بربط المستخدم بمثال األوركل وعندما يـتم فـتح تلـك

علـى سـيرفر األوركـل Server Processالقناة تقوم أوراكل بتـشغيل عمليـات إضـافية فعليا عن تعامل المستخدم مـع قاعـدة البيانـات ويتـضح ذلـك ةنفسه والتي تكون مسؤول

:ليمن الرسم التا

Processes

User Process Server Process

Page 35: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

34

:كما يتضح من الشكل السابق اآلتي

المـــستخدم يبـــدأ فـــي تـــشغيل تطبيـــق يحتـــاج إلـــى قاعـــدة البيانـــات فتبـــدأ عمليـــات .User Processالمستخدم في التشغيل

تقــوم عمليــات المــستخدمUser Process باالتــصال بعمليــات الــسيرفر علــى ــذاكرة ــاة اتــصال وتــسجل منطقــة خاصــة فــي ال بيانــات PGAالــسيرفر لفــتح قن

. االتصال ومعلومات المستخدم

بمجرد تأكيد االتصال يتم التعامل المباشر بين المستخدم وقاعدة البيانـات عـن Oracle والتي تتعامل مع المثال Server Processطريق عمليات السيرفر

Instanceو تكون في خدمته .

:العمليات التي تعمل بهدوء في الخلفيةOracle Processes In Background

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

كمــا تراقــب أداء الوظــائف والعمليــات األخــرى مــن أجــل تحــسين I/oالــداتابيز والعكــس ا خمــسة عمليــات ال غنــى عنهــا والبــاقي يعتمــد علــى خيــارات إعــداد األداء ويوجــد منهــ :أوراكل للعمل وهي

Page 36: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

35

:وظيفة كتابة الداتا إلى الملفات .1

: يوجد نوعين رئيسين من العمليات التي تختص بتلك الوظيفة الهامة أولهما

كاتب الداتاDatabase Writer )DBWRn(

المعدلــة مــن الــذاكرة إلــى حيــث تقــوم تلــك العمليــة بكتابــة بلوكــات البيانــات الملفات المكونة للداتابيز كما يظهر في الشكل التالي والذي يوضـح انتقـال

إلــى الملفــات Database Buffer cacheالبيانــات مــن الــذاكرة المؤقتــة ويالحــــظ أنــــه بالنــــسبة Data files0الماديــــة المكونــــة لقاعــــدة البيانــــات

يعمـل فـي الخلفيـة لتفــادي للمـستخدم يمكـن أن يكـون هنـاك اكثـر مـن كاتـب . اإلختناقات التي ممكن أن تحدث أثناء انتقال البيانات

وظيفة التحقق Checkpoint (CKPT)

ورأس ملفــات الــداتا Control Fileتقــوم تلــك الوظيفــة بتحــديث ملــف الــتحكم Data files والمكونــة لقاعــدة البيانــات بــرقم يــسمىSystem Change

Number (SCN)قــم يــتم توليــده مــن النظــام ليــدل علــى آخــر معاملــة وهــو رإن هـــذه الوظيفـــة تفعـــل تلقائيـــا بنـــاء علـــى . تمـــت بنجـــاح علـــى قاعـــدة البيانـــات

والــذي يحــدث كلمــا حــدث تبــديل للكتابــة Checkpointحــدث يــسمى التحقــق . بين ملف لوغ إلى ملف لوغ آخر

كاتب اللوغ/ (LGWR) Log Writer

Page 37: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

36

التـي حـدثت مـن المنطقــة Transactions عـن نقـل المعـامالت وهـو المـسئول إلـــى Log Bufferالمؤقتـــة بالـــذاكرة الخاصـــة بتـــسجيل التغيـــرات التـــي تمـــت

ملفــــات اللــــوغ ويتبــــع ذلــــك انــــه معنــــي بتحديــــد أي مــــن ملفــــات اللــــوغ المــــستعدة عـن التأكـد مـن نقـل نـسخ التعـديالت الستقبال تلك التغيـرات كمـا يكـون مـسؤوال

اللــوغ إلــى ملفــات األرشــيف قبــل إعــادة الكتابــة علــى ملــف اللــوغ مــن مــن ملــف إضـــافية لتوليـــد آخـــر رقـــم تغييـــر CHKPواذا لـــم تكـــن هنـــاك عمليـــات . جديـــد

فــان كاتــب اللــوغ فــي هــذه الحالــة يحمــل بجهــد إضــافي فــي توليــد SCNحــدث . الرقم وتعديل رأس ملفات الداتا

كاتب األرشيف) ARCH( مــن ملفــات اللــوغ إلــى ملفــات ةركــز فــي عمــل نــسخ احتياطيــمهمتــه األساســية تت

تبــدأ تلــك الوظيفــة عنــدما . األرشــيف والتــي تحفــظ علــى شــريط أو ديــسك آخــر log Alterتكــون الــداتابيز فــي وضــعية األرشــيف وذلــك عــن طريــق األمــر

System Archive أو أتوماتيكيا عندما يتم فتح مثال األوركل بواسطة ملـف log_archive_start = true يكون موجودا فيه البارمتر البارمتر والذي

Page 38: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

37

: Monitoring Processesوظائف الرقابة ومتابعة األداء .2) SMON( توجــد ثالثــة عمليــات رئيــسية فــي تلــك المجموعــة فآمــا األولــى فهــي

ودورها تحرير مثال األوركل من أيـة اختناقـات وأخطـاء أثنـاء بـدء تـشغيل المثـال فهـي الوظيفـة التـي ) PMON(وقت يتطلب ذلك أمـا الوظيفـة الثانيـة أو في أي

دورها تحرير ومسح ما ينجم عن فشل أية عملية من عمليات المستخدم

مراقبة النظامSystem Monitor )SMON(

وظيفة العمليـة مراقبـة مثـال األوركـل والتعامـل مـع أيـة أخطـاء تحـدث نتيجـة فـتح ل المثــال بالتأكــد مــن فــتح المثــال قــد تــم بــصورة المثــال فهــي علــى تقــوم علــى ســبي

طبيعية واذا لم يكن تحاول إجـراء إصـالح واسـتعادة الوضـع عمـا كـان عليـه قبـل ShutDownحدوث الخطأ فإذا لم يكن المثال قـد تـم إغالقـه بـصورة طبيعيـة

normal فإنه قـد يكـون هنـاك بعـض المعـامالت والتـي تـسجل بعـد علـى ملفـات ي تتطلـــب إعـــادة االســـترجاع وتحريـــر عمليـــات الفهرســـة ونقـــل تلـــك الـــداتا وبالتـــال

Page 39: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

38

Temporary Segmentsالمعــامالت كمــا ينبغــي تحريــر القطاعــات المؤقتــة . ونقل ما عليها إلى ملفات الداتا وهكذا

كما يتضح من الشكل فالوظيفة السابقة معدة لكـي تعمـل فـي حالـة إذا مـا كـان ير واإلخالء فمثال تقوم الوظيفة بـالتحقق مـن المثال في حاجة إلى بعض التحر

وجــــود قطاعــــات مؤقتــــة غيــــر مــــستغلة فتقــــوم بتحريــــر تلــــك المــــساحات ودمــــج Databaseالمساحات كما تعمل الوظيفة أيضا في حالة احتياج كاتب الداتا

Writer إلــــى مــــساحات مؤقتــــةTempory Sgments فهــــو يطلــــب مــــن . المستغلة الالزمة ألداء عمله بكفاءةالوظيفة تحرير واخالء بعض المساحات

Page 40: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

39

مراقب العملياتProcess Monitor ) PMON( يخـــــصص وقتـــــه كلـــــه لعمليـــــة اإلخـــــالء والتحريـــــر بعـــــد إتمـــــام عمـــــل عمليـــــات

:فهي على سبيل المثال تقوم بالتالي User Processesالمستخدم إزالة أرقام العمليات التي انتهت. إخالء وازالة أية أقفالLocks تكون قد عملتها تلك العمليات. إزالــة واخــالء أيــة عناصــر مــن ذاكــرة الكــاش تكــون ناتجــة عــن عمليـــات

. سابقة

Page 41: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

40

Memory Structureهيكلية الذاكرة تــستخدم أوراكــل معماريــة وتقــسيما معينــا للــذاكرة فــي الــسيرفر الــذي يحتــوى علــى قاعــدة

مـن العمليـات فـي الـذاكرة علـى البيانات وتمكـن تلـك المعماريـة مـن أن تعمـل مجموعـة . تأمين وصول العديد من المستخدمين إلى قاعدة البيانات والتعامل معها بشكل فعال

:تتكون معمارية الذاكرة ألوراكل كما يتضح من الشكل التالي منطقة النظام الشاملةSystem Global Area (SGA)وتتكون من :

o الذاكرة المؤقتة لتخزين بلوكات الداتابيز Database buffer cache o الذاكرة المؤقتة لتخزين الرييدو لوغRedo Log buffer o المنطقة المشتركةShared pool o المنطقةLarge pool

منطقة البرامج الشاملةProgram Global Areas (PGA)وتتكون من : o Stack areas

o Data areas

:التالي وتتضح معمارية الذاكرة وعالقتها بالعمليات في الشكل

:) SGA ) ◌System Global Areaمنطقة النظام الشاملة

Page 42: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

41

كــل مثــال مــن أوراكــل يتكــون مــن جــزء ضــخم مــن الــذاكرة تعينــه أوراكــل يــسمى منطقــة فيـــه كـــي لويـــتم إجـــراء عمليـــات أروا كـــ System global Areaالنظـــام الـــشاملة

خـذ تلـك المنطقـة حيـزا وتأ. يستطيع العديد من المستخدمين التعامل مع قاعدة البيانـاتمن الذاكرة يتراوح بين عدد محدود من الميجا بايت في حالة قاعدة البيانـات ألغـراض

تتكـون . االختبار بينما يبلغ فـي األنظمـة الكبيـرة المعقـدة مـساحات تقـدر بالجيجـا بايـتمنطقــة النظــام الــشاملة مــن مجموعــة مــن منــاطق الــذاكرة والتــي يــتم مــشاركتها مــن قبــل

:خدمين والرسم التالي يوضح ذلكالمست

o منطقة الجافاJava Pool : JVMمقدرا ثابت من الذاكرة يخصص للجافا التي تعمل على قاعدة البيانات

o منطقةLarge Pool:

علـى Sessionتخصص تلك المنطقـة لعمليـات دخـول العديـد مـن المـستخدمين ـــــامج ـــــستخدمها برن ـــــات كمـــــا ي ـــــة RMANقاعـــــدة البيان ـــــي عملي ـــــسخ ف اخـــــذ الن

. االحتياطيةo منطقةShared Pool :

تحتوى تلك المنطقة على اإلجراءات التي يتشارك فيها العديد من المـستخدمين Shared Procedures و معلومـــات الكـــاتلوغdictionary caches و

الخ.... الكيرسور

Page 43: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

42

:SGAوالجدول التالي يوضح أهم البارمتر التي تؤثر على تحديد شكل

التأثير رمترالبا

JAVA_POOL_SIZE تحدد حجم منطقة الجافا

SHARED_POOL_SIZE تحدد حجم المنطقة المشتركةShared Pool

LARGE_POOL_SIZE تتحكم في حجم منطقةLarge Pool

DB_BLOCK_BUFFERS تحدد حجم ذاكرة الكاش لبلوكات الداتابيز

LOG_BUFFER تحدد حجم ذاكرة اللوغ

Fixed SGAددة الحجم منطقة مح

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

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

:SGAولننتقل اآلن للتعرف على أقسام منطقة النظام الشاملة

الذاكرة المؤقتة لتخزين بلوكات الداتابيزDatabase buffer cache الذاكرة المؤقتة لتخزين الرييدو لوغRedo Log buffer

Page 44: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

43

Database buffer cacheالداتابيز الذاكرة المؤقتة لتخزين بلوكات المخصـصة لتخـزين بلوكـات قاعـدة غرفة الكـاشنحن اآلن نزور أكبر وأهم قسم إنهـا

يمكننا تصور عملهـا كـساحة انتظـار أو . مؤقتاDatabase buffer cacheالبيانات نــزل بــين المــستخدم وبــين ملفــات الــداتا المكونــة لقاعــدة البيانــات ففيهــا تنتظــر بــصورة

قتة بلوكات الداتا والمكونة من سـجالت مـن الجـداول المختلفـة التـي يـتم اسـتدعاءها مؤلحــساب مــستخدم معــين أو البلوكــات التــي ســيتم إرجاعهــا مــرة أخــرى إلــى الملفــات بعــد

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

نتيجـــة تنفيـــذ جمـــل اســـتعالم وغيرهـــا ولـــو كـــان الحجـــم أكبـــر مـــن الـــالزم فـــسنرهق بقيـــة !. عمليات أوراكل وربما ال تعمل من األصل تـــسع للكـــل يبـــدو القـــرار صـــعبا وهـــو أمـــاكنوحيـــث أن ســـاحة االنتظـــار ال توجـــد بهـــا

.قبال قادمين جددمحاولة طرد بعض النزالء واستهنا تتخذ أوراكل القرار الصعب وفقا لمنطق بسيط وهو أن يبقـى كـل مـا كـان لـه فائـدة

فتنـــشئ أوراكـــل قائمـــة تـــسمى األكثـــر وعنـــدما يـــستدعى LRU0ويرحـــل مـــن ال يعمـــل سجل من قاعدة البيانات بواسطة جملة استعالم فإنه يذهب مباشرة إلى منطقة الـذاكرة

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

الكاش ببلوكات جديدة نتيجة جمل استعالم أخرى وأوشـك الكـاش علـى االمـتالء تمامـا فان أوراكل تتخذ قرارا بناء على النظر في القا ئمة السابقة بإعادة الكتابة علـى األجـزاء

. الغير مستخدمة حاليايتولى كاتب البلوك وهو عملية من عمليات األوركل التي تعمل في الخلفية كما ذكرنـا

و المكونــة لقاعــدة Data Filesمــن قبــل بكتابــة تلــك البلوكــات إلــى الملفــات الماديــة إلعادتهــا إلــى الملفــات بواســطة الكاتــب البيانــات وهنــا تــدار تلــك البلوكــات التــي تحتــاج

DBWR ويطلق عليها مصطلح Dirty Blocks.

Page 45: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

44

:Redo Log bufferالذاكرة المؤقتة لتخزين الرييدو لوغ قبـل نقلهـا بواسـطة كاتـب Redoتخزن فيها بـصورة مؤقتـة معلومـات التراجـع واإلعـادة

مــل مــع وحيــث أن التعاOnLine Redo Log إلــى ملفــات الريــدو LGWRالــوغ ــــذاكرة المؤقتــــة الــــذاكرة يكــــون أســــرع مــــن التعامــــل مــــع الديــــسك فــــان اســــتخدام تلــــك ال

أن الداتا لن تبقـى فـي . لمعلومات التراجع يؤدى إلى سرعة التعامل مع قاعدة البياناتتلك المنطقـة لالبـد وفـى الحقيقـة فـان محتويتهـا تفـرغ كـل ثـالث ثـوان أو عنـدما يـصدر

حجــم تلــك المنطقــة مــن . حالــة امتالءهــا بثلــث حجمهــاأو فــي Commitأمــر التأكيــد ويعتبـــــر الحـــــد األقـــــل مـــــن تلـــــك LOG_BUFFERالـــــذاكرة يـــــتحكم فيـــــه البـــــارمتر

عــن تالمــساحة هــو أربعــة أضــعاف حجــم بلوكــات الــداتابيز ويمكــن تقــديره بــالكيلو بايــ )CPUsعدد * 128( طريق المعادلة :Java Poolمنطقة الجافا

ــداتاتخــزن فيهــا بــصورة مؤق تــستخدم تلــك المنطقــة . تــة كــل مــا يتعلــق بــأكواد الجافــا والبطـــرق مختلفـــة ويتوقـــف ذلـــك علـــى األســـلوب الـــذي يعمـــل بـــه الـــسيرفر وتوجـــد وســـيلة

عـــن طريقـــة اســـتخدام تلـــك المنطقـــة للـــذاكرة وتتنبـــأ بمـــدى تألوراكـــل تعطينـــا إحـــصائيا عنــدما يكــون البــارمتر تــأثير التغييــر فــي حجــم تلــك المنطقــة علــى األداء وتفعــل تلقائيــا

statistics_level على الوضعTYPICAL :Shared Poolالمنطقة المشتركة

والتي تؤثر علـى أداء النظـام SGA ـتعتبر تلك المنطقة من الذاكرة من أهم مناطق الككــل فــصغر حجــم تلــك المنطقــة عــن الحــد المعقــول يــؤدى التــي تقليــل األداء بدرجــة

ام تماما بينما تخصيص حيـز أكبـر مـن الحـد المالئـم يـؤدي ملحوظة وربما تعطل النظإنهــا ببــساطة المكــان الــذي تخــزن فيــه . ولكــن مــا هــي تلــك المنطقــة. إلــى نفــس الكارثــة

أوراكــل بــصفة مؤقتــة األكــواد والبيانــات الخاصــة المتعلقــة بــالبرامج فعلــى ســبيل المثــال سـتعالم تلـك وتحقـق مــن عنـدما ننفـذ جملـة اسـتعالم فـإن أوراكـل ســوف تجهـز جملـة اال

سالمة األمر ثم ترى هل يوجـد اسـتعالم آخـر بـنفس الـصيغة وتخـزن نتـائج ذلـك مؤقتـا اتـصال بقاعـدة البيانـات وكلهـا 1000لو فرضنا أن هناك أكثـر مـن . في تلك المنطقة

Page 46: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

45

فــالمطلوب فقــط هــو نــسخة واحــدة توضــع فــي تلــك SQLتنفــذ نفــس جملــة االســتعالم . يتم إجراءها على الكل ويتم تشارك نتائجهاالمنطقة بصورة مؤقتة ثم

أوراكـل أيـضا . والتي يتم تنفيـذها تخـزن أيـضا فـي تلـك المنطقـةPL/sqlأن اكواد لغة تخزن بصورة مؤقتة جميع البارمتر الخاصة بالنظام في تلك المنطقة كما تخـزن أيـضا

وبعبــارة . فــي تلــك المنطقــة أيــضاThe data dictionaryمعلومــات عــن الكــاتلوغ وســندرس . أخــرى إنهــا بمثابــة المطــبخ الــذي يــتم طــبخ كــل الــداتا المتعلقــة بــاألكواد فيــه

:منها التاليo منطقةThe Library Cache

المتــشاركة فهنــا تخــزن بــصورة خطــة تنفيــذ جمــل SQLتــستخدم لتخــزين جمــل ولـو كانـت هنـاك . لكـل جملـة parse tree and the executionاالسـتعالم ـــة فـــإن تلـــك المنطقـــة تـــشارك نفـــس عـــدة مـــن ال تطبيقـــات أصـــدرت نفـــس الجمل

الجملة لتقليل حجم الذاكرة فيما لو تم إصدار نفس الجملة لعدة تطبيقـات علـى . حدة

o منطقة تخزين معلومات الكاتلوغThe Data-Dictionary Cache

يحتوى الكتالوغ على مجموعة من الجداول والمنـاظير والتـي تـستخدمها أوراكـل رة قاعـــدة البيانـــات حيـــث تخـــزن فـــي تلـــك الجـــداول معلومـــات عـــن الهيكـــل إلدا

:المادي والهيكل االفتراضي لقاعدة البيانات ومن أمثلتها معلومات عن صالحيات المستخدمuser privileges معلومات عن قيود الجداول الموجـودة بقاعـدة البيانـاتIntegrity

constraints ة للجــداول الموجــودة بقاعــدة البيانــاتأســماء األعمــدة ونوعهــا المكونــ

columns in database tables معلومــات عــن حجــم المــساحات المخصــصة لكــل مخطــط space

allocated and used for schema objects

Page 47: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

46

لالسـتعالم SQLوأوراكل على اتصال دائم بالكتاوج من خـالل تنفيـذ جمـل ة كافيـــة مـــن والتعـــديل فـــي تلـــك البيانـــات فـــاحرص علـــى تخـــصيص مـــساح

الذاكرة للتخزين المؤقت لتلك البيانات الن ذلك يؤثر تأثيرا كبيرا في االداء . :The Program Global Area (PGA)منطقة البرامج

تحتـــوي تلـــك المنطقـــة علـــى الـــداتا ومعلومـــات الـــتحكم عـــن عمليـــات الـــسيرفر وحجمهـــا دها وتتكــون مــن المنــاطق ومكوناتهـا تتحــدد بنــاء علــى اختيــارات الــسيرفر التــي تــم تحديــ

:التالية ـمنطقة ال Stack space:

وكـــذلك session's variablesتحتـــوى علـــى متغيـــرات االتـــصال والـــدخول arrays, and so onالمصقوفات

معلومــــات االتــــصال الخاصــــة بالوصــــول ألوراكــــلSession تخــــزن فــــي تلــــكا فـان multithreaded serverالمنطقة ولو كان السيرفر يعمل على اسلوب

SGA ـتلك المعلومات تسجل في ال

منطقـــةSQL الخاصـــةPrivate SQL area : وتـــسجل فيهـــا متغيـــراتbinding variables and runtime buffers is kept.

Page 48: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

47

تنفيذ املعامالت يف أوراكلوقبـل أن نبـدأ Transactionالمثال الحالي يلخـص كيفيـة تعامـل أوراكـل لمعاملـة

. ال يتعين علينا توضيح معنى جديد وهو مفهوم المعاملةفي المثـــة مجموعـــة مـــن األعمـــال المرتبطـــة كوحـــدة Transactionيـــصف مـــصطلح المعامل

SQL ـواحدة نريـد أن تنفـذها أوراكـل وتتكـون المعاملـة مـن واحـد أو اكثـر مـن جمـل الـأو للتراجــع Commitوالتــي تنتهــي دائمــا بجملــة لتأكيــد تنفيــذها تــسمى جملــة التأكيــد

الخـادم /المـزود (إن مثلنا يفترض أننا نعمل فـي بيئـة عمـل . Rollbackعن تنفيذها (client /server كما يتضح من الشكل التالي:

. SQL*Netولذلك يكون من الضروري هنا استخدام برتوكول االتصال الشبكي

يشغل مستخدم تطبيـق مـن التطبيقـات ولـيكنSQLPLUSال ويحـاول االتـصبقاعـــدة البيانـــات أوراكـــل وهنـــا التطبيـــق يحـــاول عمـــل قنـــاة اتـــصال بـــين أوراكـــل

. SQL*Net االتصال الشبكي لوبين المستخدم من خالل بروتوكو

Page 49: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

48

لخدمـــة رالـــسيرفر يتلقـــى اتـــصال المـــستخدم ويولـــد علميـــة مـــن عمليـــات الـــسيرف

. المستخدم

المستخدم يطلب تنفيذ جملةSQLدم تغير قيمـة فـي وفى مثالنا يطلب المستخ . صف موجود فى جداول موجود بقاعدة البيانات

Page 50: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

49

بالبحــث فــي منطقــة الــذاكرة المــشتركة ريقــوم الــسيرف Shared Pool عمــا إذا وبهــا نفــس الجملــة Shared SQL Areaمــشتركة sqlكانــت هنــاك منطقــة

كـد الذي يريد المستخدم تنفيذها واذا وجد مثـل تلـك المنطقـة مـن الـذاكرة فانـه يتأمن صـالحيات المـستخدم فـي المـشاركة فـي تلـك المنطقـة والوصـول إلـى الـداتا الموجودة بها فإذا ما تأكد من ذلك فسوف يستخدم السيرفر تلك المنطقـة لتنفيـذ طلـــب المـــستخدم واذا لـــم يجـــدها فانـــه يحـــاول تخـــصيص منطقـــة جديـــدة لتهيئـــة

. تنفيذ الجملة ثم تنفيذها

عـن الــداتا المطلوبـة فيـتم البحــث عنهـا أوال فــي تـصدر جملـة االســتعالم للبحـث فـان لـم يجـدها يـصدر أمـر البحـث داخـل ملفـات قاعـدة البيانـات SGAالذاكرة

Data files فـــإن وجـــدها توضـــع بلوكـــات الـــداتا فـــي منطقـــة النظـــام الـــشاملة SGA . الحظ أن عملية الـسيرفر تكـون قـادرة علـى قـراءة ملفـات الـداتا الماديـة

ت آخــر يقــوم كاتــب البلــوك بكتابــة بلوكــات الــداتا المعدلــة إلــى مباشــرة وفــى وقــ . وبالفعل توجد الداتا وتجرى عليها التعديالت. الملفات المادية مرة أخرى

المــــستخدم إمــــا أن يقــــوم بتأكيــــد العمليــــة بإصــــداره أمــــرCommit أو ال يــــرد والتـــــي تلغـــــى مـــــا أجـــــراه المـــــستخدم مـــــن Rollbackإتمامهـــــا فيـــــصدر جملـــــة

. تتعديال

فـــي نفـــس الوقـــت تـــسجل معلومـــات التغييـــر فـــي ذاكـــرة الريـــدو وبمجـــرد تأكيــــد Redoالمستخدم للعملية يقوم كاتب اللوغ بتـسجيل المعاملـة مـن ذاكـرة الريـدو

Log Buffer إلى ملف اللوغ OnLine Redo Log ملف اللوغ .

قــل بعــد إتمــام كاتــب اللــوغ بتــسجيل معلومــات العمليــة يبــدأ كاتــب البلــوك فــي نإلــى Database buffer cashالتعــديالت مــن ذاكــرة الكــاش لبلوكــات الــداتا

ويــــتم إصــــدار رســــالة إلــــى المــــستخدم بنجــــاح تنفيــــذ Datafilesملفــــات الــــداتا . العملية

Page 51: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

50

Page 52: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

51

Database Startupفتح قاعدة البيانات

ات تـتم فـي كما ذكرنا من قبل يمثل المثال معمارية معينـة للـذاكرة باإلضـافة إلـى عمليـ

. علــى االتــصال بقاعــدة البيانــات والتعامــل معهــاالخلفيــة والتــي تجعــل المــستخدم قــادراعنــدما تبــدأ أوراكــل فــي العمــل فإنهــا تبــدأ فــي تهيئــة معماريــة الــذاكرة وتــشغيل عمليــات

وهكـذا فـان هنـاك عـدد مـن . الخلفية استعدادا لدخول المستخدمين على قاعدة البيانـات التأكــــــد مــــــن أن قاعــــــدة البيانــــــات جــــــاهزة تمامــــــا لتلقــــــى طلبــــــات المراحــــــل حتــــــى يــــــتم

: أن قاعدة البيانات تمر على اآلتي. المستخدمين التشغيل قبل االرتقاءSTARTUP NOMOUNT:

يتم فتح المثال وتجهيزه لفتح قاعدة البيانات قبل االرتقاء إلى قاعدة البيانات حيـث يـتم ات المثـال واعـداد الـذاكرة وفقـا للمعماريـة التـي عن إعدادلقراءة ملف البارمتر المسؤو

تتطلبها أوراكل كما تأخذ عمليات الخلفيـة وضـع االسـتعداد للفـتح والتـشغيل ولكـن دون

Page 53: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

52

وفــى هــذه المرحلــة ال تكــون قاعــدة Data Files0االتــصال بالهيكــل المــادي للملفــات يع إجـراء بعـض عنـدما نكـون فـي تلـك الوضـعية نـستط. البيانات متاحة بعد لالسـتخدام

والتي نستطيع من خاللهـا عمـل قاعـدة Scriptsالمهام وأكثرها شيوعا تشغيل األوامر فــي تلــك المرحلــة مــن الممكــن أن تحــدث . بينــات جديــدة أن لــم توجــد واحــدة مــن قبــل

بعض المشاكل في فتح قاعدة البيانات أن كانت موجودة وهى على سبيل المثال عـدم وهنــا ال Control File الــتحكم فــي قاعــدة البيانــات الوصــول بــشكل ســليم إلــى ملــف

يمكن فتح قاعدة البيانات إال بعد معالجة تلك المشكلة

الفتح مع االرتقاءSTARTUP MOUNT:

. تــتم جميــع عمليــات المرحلــة الــسابقة باإلضــافة إلــى إمكانيــة االتــصال بهيكــل الملفــات والحــــصول علــــى جميــــع فــــي هــــذه المرحلــــة يــــتم الوصــــول إلــــى ملــــف الــــتحكم وقراءتــــه

يوجــد بعــض وظــائف إدارة قاعــدة . المعلومــات عــن هيكــل قاعــدة البيانــات المــراد فتحهــاالبيانات المحددة التي يمكن إجراءها في تلك الوضعية ومنها وظائف اإلصـالح فعلـى سبيل المثال تغيير أماكن الملفات على الديسك أو إعداد قاعدة البيانات في الوضـعية

archive log mode فتح قاعدة البيانات تماماSTARTUP OPEN:

إذا مــرت المراحــل الــسابقة كلهــا بــدون مــشاكل تكــون قاعــدة البيانــات مفتوحــة وجــاهزة تمامــا لــدخول المــستخدمين وعلــى الــرغم مــن أن قاعــدة البيانــات متاحــة للجميــع إال انــه

هتنــا مواقــف محــددة يمكــن تــشغيل قاعــدة البيانــات بــبعض االختيــارات اإلضــافية إذا واج :وهى إجبار قاعدة البيانات على الفتح والعملSTARTUP FORCE:

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

Page 54: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

53

ة تجربـة تلــك الخطــوة أمــرا وتوقفـت قاعــدة البيانــات بعــد الفـتح فهنــا تكــون محاولــوهنـــا ال يتوقـــف هـــذا االختيـــار علـــى أيـــة وضـــعية . ضـــروريا يـــستحق المحاولـــة

ـــــة كانـــــت عليهـــــا قاعـــــدة البيانـــــات ســـــواء كانـــــت أغلقـــــت بطريقـــــة غيـــــر طبيعيshutdown abort and then restarts the database

الفتح مع وجود قيودSTARTUP RESTRICT

RESTRICTED للمستخدمين الذين لهم صالحية هنا تفتح قاعدة البيانات

SESSION دون بقيــة المــستخدمين ويكــون هــذا فــي حالــة إجــراء الــصيانة أو لقاعدة البيانات حيث يكون مطلوبـا تعطيـل وصـول بقيـة دالتصدير أو االستيرا

وبعـــد ذلـــك نعطـــل تلـــك الوضـــعية بـــاألمر . المـــستخدمين لحـــين إتمـــام الـــصيانة .المستخدمين من الدخول العادي لقاعدة البياناتالتالي لتمكين بقية

Page 55: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

54

Database Startupإغالق قاعدة البيانات يــتم إغــالق قاعــدة البيانــات لظــروف عديــدة منهــا إجــراء عمليــات االســتعادة واإلصــالح أو لتبـــديل الـــسيرفر وهنـــا لكـــي تغلـــق قاعــــدة البيانـــات ينبغـــي أن الـــدخول إلـــى قاعــــدة

وهــى صــالحيات إداريــة SYSOPER or SYSDBAل مثــ Connectالبيانــات : واسعة وهناك عدة أنواع أو أساليب لغلق قاعدة البيانات كما يلي

ــادي Shutting Down with the NORMALاإلغــالق الطبيعــي الع

Option

:يستخدم األمر التالي إلغالق قاعدة البيانات بطريقة طبيعية SHUTDOWN NORMAL

:التالييتبع اإلغالق العادي ال يسمح بأية اتصاالت جديدة لقاعدة البيانات بعد إصدار األمر .

تنتظر قاعدة البيانات خروج جميع المتصلين حاليا بها قبل أن تغلق.

يــتم إعــادة فــتح قاعــدة البيانــات مــن جديــد بــصورة طبيعيــة فــال تحتــاج ألي نــوع . من اإلصالح

:حالغلق قاعدة البيانات في ال Shutting Down with the IMMEDIATE Option

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

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

ونكـــون غيـــر قـــادرين علـــى عنـــدما تعمـــل قاعـــدة البيانـــات بـــصورة غيـــر طبيعيـــة Log Offة خروج المستخدمين بصورة طبيعي

Page 56: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

55

نصدر األمر التالي لغلق قاعدة البيانات بصورة فورية

SHUTDOWN IMMEDIATE

:يتبع اإلغالق الفوري التالي ال يـسمح بأيــة اتــصاالت جديــدة علــى قاعــدة البيانــات كمــا ال يــسمح بــإجراء أيــة

.عمليات جديدة

أيــة عمليــات غيــر مؤكــدةCommitted ســوف يــتم التراجــع عنهــاrolled

back .

باالنتظــار حتــى يخــرج المــستخدمين الحــاليين لقاعــدة البيانــات لال تقــوم أروا كــ . عنها بل تقطع عنهم االتصال

عنـــد إعـــادة الفـــتح مـــن جديـــد ال يحتـــاج المثـــال إلعـــادة إصـــالحinstance

recovery .

:اإلغالق مع االختيار Shutting Down with the TRANSACTIONAL Option

ختيـار عنـدما نريـد إغـالق قاعـدة البيانـات ولكـن بعـد إتمـام المعـامالت يستخدم ذلـك اال :قبل اإلغالق حيث نصدر األمر التالي Active Transactionالحالية

SHUTDOWN TRANSACTIONAL

:اإلغالق عن طريق اإلجهاض Shutting Down with the ABORT Option

ت حيــث يــتم الخــروج فــورا مــن المثــال وال غيــر طبيعيــا لقاعــدة البيانــايعتبــر هــذا إغالقــا

: التاليةتيستخدم إلى في الحاال

Page 57: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

56

قاعدة البيانات ال تعمل بصورة طبيعية ولم تفلح الطرق السابقة في غلقها .

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

الحدوث أخطاء في فتح المث .

نصدر األمر التالي: SHUTDOWN ABORT

:وفى تلك الحالة يحدث ال يسمح بأية اتصاالت جديدة أو عمليات بقاعدة البيانات.

أيـــة إنهـــاءيخـــرج المـــستخدمون الحـــاليين مـــن قاعـــدة البيانـــات علـــى الفـــور ويـــتم . عمليات كانوا يقومون بها حتى ولو كانت غير مكتملة

يتم التراجع عنها أية عمليات غير مؤكدة ال not rolled back

عنــد إعــادة Instance recoveryوفــى هــذه الحالــة ســنحتاج إعــادة إصــالح المثــال

.الفتح

Page 58: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

57

The Data Dictionaryالكتالوغ

واحدا من أهم مكونات قاعدة البيانات وهو data dictionaryالكتالوغ يعتبر

بإدارتها بنفسها وتخزن بها معلومات عبارة عن مجموعة من الجداول تقوم أوراكل : عن قاعدة البيانات ومن أمثلتها

جميـــع التعريفـــات الخاصـــة بكـــل المخططـــاتSchema والكائنـــاتObjects ,tables, views, indexes, clusters, synonyms(المتعلقـة بهـا مثـل

sequences, procedures, functions, packages, triggers, and so on

ومات عن صالحيات المستخدم معلuser privileges معلومـــــات عـــــن قيـــــود الجـــــداول الموجـــــودة بقاعـــــدة البيانـــــاتIntegrity

constraints أسماء األعمدة ونوعها المكونة للجداول الموجودة بقاعدة البيانات columns

in database tables معلومات عن حجم المـساحات المخصـصة لكـل مخطـط space allocated

and used for schema objects

نفسها بالوصول إلى معلومات الكتالوغ وقراءتها والتعديل فيهـا أن لوتقوم أوراكلزم األمر فهـي علـى سـبيل المثـال تقـوم بالوصـول إلـى معلومـات الكـاتلوغ لكـي

تقـوم تحصل على معلومات خاصة المستخدمين والمخططات وما تحتويه كمـا التـي مـن النـوع SQLوغ في كل مرة تصدر فيهـا جمـل بتعديل معلومات الكتال

DDLفمثال في حالة إنشاء المستخدم لجداول جديد .

Page 59: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

58

هــو المالــك SYS, Owner of the Data Dictionaryإن المــستخدم وال يجــب لمــستخدم المكونــة للكتــالوغ Viewsلمجموعــة الجــداول والمنــاظير

طـــط وبالتـــالي احـــرص علـــى آخـــر أن يقـــوم بالتعـــديل أو اإللغـــاء فـــي ذلـــك المخ SYSكلمة السر للمستخدم

أن معلومات الكتالوغ تكون متاحة ألوراكل عند فتح قاعدة البيانات وهـي توجـد ـــك SYSTEM tablespace المـــسماة ةعلـــى المـــساحة الجدوليـــ ـــذلك فتل ول

. باستمرار Onlineالمساحة تبقى :يتكون الكاتلوغ من

مجموعة الجداول األساسيةBase Table :

فقــط هــي وحــدها لأروا كــ. والتــي تخــزن فيهــا قــيم وداتــا خاصــة بمــا قلنــاه ســابقاـــى فـــتح ـــك قـــراءة وتعـــديل تلـــك الجـــداول نظـــرا لخطورتهـــا وتأثيرهـــا عل التـــي تمل

. وسالمة قاعدة البيانات مناظيرUser-Accessible Views

تــــستخدم فــــي تلخــــيص وعــــرض المعلومــــات عــــن مجموعــــة الجــــداول المكونــــة وغ فهــي تتــرجم معلومــات الجــداول الــسابقة إلــى صــورة يــستطيع قراءاتهــا للكتــال

ومــن أمثلتهــا أســماء المــستخدمين الموجــودين علــى قواعــد البيانــات . المــستخدم . والصالحيات الممنوحة لهم

Data Dictionary Viewsاستخدام المناظير الذي يوفرها الكتالوغ

اظير للتعامـل مــع معلومــات الكتــالوغ عـدد هائــل مــن المنــOracle 10gتـوفر أوراكــل إن تلك المناظير تـسمى . منظار1300ويبلغ العدد حسب اختيارات التنزيل اكثر من

فيالفارق بينها يمكن توضحه كما , _ALL_ , USER و _DBAبأسماء تبدأ بـ :الرسم التالي

Page 60: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

59

يظهـر جميـع الجـداول التـيDBA_TABLESكما يظهر مـن الرسـم فـان المنـاظير

جميـع الجـداول التـي ALL_TABLESتحتوى قاعدة البيانات بينما يظهـر المنظـار يمتلكها مستخدم معين مسجل لدى قاعدة البيانات باإلضـافة إلـى جميـع الجـداول التـي ـــــــــــك صـــــــــــالحيات تمكنـــــــــــه مـــــــــــن الوصـــــــــــول إليهـــــــــــا بينمـــــــــــا يظهـــــــــــر المنظـــــــــــار يمتل

USER_TABLES مـن المثـال جميع الجداول المملوكة فقط للمستخدم كما يتـضح :التالي

Page 61: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

60

empيظهر المثال جميع الجداول المملوكة للمستخدم

والجدول التالي يظهر بعض المناظير جرب واكتشف بنفسك

:للحصول على معلومات عن كل المناظير يمكن الذهاب إلى

Page 62: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

61

Dynamic Performance Viewsهناك نوع آخر من المناظير تسمى

مــــن تلــــك المنــــاظير ومعظــــم تلــــك 350جــــد حــــوالي يوOracle 10gوفــــي أوراكــــل : الجدول التالي يبين أمثلة منها$Vالمناظير تسمى بأسماء تبتدئ بـ

والذي يبين نوع إصدار األوركل المستخدم V$VERSIONومثال عليها المنظار

Page 63: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

62

وعلى الرغم من كال النوعين من المناظير يشتركان كالهمـا فـي تقـديم معلومـات هامـة عمــل أوراكــل و بينهمــا تــشابه إال انــه توجــد بعــض اختالفــات تظهــر فــي الجــدول عــن :التالي

Page 64: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

63

معلومات البد منها :مسؤوليات ووظائف مدير قواعد البيانات

بهــا االهتمــام بعــض المهــام الرئيــسية الواجــب عليــه لأوراكــ البيانــاتعلــى مــدير قواعــد :لضمان صالحية قاعدة البيانات

كل والتطبيقات الخاصة بهتركيب برامج أورا تحديد مواصفات األجهزة المستخدمة والتعامل معها تخطيط قاعدة البيانات وتصميمها إنشاء وفتح قواعد البيانات إنشاء البرامج والتطبيقات إنشاء نسخ احتياطية لقواعد البيانات إضافة مستخدمين لقواعد البيانات و إعطاء امتيازات الدخول د البياناتتحسين أداء قواع

:وظائف نظم إدارة قواعد البيانات

إليك بعض المواصفات التي يجب أن تتوفر في قواعد البيانات القياسـية والتـي تقـدمها :األخرىأوراكل مع العديد من المزايا

إدارة حجم كبير جدا من المعلومات وبشكل آمن إمكانية العمل في بيئة متعددة المستخدمين مثل الشبكات البيانات من عدم العبث بهاحماية تقديم األدوات إلصالح األعطال والتخزين االحتياطي

Page 65: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

64

:إدارة قواعد البيانات أوراكل نظامواألداء العـــالي بـــسبب التقيـــد بالمقـــاييس قيـــةثويمتـــاز نظـــام قواعـــد البيانـــات أوراكـــل بالو

:والكثير من األسباب التي تم شرح بعضها هنا

كبيرة جداأن تكون إمكانية التخزين إمكانية التعامل مع عدد كبير من المستخدمين بشكل متزامن ومتوازي نظام أمن مـن الممكـن عـدم توقـف التعامـل معـه علـى مـدار اليـوم وقدرتـه علـى

إصالح األعطال حتى الفيزيائية منها حمايــــة البيانــــات مــــن العبــــث بهــــا أو الحــــصول عليهــــا مــــن غيــــر المــــستخدمين

المحددين لي إذ أن زيـــادة البيانـــات والمـــستخدمين ال تـــؤثر علـــى ســـرعة وعمـــل األداء العـــا

أوراكل المواصفات القياسية الخاصة بأوراكل مواصفات عالمية من نظام تشغيلأكثرإمكانية العمل على إمكانية االتصال القوية عبر الشبكات التعريب إذ يمكن التعامل معه باللغة العربية

:البيانات أهداف قواعد

قواعــد البيانــات والتــي قامــت الــشركات بعــد ذلــك ألجلهــا أهــداف معينــة وضــعت هنــاكهـــي شـــركة أوراكـــل واليـــك أهـــم أهـــداف قواعـــد هـــذه وأكبرهـــا بتطـــوير قواعـــد البيانـــات

. وضعها لهااستدعتالبيانات التي

:مركزية البياناتانــات وهــي إحــدى أهــم أهــداف الــذي وجــدت قواعــد البيانــات لهــا والتــي تــوفر ترتيــب البي

لـــسهولة الوصـــول إليهـــا وعـــدم تـــضاربها مـــع التـــوفير فـــي المـــساحات المـــستخدمة فـــي التخزين وللمشاركة في البيانات بين عدة تطبيقات

Page 66: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

65

:استقاللية البيانات عن التطبيقاتوالتـــي تفيـــد فـــي عـــدم ضـــياع البيانـــات بـــسبب انهيـــار البرنـــامج التطبيقـــي الـــذي يقـــوم

.بإدارتها :ربط البيانات بعالقات

وهـــي هـــدف مهـــم فـــي تـــوفير الجهـــد والوقـــت وللحـــصول علـــى البيانـــات التـــي تـــرتبط أو .تشترك فيما بينها للحصول على معلومات قيمة

:تكامل وانسجام البياناتإحدى أهداف قواعد البيانات التي تقـوم بتحديـد نـوع البيانـات ووضـع الـشروط المحـددة

.لهذه البيانات :أمان البيانات

ف قواعــد البيانــات التــي تــساعد علــى عــدم ضــياع البيانــات وســرعة وهــي إحــدى أهــدا .إصالحها واستردادها

:الوثوقيةوهي إحدى أهم األهداف والتي تساعد في سرية البيانات وعـدم فـضحها وذلـك بتحديـد

السماحيات للوصول إليها :المشاركة في البيانات

ى العديد مـن المـستخدمين وهي من أهم األهداف في البيئات الشبكية والتي تحتوي علالذين لهـم سـماحيات وصـول لقواعـد البيانـات حيـث تـساعد فـي عـدم تـضارب البيانـات

.بين المستخدمين :البيانات أوراكل بمديري قواعدالخاصةبعض أهم األدوات

Server Manager :تـستخدم هـذه األداة لمراقبـة قاعـدة البيانـات كمـا ـ مـدير الخـادم .في إدارة قاعدة البياناتتساعدك على التحكم

Enterprise Manager :تــــستخدم هــــذه األداة فــــي إدارة ـ مــــدير المؤســــسات .الصالحيات والتحكم في سماحيات المستخدمين بواجهة رسومية

SQL Loader :تـستخدم هـذه األداة فـي اسـتيراد البيانـات ـ معـالج لغـة االسـتعالمات .من ملفات نصية إلى قاعدة بيانات أوراكل

Page 67: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

66

Export Manager :تستخدم هـذه األداة فـي تـصدير قاعـدة بيانـات ـ مدير التصدير أوراكــل أو جــدول محــدد مــن قاعــدة البيانــات الســتخدامات النــسخ االحتيــاطي أو لنقــل

.البيانات من قاعدة بيانات إلى أخرىImport Manager: تـستخدم هـذه األداة فـي اسـتيراد قاعـدة بيانـات ـ مدير االسـتيراد

جداول تم تصديرها من قبـل عمليـة تـصدير سـابقة إمـا إلصـالح قاعـدة البيانـات أو أو .لنقل البيانات من قاعدة بيانات أخرى

للتجـــــارة مـــــن الـــــرواد الـــــذين اســـــتطاعوا تقـــــديم حلـــــول متكاملـــــةوتعتبـــــر األوراكـــــل اإللكترونيــة فــي عــالم اإلنترنــت حــول العــالم والتــي قامــت بتطــوير البنــى التحتيــة لخدمــة

حــول الزبــون فــي تطبيقــات اإلنترنــت وقــدمت األدوات والبــرامج والحلــول/ نيــة الخــادم تقتعمـل بـرامج أوراكـل علـى الحاسـبات الشخـصية محطـات ، والشبكة العالميـة العنكبوتيـة

العمل الفرعية الحاسبات المتوسطة حاسبات رئيسية وبشكل كبير بسبب تقنيـة التـوازي .ل انتشاراوتقديمها الدعم لمعظم نظم التشغي

:إصدارات األوراكل توالـــت ســـريعاوبعـــد أن القـــى رواجـــا 1979 تـــم بيـــع اإلصـــدار األول عـــام وقـــد

:الشركة بطرح اإلصدارات الجديدة والمتطورة على التوالي وهي كالتالي

)بـي دي بـي الرقميـة( فقد تم بنائـه مـن أجـل العمـل مـع حـوا سـيب الــ:اإلصدار الثانيدي ( والتي عملت فيما بعد على نظـام) أر إس إكس(م التشغيل والتي تعمل على نظا

.)اي سي فاكس

حيــث أجريــت عليــه الكثيــر مــن 1983ام عــطرحــه مــن النظــام تــم :اإلصــدار الثالــثوتـم كتابتـه بلغـة ) القياسـية االستفـساراتلغـة(التحسينات خاصة تلـك المتعلقـة بـصيغة

.لى مجموعة أوراكل إ ـأر إس أيـ وتم تغيير اسم الشركة من ) سي(

ولقــد دعــم هــذه اإلصــدار نظــامي 1984إنجــازه عــام مــن أوراكــل تــم :اإلصــدار الرابــعكـــان أول إصـــدار يـــدعم خاصـــية تناســـق كمـــا) أي بـــي أم فـــي أم(و) فـــاكس(التـــشغيل .القراءة

Page 68: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

67

وقــدم هــذا اإلصــدار دعمــا1985 مــن أوراكــل فقــد تــم إنجــازه عــام :اإلصــدار الخــامسكمــا انــه أول منــتج يعمــل ) القياســيةاالستفــساراتلغــة (ادم باســتخدام الخــ/لتقنيــة الزبــون

كيلو بايت من نظـام التـشغيل 640ضمن نظام التشغيل والذي استطاع تجاوز حاجز DOS .

ولقــد أضــاف تقنيــة القفــل علــى 1988 مــن أوراكــل تــم إنجــازه عــام :اإلصــدار الــسادسظـائف والمنـصات كمـا أضـيف مستوى منخفض إضافة إلى العديد من التحسينات والو

1991وذلــك عــام ) دي اي ســي فــاكس(إليــه خيــار التــوازي والــذي يعمــل علــى نظــام . هذا الخيار متاحا ضمن العديد من المنصاتأصبحومن ثم

وتــــم عليــــه إجــــراء العديــــد مــــن التغييــــرات 1992 تــــم طرحــــه عــــام :اإلصــــدار الــــسابعة واســتخدام الــدخل والخــرج واحتــوى واإلضــافات مثــل منطقــة الــذاكرة والمعالجــة المركزيــ

أيضا على الكثير من األدوات الخاصة بمديري قواعد البيانات

والــذي يتــضمن مفهــوم األغــراض باإلضــافة إلــى العديــد مــن الميــزات :اإلصــدار الثــامن 4والتقنيـــــات وأدوات إدارة قواعـــــد البيانـــــات والـــــسماح لوجـــــود حقـــــول تتـــــسع إلـــــى حـــــد

. أقصىجيجابايت للحقل الواحد كحد

ــرا ــر مــن أوراكــل وهــوأخي ــم طــرح اإلصــدار األخي ــد ت ــا هــذا فق اإلصــدار وحتــى يومن .العاشر

Page 69: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

68

املخصصة للويندوز 9i قاعدة بيانات أوراكل تنصيبNT/2000/XP

" التـــسجيل مجانـــا "الرســـميوراكـــل أموقـــع مـــن أوراكـــلللحـــصول علـــى أغلـــب منتجـــات :ورابط التسجيل هو

https://profile.oracle.com/jsp/reg/createUser.jsp?act=5&src=1180588&tid=262&owner=3&nexturl=http%3A//www.oracle.com/technology/software/index.html&language=en

: 9iقاعدة بيانات أوراكل تنصيب

OraHome90: االسم >C> or <D> or.. :\Oracle\ora90:المسار

-:وذلك كما في الشاشة التالية

Next ثم

Page 70: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

69

ال تكون قاعدة البيانات والديفلوبر يمكن تغيير أسماء وموقع اإلعداد لكن أهم شي أنفــي جــزء ويمكــن أن يكونــوا االثنــان" أي فــي نفــس الملــف أو المجلــد" فــي مكــان واحــد األماكن االفتراضية اختيار ولكن هنا تم D: أو C:يسك مثل الجزء دواحد في الهارد

كمـــا يجـــب أن يـــتم إعـــداد , فهـــم المثـــال وتوصـــيله بطريقـــه واضـــحة للجميـــع لكـــي يـــتم .قبل قاعدة البيانات الديفلوبر

: 9iقم باختيار تنصيب قاعدة بيانات أوراكل ثم

: أوراكل الذي تريد تنصيبه في جهازكقم باختيار نوع قاعدة بيانات

Page 71: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

70

قم باختيار نوع التنـصيب االختيـار األول أفـضل لغيـر الخبـراء فـي أنـواع التنـصيب ثم General Purposeالمتقدمة

البيانات لقاعدةGlobal database nameو) SID( قاعدة البيانات أسمقم بتحديد

ORACLE.US.COM هو global database nameوليكون

ORACLEهو ) SID( قاعدة بيانات أوراكل أسموطبعا سيكون

Page 72: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

71

.ال تغيير الموقعف Database fileيتم طلب تحديد موقع

:تحديد نوع األحرفل خيارات تظهر لنا اآلن ثالثة

ـنفس المستخدم في نظام التشغيلـ النوع االفتراضي تستخدم ألول مره فـي أوراكـل وهـي تـدعم تقنية وهي ) تقنية اليونيكود(استخدام

ـ يفضل اختيارهاـ كل اللغات االختيار من القائمة النوع الذي تريده.

.أدناهالشاشة حسب وذلك

Page 73: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

72

Next على زر أضغطثم

نوع قاعدة بيانات أوراكل المراد تنصيبها واألدوات التي سوف يتم تنـصيبها نحدد اآلن :كما في الشكلمعها

لبدء التنصيب Installضغط ن

Page 74: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

73

وبعـد االنتهـاء مـن عمليـة التنـصيب 3 ورقـم 2 رقم CDـ لاسيتم طلب أثناء التنصيب :بنجاح سوف تظهر هذه الشاشة

Page 75: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

74

: ببعض اإلعداداتبعد االنتهاء من التنصيب علينا القيام

يمـين ومـن ثـم الالمـاوس نـضغط زر جهاز الكمبيوتر الموجودة فـي سـطح المكتـب من منهـــا اختـــارSystem properties وســـوف تظهـــر لـــك شاشـــة Properties اختـــار

Computer Name

Computer Name Changes ســتظهر شاشــة Changeضغط علــى زر نــثــم Moreضغط على زر ن

Page 76: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

75

وفـى خانـة DNS Suffix and NetBIOS Computer Nameسـتظهر شاشـة Primary DNS suffix of this computerكتـب نORACLE.US.COM

إعـــادة تــــشغيل عــــد ب .إعــــادة تـــشغيل الجهـــاز طلـــب وســــوف يOKضغط علـــى زر نـــو بقاعدة بيانات i6 OR 6.0 Release 2000 الديفلوبراتصالكمل طريقة نالجهاز 9iأوراكل

9i بقاعدة بيانات أوراكل i6 OR 6.0 Release 2000ديفلوبر الاتصال

:وذلك كالتالي Local Net service Name configuration قم بإنشاء -1 : والموجودة فيNet Configuration Assistantقم بتشغيل األداة التالية

Start -> programs -> Oracle - Orahome90 -> Configuration and Migration Tools -> Net Configuration Assistant

اختار Local Net service Name configuration علـى زر اضـغط ثم Next.

اختار Add على زر اضغط ثم Next. اختـار Oracle 8i or later database or service علـى زر اضـغط ثـم

Next. اسـمحدد Service Name قاعـدة ) بتنـصي( الـذي قمـت بتحديـده عنـد إعـداد

ORACLE.US.COM " global database ـ الـاسـمالبيانات وهو نفـس

name " على زر اضغطثم Next.

Page 77: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

76

قم بتحديد البروتوكول وهوTCP على زر اضغط ثم Next. قـــــم بتحديـــــدHost Name الكمبيـــــوتر أو رقـــــم اســـــم وهـــــو إمـــــا TCP/IP

.Next على زر اضغط ثم Port الـ ال تقم بتغيير رقم .رللكمبيوت اختار Yes, perform a test على زر اضغط ثم Next.

واال يجــب .Connecting...Test successful يجــب أن تكــون نتيجــة االمتحــان Changeالتأكد من البيانات التي قمت بإدخالها في السابق أو قم بالضغط على زر

loginوقم بوضع التالي : system: Username

manager: Password .Next على زر اضغط تم االتصال بنجاح إذا ثـــم developer التـــي قمـــت بإنـــشائها ولـــيكن Net Service ـ للـــاســـم قـــم بتحديـــد -

.Next على زر اضغط .Finish ثم Next ثم Next على اضغط ثم -

الموجـــود فـــي الموقـــع التـــالي tnsnames.oraقـــم بأخـــذ نـــسخه مـــن الملـــف المـــسمى : Oracle\Ora90\network\admin

والموقــع قــم بلــصق الملــف الــسابق فــي الموقــع التــالي الموجــود بــه ملــف بــنفس االســم ORANT\net80\admin هو

: الموجود في الموقعين التاليينsqlnet.old الملف إلى اسمقم بتغيير

Oracle\Ora90\network\admin -أ

ORANT\net80\admin -ب

قم بتشغيل أي أداه من أدوات الديفلوبر

: الدخول كالتاليبيانات

system: Username

Page 78: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part1

www.abahe.co.uk

77

Password: manager Host String Or Database: developer.oracle.us.com

.وسوف يتم االتصال بين الديفلوبر وقاعدة البيانات

مع متنياتنا لكم بالتوفيق والنجاح الدائمني

Page 79: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

0

Oracle Part 2

Page 80: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

1

:مقدمـــة

�رجـو أن تكـون عزيــزي الطالـب قـد كو�ــت فكـرة جيـدة عــن

ــزء األول ــل مــن خاللـــ اجل وســنتعرض يف هــذا اجلــزء إىل . األوراك

التعرف على األوراكل بشكل عام مـن خاللــ التعـرف علـى األوامـر

ل إىل علنـا �ـستطيع الـدخو ..... اخلاصة به وكيفية التعامل مـع اجلـداول و

.عامل األوراكل الواسع بكل ثقة ودراية

Page 81: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

2

:CREATEاألمر USERويجــب وضــع اســم الـــ علــى قاعــدة البيانــاتUSER األمــر بإنــشاءيقــوم هــذا وهـي كلمـة IDENTIFIED BY ثم يأتي بعدها Azzam في هذا المثالـ والذي هو

.236 هناوهي السرCREATE USER Azzam IDENTIFIED BY "236"

إذا. المـستخدمإنـشاء تـم أي أنـه.User created تخـرج لـك الرسـالة التاليـةأنيجـب : المستخدم هياإلنشاءقاعدة استخدام

CREATE USER NAMEOF USER IDENTIFIED BY "YOUR PASSWORD"

:GRATNاألمر

الــصالحيات وهــذه الــصالحياتإعطــاءه المــستخدم يجــب إلــىنــستطيع الــدخول حتــى وـــىمـــن خاللهـــا تفـــويض المـــستخدم للـــدخول يـــتم حيـــث GRATNSتـــسمى قاعـــدةإل . البيانات

GRANT OBJECTNAME TO YOURUSERNAME

أخــــرىوتعطــــى صــــالحيات المــــستخدم إلــــى صــــالحية االتــــصالـ إعطــــاءوهــــي تعنــــي وتعنـــــــــــــي DBA وتعنـــــــــــــي مـــــــــــــورد وكـــــــــــــذلك RECOURCEللمـــــــــــــستخدم منهـــــــــــــا

DATABASE ADMINISTRATIONمدير قاعدة البيانات : :لكود أدناهالحظ ا

GRANT RESOURCE,DBA TO Azzam أن أنــه يمكننــايعنــي هــذا , مــن خاللـــ الفاصــلة معــاخاصــتين المــستخدم إعطــاء تــم لقــد

.نعطي عدد من الصالحيات بسطر واحد وباستخدام الفاصلة

Page 82: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

3

:CONNECTاألمر : حسب التالي المستخدمإلى للدخول وهو

CONNECT Azzam/236

نـا ظهـر لتوسـوف 236 وكلمـة الـسرAzzamا بالمـستخدم المـسمى هنسيتم االتصالـ .نه تم االتصالبأ رسالة

:التالية ذلك من األمر عرفويمكننا مSHOW USER

مستخدم اسم النايبين لاألمر هذا ف

DUMMY TABLE: ــ لكــي أوراكــل أنــشأتههــو جــدول هــو يتعامــل مــع قاعــدة فعمليــات ال بــبعضستعين بــه ن

.DUALواسم هذا الجدول هو ثل استعراض التاريخالبيانات مباشرة م :التالياألمر كتب تاريخ اليوم نضالستعرا

SELECT SYSDATE FROM DUAL

. وتعريف المحدداتها الجداول والربط بينإنشاءرق هو ط اآلنهوأهم ما سنتناول :CREATE TABLEاألمرد ذلــك يجــب وضــع اســم قاعــدة البيانــات وبعــأن نهيــأ جــدول يعنــي بإنــشاءنــد القيــام ع

ونــضع بعــدها قــوس مــثالCREATE TABLE STUDENTSالجــدول فنقــول ثالثـــة حـــروف مـــن اســـم أول باتخـــاذ ليـــشمل عـــدد الحقـــول هـــذا الجـــدول وينـــصح دائمـــا

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

Page 83: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

4

VARCHAR2: وحــروف فــي الحقــل ويجــب تحديــد طــول الحقــل أرقــام وهــي تأخــذ فــــــــــــي هــــــــــــذا الحقــــــــــــل فنقــــــــــــولاألحــــــــــــرفونقــــــــــــصد بطــــــــــــول الحقــــــــــــل هــــــــــــو عــــــــــــدد

VARCHAR2 20 حرف20ن طول الحقل أي أ .

NUMBER: تحديـــد طـــول أيـــضا عـــشرية ويجـــب أرقـــام عاديـــة أو أرقـــام وهـــي تأخـــذ أربـــع ويعنـــي رقـــم مكـــون مـــن NUMBER4دد الخانـــات فنقـــول الحقـــل فيـــه وهـــي عـــ

.1234خانات كالتالي

DATE: الجدول هيإلنشاء وهو التاريخ كما هو معروف والقاعدة : CREATE TABLE table_name

(column1 datatype ,

column2 datatype ,

.. )

نـــــستخدم إنـــــشاء الجـــــداول ســـــنرى اآلن طريقـــــة ربطهـــــا تعرفنـــــا علـــــى طريقـــــة أن بعـــــد

سـوف وأشكالـ أنواع طبعا المحددات CONSTRAINTS ـالمحددات أو ما يسمى بوهــو األساســي وهــو المفتــاح PRIMARY KEYوهــو الـــ مــا يلزمنــا إلــىنطــرق

عبارة عن حقل وحيد يتم تحديده بالجـدول وهـذا الحقـل نقـوم بتعيينـه بهـدف عـدم تكـرار مجموعـة وكـذلك يمكـن تحديـد اكثـر مــن نمـا يأخــذاالبيانـات وهـو ال يأخـذ قيمـة فارغـة و

الجـدول دائمـاو ولكـن كوحـدة واحـدة وعمومـاا يتكـرروأالحقل في الجدول لتعينهم على . واحدPRIMARY KEYيحتوي على

Page 84: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

5

CONSTRAINT: هـي الحقـول التـي تريـد تحديـدها مـع الجدول ونذكر اسـمه ثـم نـذكر نوعـه ومـانهيأهنا لـو أننـا مهمـا تتكـرر ولنوضـح شـيئاأنيمكـن حقـول ال هـذه الأن بعين االعتبـار األخذ

:مايليفهنا نالحظ أساسي مفتاح أنها رقم الموظف وتاريخ ميالده على حددنا مثال 2000-03-08 وتاريخ الميالد Ammar رقم الموظف مثالأدخلناو ل 2001-03-08 وتاريخ الميالد Ammar دخلنا رقم الموظف مثالأو

فـــي نا حـــددأننـــا نعـــم والـــسبب ؟.. هـــذه العمليـــة الجـــواب)ة البيانـــاتقاعـــد (هـــل ســـتقبل رقــم الموظــف وتــاريخ مــيالده همــا واحــد ويمنــع التكــرار فــي حالــة األساســي أنالمفتــاح

.األساسي نكون حذرين في حالة تحديد المفتاح أنتشابهما لذلك يجب

CONSTRAINT constraint_name PRIMARY KEY (column1, column2, . column_n)

هـذا النـوع فـي وي مفتـاح المرجعـال وهـو FOREIGN KEY النـوع الثـاني فهـو أما

فــي الجــدول الثــانياألساســي تــابع للحقــل األولجــدول ال الحقــل الــذي بأنفقــط تحــدد رقـم الجنـسية فـي جـدول المـوظفين تـابع رقـم الجنـسية فـي جـدول كثـر مـثالألتوضيح لو

المـستخدم إلـزاموالهـدف مـن هـذا كلـه هـو أساسـي يكـون أنالفروض فـالجنسيات لذلك أقـوىبيانات غير موجود وتصبح بياناتـك إدخالـ أو بيانات محدده وتفادي بإدخالـ أرقام يكـون أن هـذا النـوع مـن المحـددات يجـب إنـشاءمع مالحظة انـه عنـد أقوى وبرنامجك

رقـــم الجنـــسية نريـــد ربـــط ما عنـــدمـــثالف .الجـــدول المنـــشأ موجـــود علـــى قاعـــدة البيانـــات يكــون جــدول الجنــسيات أنبجــدول المــوظفين بــرقم الجنــسية بجــدول الجنــسيات يجــب

كثر من حقـل فـي كـال الجـدولين أ إلىمنشأ قبل جدول الموظفين وهكذا ويمكن الرجوع . يكون من نفس النوعأنوكذلك يجب

Page 85: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

6

:سنطبق ما سبق بشكل عملي : تتم بوضعإنشاء الجدولطريقة

CONSTRAINT CONSTRAINT_NAME FOREIGN KEY (column1, column2, ... column_n)

الحقول في الجدول الحاليأسماءهنا نحدد REFERENCES parent_table (column1, column2, ... column_n)

إليه الحقول مع ذكر اسم الجدول المراد الرجوع أسماءوهنا نحدد : القاعدة بالشكل التاليصبحوت

CONSTRAINT fk_column FOREIGN KEY (column1, column2, ... column_n) REFERENCES parent_table (column1, column2, ... column_n) );

: وهو يتكون من:جدول الجنسيات اسم المستخدم ـ4 اإلنشاءتاريخ ـ 3 وصف الجنسية ـ2 رقم الجنسية ـ1

: وهو يتكون من:اإلداراتجدول ـ اسم المستخدم4 اإلنشاء ـ تاريخ 3 اإلدارة ـ اسم 2 دارةاإل ـ رقم 1

: وهو يتكون من:جدول الموظفين ـ الجنس4 ـ تاريخ الميالد 3 ـ اسم الموظف 2 ـ رقم الموظف 1 أخرى ـ بدالت 7األساسي ـ الراتب 6 ـ تاريخ التعيين 6 ـ الجنسية 5 ـ اسم المستخدم10 اءاإلنش ـ تاريخ 9 التابع لها اإلدارة ـ 8

Page 86: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

7

:كود جدول الجنسيات

CREATE TABLE NATIONALITY(

NAT_NO VARCHAR2(5),

NAT_NAME VARCHAR2(20),

NAT_CRE_DATE DATE,

NAT_CRE_NAME VARCHAR2(50),

CONSTRAINT NAT_PK PRIMARY KEY(NAT_NO)

) /

الحقــلإنــشاء فهــي تفيــد فــي حالــة تــاريخ , NAT_CRE_DATE إلــى بالنــسبة أمــاـــد NAT_CRE_NAME أمـــا ـــذي قـــام بإضـــافة فتفي هـــذا بإنـــشاء اســـم المـــستخدم ال

.الحقل

:اإلداراتكود جدول

CREATE TABLE DEPARTMENTS( DPT_NO VARCHAR2(5), DPT_NAME VARCHAR2(20), DPT_CRE_DATE DATE, DPT_CRE_NAME VARCHAR2(50), CONSTRAINT DPT_NO_PK PRIMARY KEY(DPT_NO) ) /

Page 87: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

8

:كود جدول الموظفينCREATE TABLE EMPLOYEES( EMP_ID VARCHAR2(10), EMP_NAME VARCHAR2(50), EMP_BIRTH_DATE DATE, EMP_SEX VARCHAR2(1), NAT_NO VARCHAR2(5), EMP_HIRE_DATE DATE, EMP_BASIC_SALARY NUMBER(4), EMP_ADD_EXCHANGE NUMBER(4), DPT_NO VARCHAR2(5), EMP_CRE_DATE DATE, EMP_CRE_NAME VARCHAR2(20), CONSTRAINT EMP_ID_PK PRIMARY KEY(EMP_ID), CONSTRAINT NAT_NO_FK FOREIGN KEY (NAT_NO) REFERENCES NATIONALITY (NAT_NO), CONSTRAINT DPT_NO_FK FOREIGN KEY (DPT_NO) REFERENCES DEPARTMENTS (DPT_NO) ) /

وهـــو رقـــم الجنـــسية وضـــع باســـم مختلـــف ألنـــه تـــابع لجـــدول NAT_NO إن الحـــظونـــ بالنــسبة ل أساســي إلــى وهــو يرمــز DPT_NOوهــو جــدول الجنــسيات وكــذلك الحال

إنـشاء فهي تفيد في حالة تاريخ EMP_CRE_DATE إلى بالنسبة أما. اإلدارةرقم بإنــشاء اســم المــستخدم الــذي قــام بإضــافة فتفيــد EMP_CRE_NAME أمــاالحقــل نـربط حقـل فـي جـدول أن عنـدما نريـد أننـا بعين االعتبار األخذ يجب طبعا حقلهذا ال

. يكون من نفس النوعأن فيجب آخرمعين بحقل

DESCRIBE YOUR_TABLENAME : الحـظ هـذه القيمـة نيقوم بعرض الحقول التي بالجدول ونوع كل حقل وسوف أمر وهو

NOT NULL الذي قمنا بتحديـده األساسي قيمة فارغة وهو المفتاحلال يقب انه أي

Page 88: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

9

بالشكليعرض وسوفDESC EMPLOYEES : ويمكن كتابته باالختصارسابقا :التالي

SQL <DESCRIBE EMPLOYEES

NAME NULL? TYPE EMP_ID NOT NULL VARCHAR2(10) EMP_NAME VARCHAR2(50) EMP_BIRTH_DATE DATE EMP_SEX VARCHAR2(1) NAT_NO VARCHAR2(5) EMP_HIRE_DATE DATE EMP_BASIC_SALARY NUMBER(4) EMP_ADD_EXCHANGE NUMBER(4) DPT_NO VARCHAR2(5) EMP_CRE_DATE DATE EMP_CRE_NAME VARCHAR2(20)

وربط الجداول مع بعضهاإنشاء تم هكذاو

Page 89: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

10

:األسئلة جدول للطالب مكون من ثالثة حقول حيـث يقبـل رقـم الطالـب إنشاءبين كيف يتم -1

حـرف وتـاريخ 20 ومكون من وأرقام أحرف واسم الطالب يقبل 5 وطوله وأرقام فأحر ؟ميالد الطالب

: ما المقصود بالمحددات التالية ـ2 PRIMARY KEYاألساسي المفتاح ـأ ؟ FOREIGN KEYالمفتاح المرجعي ـ ب .FOREIGN KEY بين بمثالـ كيف يتم ربط جدولين ببعضهما باستخدام الـ ـ 3

:اجب بنعم أو ال مع ذكر السبب ـ 4

ولنفــرض انهمــا PRIMARY KEY أساســيينيوجــد لــدينا جــدول مكــون مــن حقلــين :بإضافة لو قمنا اإلضافة فهل تقبل قاعدة البيانات إدارتهرقم الموظف ورقم

10 = اإلدارة ورقم e0001= رقم الموظف 10= اإلدارة ورقم e0002= رقم الموظفواضافة

Page 90: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

11

مليات التي تتم على الجداولالع Delete حذف Update تعديل Insert إضافة

:insert اإلضافة ـ1

مجموعــــة مــــن البيانــــات علــــى مجموعــــة مــــن إضــــافة هــــو عمليــــة باإلضــــافةالمقــــصود ثـــم نكتـــب insertاألمـــر بطباعـــة اإلضـــافةوتكـــون طريقـــة الحقـــول فـــي جـــدول معـــين

intoالبيانـات فيهـا إدخالــ سـماء الحقـول المـراد ثـم نكتـب أ ثم اسم الجدول ونفـتح قـوس نــضيف أيــضا إلــى الجــداول التــي ال تقبــل القــيم الفارغــة أن بعــين االعتبــار األخــذمــع

ـــ أخــرى وكــذلك الحقــول المربوطــة بحقــول Primary keyمثــل المفتــاح األساســي الforeign key األمـــر وبعـــدها نكتـــبvalues يكـــون ترتيـــب أن ونفـــتح قـــوس ويجـــب

نــــوع الحقــــل أن بعــــين االعتبــــار األخــــذمــــع بــــنفس ترتيــــب الحقــــول فــــي البدايــــةالقــــيمVARCHAR2 ـــــين ـــــين عالمت ـــــاريخ ' VALUE' يوضـــــع ب أن يجـــــب DATEوالت

ت ا فتوضــــــع بــــــدون عالمــــــاألرقــــــام أمــــــا ' VALUE'تــــــضعه أيــــــضا بــــــين عالمتــــــين SINGLE CUTAION ويجب عمـلcommit ; وهـو أمـر يطبـع لتخـزين معلومـة

انـات وهـي تـستخدم بعـد اإلضـافة أو الحـذف أو التعـديل لتأكيـد العمليـةعلى قاعدة البي بعـــد مجموعـــة مـــن العمليـــات مـــثال إضـــافة عـــدد واحـــد مـــن أيـــضاويمكـــن اســـتخدامها

.السطور أو مجموعة من السطور :القاعدة

INSERT INTO table (column-1, column-2, ... column-n) VALUES (value-1, value-2, ... value-n);

.وأخرى نستخدم الفاصلة بين كل قيمة إنناالحظ هنا ون

:مثال

Page 91: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

12

: على جدول الجنسيات حيث يتألف من إضافةNAT_NOرقم الجنسية

NAT_NAMEاسم الجنسية NAT_CRE_DATEتاريخ اإلضافة

NAT_CRE_NAMEتاريخ التعديل

INSERT INTO NATIONALITY(NAT_NO,NAT_NAME,NAT_CRE_DATE,NAT_CRE_NAME) VALUES('001','SAUDI',SYSDATE,USER); INSERT INTO NATIONALITY(NAT_NO,NAT_NAME,NAT_CRE_DATE,NAT_CRE_NAME) VALUES('002','JORDAN',SYSDATE,USER); INSERT INTO NATIONALITY(NAT_NO,NAT_NAME,NAT_CRE_DATE,NAT_CRE_NAME) VALUES('003','EGYPT',SYSDATE,USER); INSERT INTO DEPARTMENTS(DPT_NO,DPT_NAME,DPT_CRE_NAME,DPT_CRE_DATE) VALUES ('DP01','EMPLOYEES',USER,SYSDATE); INSERT INTO DEPARTMENTS(DPT_NO,DPT_NAME,DPT_CRE_NAME,DPT_CRE_DATE) VALUES ('DP02','ACCOUNT',USER,SYSDATE); INSERT INTO DEPARTMENTS(DPT_NO,DPT_NAME,DPT_CRE_NAME,DPT_CRE_DATE) VALUES ('DP03','COMPUTER',USER,SYSDATE) COMMIT;

Page 92: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

13

:DELETE الحذف ـ2 :حذف مجموعة من السجالت ضمن شرط معين أو من غير شرط

ثم اسم الجدول DELETEاألمر نكتب ثم تكتب اسم الجدولFROM ثم تكتب DELETE تكتب األمر أو

DELETE FROM table name DELETE TBALE_NAME

:مثال . وجدول الجنسياتتاإلداراقوم بحذف جميع سجالت جدول سنهنا

DELETE DEPARTMENTS; DELETE FROM NATIONALITY; COMMIT;

.ولكن يفضل استخدام الشرط حيث تحدد الحقل الذي تريد حذفه

بتحققـهإال عمليـة الحـذف تـتموهـو شـرط ال :WHERE CONTIONاسـتخدام

ANDر من شرط والفصل بينهما عن طريق كثأويمكن وضع

DELETE FROM DEPARMENTS WHERE DPT_NO='DP02' COMMIT;

Page 93: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

14

:UPDATE التعديل ـ3للقيـــام بالتعـــديل و علـــى الجـــدول كـــامالوهـــو القيـــام بعمـــل تعـــديل علـــى الحقـــول أيـــضا

. ثم اسم الحقل المراد تعديلهSET ثم نكتب اسم الجدول ثم نكتب UPDATEكتبن

update table_name set field_name = value

:مثال

UPDATE DEPARTMETS SET DPT_NAME='ALL' whereوكــذلك باســتخدام الـــ مــن قيمـة باســتخدام الفاصــلةأكثــر نعــدل أنيمكــن كمـا

conditionلنحدد الحقول المراد التعديل عليها كما في الشكل التالي :

update table name set field name = value,field_name2=value

:مثال

UPDATE DEPARTMETS SET DPT_NAME='ALL' ,DPT_NO='02' WHERE DPT_NO='DPT02'

سابقانا الحقول في الجداول كما ذكرأنواعمع مالحظة مراعاة

Page 94: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

15

Select Statement وكيف يمكن التعامل معهاأنواعها : بيـان أو إحـضارخاللـه يتـيح لنـا مـن أمـر إنهـا علـى Select Statementتعـرف الــ

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

Update Delete Insert وكذلك يمكـن اسـتخدامها مـع عـدة function واقـصد بهـا .معادالت جاهزة

: البسيطةSELECT جملة ـ1 أي * اكتــب كنــت تريــد عــرض كــل الحقــول إذا ثــم اســم الحقــول أو SELECTكتــب ن

فتـصبح FROM تحـدد اسـم الجـدول بعـد الــ أن إيعاز وهنا تعطي FROMنجمة ثم :بالشكل التالي

SELECT * FROM <table name>;

:مثالـ

SELECT * FROM NATIONALITY .ا جميع محتويات جدول الجنسياتهذا المثالـ يعرض لن

: التي تحدد فيها أسماء الحقول في الجدولSELECT جملة الـ ـ2

بأسماء حقول * نما تستبدل النجمة ا واألولى الحالةفهي ال تختلف عن

SELECT <column name, column name, ..., <column name> FROM <table name>;

Page 95: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

16

:مثال

SELECT DPT_NO,DPT_NAME FROM DEPARTMENTS . ورقمها فقط اإلدارة اسم SELECTـحددنا بالهو أننا الفرق هنا و :WHERE CONDTION مع الـ SELECTجملة الـ ـ 3

WHERE CONDITIONشرط مع لل تخضعوهي

SELECT * FROM <table_name> WHERE ....

:مثال

SELECT * FROM DEPARTMENTS WHERE DPT_NO='DP01'

DELETE و INSERT و UPDATE مـــع SELECT اســـتخدام الــــ ـ4

:CREATE TABLE الجدول إنشاءوكذلك :INSERT مع SELECT استخدام الـ ـأ

ـــ اإلضــافةيــتم ـــ INSERT علــى الجــدول باســتخدام جملــة ال وتحــدد بالمقابــل جملــة الSELECT ة إلضــافلريــد نــسخ بيانــات جــدول مــن آخــر ن ا كنــإذا وهــذه الحالــة تؤخــذ

.SELECTلك حسب البيان الذي يأتي من ذداخل نفس الجدول و INSERT INTO TABLE_NAME (COLOUMN1...,COLOUMN2...) SELECT COLOUMN1...,COLOUMN2...) FROM OTHER_TABLE_NAME WHERE .....

:مثال

Page 96: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

17

INSERT INTO DEPARTMENTS(DPT_NO,DPT_NAME) SELECT NAT_NO,NAT_NAME FROM NATIONALITY;

نوع الحقول في كل جدول متساويةأنعلى افتراض :DELETE مع SELECT استخدام الـ ـب

DELETE FROM TABLE_NAME WHERE COLOUMN_NAME [COLOR=blue]IN[/COLOR] (SELECT COLUMN FROM TABLE NAME WHERE ....

IN وهـي WHERE CONDTION تـستخدم مـع FUNCTIONهنـا اسـتخدمنا SELECT هـــــــــل القيمـــــــــة معينـــــــــة موجـــــــــودة ضـــــــــمن جملـــــــــة الــــــــــ أنويقـــــــــصد بهـــــــــا

ــــشكل ــــا فقــــط ب ــــستعرضها هن ــــأتي لهــــا بالتفــــصيل ان شــــاء اهللا ولكــــن ن طبعــــا ســــوف ن .مختصر

:UPDATE مع الـ SELECT استخدام الـ ـج

UPDATE TABLE_NAME SET COUMN_NAME= SELECT CLOUMN_NAME FROM TABLE_NAME WHERE ....

كثرأ ترجع قيمة واحدة ال SELECTالـ جملة أن أساسعلى

Page 97: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

18

:CREATE TABLE مع SELECT استخدام الـ ـد :القاعدة

CREATE TABLE new_table AS (SELECT column_1, column2, ... column_n FROM old_table_1, old_table_2, ... old_table_n);

SELECTوهنا تنشئ جدول باستخدام جملة الـ

:مثالCREATE TABLE DEPT AS (SELECT DPT_NO,DPT_NAME FROM DEPARTMENTS WHERE DPT_NO='DP001 )'

Page 98: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

19

في األوراكلfunctionsالدوال :ترتيب البياناتفي فرز وتصنيف وساعد الدوال ت

: البيانات هيرز وتصنيفالدوال التي تساعد في ف ـ 1ALIASES: نحــن اســم بــأيلحقــل ستبدل اســم انــ المــستعارة يعنــي باألســماءوتــسمى

.حدده كي تعرض في العناوينن

select sysdate as "My Date" from dual; My Date -------- 22-10-06

DISTINCT: ــــــــ تـــــــصنيفوتـــــــستخدم ل ـــــــة ال البيانـــــــات المتكـــــــررة وتـــــــأتي بعـــــــد جملSELECT بــالحقول التــي المتــشابه البيانــات تتعامــل مــع إنهــا مباشــرة ومــن مميزاتهــا :لو كانت لدينا البيانات التاليةف .SELECTلـ تأتي بجملة ا

1980-07-02 تاريخ ميالده عماراسم الموظف 1981-07-02 تاريخ ميالده عماراسم الموظف

ـــــ ــــة ال ــــي SELECTواســــتخدمنا جمل ــــاريخ مــــيالده مــــع إحــــضار ف اســــم الموظــــف وتDISTINCTالحــظ انــه ســوف يرجــع القيمتــين والــسبب ألن تــاريخ المــيالد مختلــف ن

اســم الموظــف فقــط فــسوف يحــضر قيمــة إحــضار لكــن لــو طلبنــا .بينمــا االســم متــشابه :وقاعدة استخدامها هي واحدة وهي اسم الموظف

SELECT DISTINCT CLOUMN1...,COLUMN2.. FROM TABLE_NAME

SELECT DISTINCT DPT_NAME FROM DEPARTMENTS

Page 99: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

20

UPPER و LOWER: ـــــــــــــى زيـــــــــــــةاإلنجلي األحـــــــــــــرفوتـــــــــــــستخدم لتحويـــــــــــــل إلCAPITAL باستخدام UPPER والىSMMAL باستخدام LOWER

:القاعدة

SELECT UPPER(CLOUMN OR STRING) FROM TABLE NAME SELECT LOWER(CLOUMN OR STRING) FROM TABLE NAME

:مثال

SELECT LOWER('ADMIN05') FROM DUAL; SELECT UPPER('admin05') FROM DUAL;

.حنا عنه سابقا شرDUALوجدول الـ

SELECT UPPER('DPT_NAME'),LOWER(DPT_NAME FROM DEPARTMENTS

ـــا نعـــرض اســـم هـــذه إنمـــع مالحظـــة SMALL ومـــرة CAPITAL مـــرة اإلدارةهن . اللغة العربيةأحرفعلى بالطبع الدوال ال تنطبق

initcap: إلىوتستخدم لتحويل حرف من كل كلمة capital

select initcap(cloumname or string) from table_name

select initcap('admin05') from dual;

NVL: ــــ نحـــددها قـــيم نحـــنإلـــى NULLوتـــستخدم للتعـــويض عـــن القـــيم الفارغـــة ال . والحروفاألرقامواستخداماتها في

SELECT NVL(CLUMONAME,YOUR_VALUE) FROM TABLE NAME

Page 100: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

21

:مثال

SELECT NVL(dpt_name,'not found') from departments select NVL(number,0) from dual

to char: قيمـة إلـىوهي تستخدم للتحويل كل شيء stringتـاريخ أو ترتيـب مـثال

.حسب قناع معين

select to_char(cloumn,'ur mask') from table name select to_char(cloumn) from table name select to_char(sysdate,'dd-mm-yyyy') from dual select to_char(sysdate) from dual;

ORDER BY: تــصاعدي أو إمــا تعنــى بترتيــب البيانــات بــشكل مــنظم دالــةوهــي حيــث SELECT جملــة الـــ آخــر وتكتــب فــي SELECTتنــازلي وتــستخدم بجملــة الـــ

ـ كنـــت الترتيـــب تـــصاعدي ويرمـــز لهـــا بـــإذانكتبهـــا ونكتـــب اســـم الحقـــل ويكتـــب بعـــدها ASC زلها بالرممز رثم تنازلي وي DESC.

ORDER BY COLUMN_NAME ASC SELECT DPT_NO,DPT_NAME FROM DEPARTMENTS ORDER BY DPT_NO ASC

GROUP BY: ـ بــه بالمجموعــات ويــستخدم الــدمــا يقــص وهــوGROUP BY

لتمثيـــل أو تقـــسيم المعلومـــات علـــى شـــكل مجموعـــات ســـواء مجموعـــة واحـــدة أو عـــدة .مجموعات

SELECT column1, column2, ... column_n, aggregate_function (expression) FROM tables WHERE predicates GROUP BY column1, column2, ... column_n;

Page 101: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

22

فكرتـــه عنـــد اســـتخدامه مـــع معـــادالت تتـــضح وســـوف اســـتخدامهالحـــظ كيـــف يمكـــن ون

.إدارة في كل األقسام عدد إيجاد فالهدف هو مثال أخرى

Count: عـــدد الحقـــول فـــي الجـــدول ويمكـــن إلرجـــاعوهـــو عبـــارة عـــن عـــدد يـــستخدم :التالياستخدامه بالشكل

SELECT COUNT(expression) FROM tables WHERE predicates;

نـضع اسـم حقـل ليرجـع لنـا أنلـذلك نـستطيع العـدد إجمالي يرجع COUNT الـ طبعا

* بيانــات جــدول وذلــك باســتخدام النجمــة نرجــع عــدد أن أو نــستطيع عــدد بياناتــه مــثال مــع اســم اإلداراتلــذلك يجــب توضــيح نقطــة انــه لــو طلــب منــا اســترجاع بيانــات عــدد

.GROUP BY نستخدم معها أن لذلك يجب اإلدارة

SELECT COUNT(DPT_NO) as "Number of Dept",DPT_NAME FROM DEPARTMENTS GROUP BY DPT_NAME

نــسترجع فقــط عــدد نــا كإذا فــي حالــة GROUP BYلـــ اCOUNTال نــستخدم مــع

.شيء معين

SUM: األرقام مجموع عدد من إيجادوهو:

Page 102: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

23

SELECT SUM(expression ) FROM tables WHERE predicates;

DISTINCT مع SUM يستخدم الـ أنيمكن

:مثال

SELECT SUM(DISTINCT salary) as "Total Salary" FROM employees WHERE salary > 25000;

.هنا يتم جمع البيانات غير المكررة الجمــع كطــرح أو ضــرب أو قــسمة نتيجــة علــى رقــم معــين أثنــاءويمكــن عمــل عمليــات

:من كل حقل كما في المثال التاليSELECT SUM(sales*0.10) as "Commission" FROM order details;

GROUP BY مع SUMـستخدم التو

:مثال

SELECT department, SUM (sales) as "Total sales" FROM order_details GROUP BY department;

MAX: البيانات اكبر قيمة بين مجموعة من إرجاعوهو.

SELECT MAX (expression) FROM tables WHERE predicates;

MIN: وهو عكس الـMAXحيث يرجع اقل قيمة بين مجموعة من البيانات

Page 103: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

24

SELECT MIN (expression) FROM tables WHERE predicates;

:مثال

SELECT MIN(salary) as "Lowest salary" FROM employees;

أمــــا ألنــــه عبــــارة عــــن رمــــز فــــردي DPT_NAMEالحــــظ كيــــف انــــه وضــــعنا الـــــ ونCOUNTDPT_NO عبارة عن مجموعة لذلك يستخدم معها الـGROUP BY

.MAX,MIN,SUMوكذلك الحالـ بالنسبة الـ

HAVING: عــن الناتجــةانــات ي البلفــرزويــستخدم GROUP BY ستطيع نــ حيــث

أي أو GROUP BY الـــ أعمــدةم فقــط اســتخداوضــع شــرط معــين مــن خاللهــا وهــو . مجموعةإلىشيء ينتمي

: القاعدة

SELECT column1, column2, ... column_n, aggregate_function (expression) FROM tables WHERE predicates GROUP BY column1, column2, ... column_n HAVING condition1 ... condition_n;

SUM,MAX,MIN,COUNT مع أيضاويستخدم

Page 104: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

25

:أمثلة :SUMمثال على

SELECT department, SUM(sales) as "Total sales" FROM order_details GROUP BY department HAVING SUM(sales) > 1000;

:COUNT[/COLOR] على لمثا

[COLOR=red]

SELECT department, COUNT(*) as "Number of employees" FROM employees WHERE salary > 25000 GROUP BY department HAVING COUNT(*) > 10;

:MINمثال على

SELECT department, MIN(salary) as "Lowest salary" FROM employees GROUP BY department HAVING MIN(salary) = 35000;

:MAX[/COLOR] على مثال[COLOR=red] SELECT department, MAX(salary) as "Highest salary" FROM employees GROUP BY department HAVING MAX(salary) < 50000;

Page 105: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

26

BETWEEN) / بين(أو )إلى من :( ل لوضع مقارنة في جملة الشرط عموتست

SELECT columns FROM tables WHERE column1 between value1 and value2;

:مثال

SELECT * FROM suppliers WHERE supplier_id between 4000 and 4500;

NOT BETWEENليس بينما ( والمقصود بها:(

NOT الــ خدام جملة الشرط باسـتإلى البيانات التي ال تنتمي إحضاروهو عبارة عن

BETWEEN

SELECT * FROM suppliers WHERE supplier_id not between 4000 and 4500;

Page 106: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

27

:األسئلة ؟marketing =اإلدارة اسم DP04 =اإلدارة رقم اإلدارات القيم التالية إلى جدول ـ أضف1 :فضل الطرق في عملية الحذف أو التعديلأما هي ـ 2

العادية ولماذا ؟ أو بالطريقةwhere conditionباستخدام الـ

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

؟ما اسم الدالة التي تقوم بتثبيت البيانات ـ 4

اإلدارة؟ ورقمها وترتبها حسب اإلدارة تعرض من خاللها اسم selectاكتب جملة ـ 5 ؟غير المكررة لجنسية الموظف من جدول الجنسيات تعرض البيانات select اكتب جملة ـ6

.DP01 رقم اإلدارةكون ت أن على select جدول باستخدام جملة الـ إنشاء مثال على أعطي ـ7

؟select statement وحذف وتعديل الجدول باستخدام الـ إضافة مثال على أعطي ـ8

هو السنة 2006و الشهر و ه01 إن حيث 2006- 01 مثال تبين فيه شكل التاريخ ـ أعطي9 ؟ to_char دالةمن خالل استخدام

؟select كيف يمكن استغاللها في جملة initcap و nvl ةبين باستخدام الدوال التالي ـ 10

؟sum نجمع بيانات غير مكررة باستخدام أنين بمثال كيف يمكن ـ ب11

؟ي وترتيبها بشكل تصاعدإدارة واسم كل اإلداراتبين عدد ـ 12 إدارة ؟بين عدد واسم اصغر ـ 13 ؟not between و betweenبين ما هو الفرق في استخدام ـ 14 ؟5كبر من أ يكون العدد أن بشرط إدارة واسم كل اإلداراتبين عدد ـ 15

TO_DATE: ــ ــةتقــوم هــذه الدال هــذه أخــذنا تــاريخ فلــو إلــى STRINGـ بتحويــل ال . DATE إلى نحولها نأ فيمكن STRING إنها أساسعلى

Page 107: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

28

to date( string1, [ format mask ], [ nls_language ] ) . هو عبارة عن التاريخ المراد تحويله STRING1 أنحيث

FROMAT_MASK: ــ هــو عبــارة عــن وقــد إليهــاصيغة المــراد تحويــل التــاريخ ال

.STRING إلى فيما سبق استخدامات أو تحويالت التاريخ نااستعرض

NLS_LANGUAGE: ستطيع وضـع نـوهو صيغة التاريخ وهـي اختياريـة حيـث .صيغة التاريخ الهجري مثال

:مثال

to_date('2003/07/09', 'yyyy/mm/dd') would return a date value of July 9, 2003. to_date('070903', 'MMDDYY') would return a date value of July 9, 2003. to_date('20020315', 'yyyymmdd') would return a date value of Mar 15, 2002.

LAST_DAY: هـــو ف تـــاريخ أي أدخلنـــا ؛؛ فـــإذا شـــهر فقـــطآخـــر تـــاريخ إرجـــاعوهـــو

. يوم في هذا الشهرآخر نايرجع لس :القاعدة

last day( date ) :مثال

last day(to_date('2003/03/15' ,'yyyy/mm/dd')) would return Mar 31, 2003 last day(to_date('2003/02/03' ,'yyyy/mm/dd')) would return Feb 28, 2003 last day(to_date('2004/02/03' ,'yyyy/mm/dd')) would return Feb 29, 2004

ADD_MONTHS : شهر على التاريخ المعطىإلضافةوهو :القاعدة

add months( date1, n )

Page 108: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

29

أو زيادتهااألشهر إنقاصوممكن ه إضافت هو عدد المراد nحيث :مثال

add_months('01-Aug-03', 3) would return '01-Nov-03' add_months('01-Aug-03', -3) would return '01-May-03' add_months('21-Aug-03', -3) would return '21-May-03' add_months('31-Jan-03', 1) would return '28-Feb-03'

NEXT_DAY: على التاريخ المعطىاأليام يوم أو عدد من إضافةوهو .

next date(date1,n) ــــ ـــ أو إضـــافتها المـــراد األيـــام هـــو عـــدد nحيـــث ال ستطيع وضـــع اســـم اليـــوم فـــي هـــذا ن . تاريخهنا فيحضر لاألسبوع

NEXT_DAY('01-01-2006',5) RETURN '06-01-2006' NEXT_DAY('15-01-2006',-5) RETURN '10-01-2006'

next_day('01-Aug-03', 'TUESDAY')

Page 109: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

30

TRIM: في الكلمة سواء من جهة اليمين أو اليسار أو مـن األحرفتستخدم لحذف الوسط

trim( [ leading | trailing | both [ trim character ] ] string1 ) تـــــستخدم trailing الكلمـــــةأول تـــــستخدم لحـــــذف الحـــــروف مـــــن leading إنحيـــــث موجـود جهـةأي تـستخدم لحـذف الحـروف مـن both ف الحروف من آخر الكلمةلحذ

فـــان trim لـــم يـــتم اســـتخدام هـــذه المتغيـــرات مـــع واذا)وســـط/يـــسار/يمـــين(فـــي الكلمـــة .قطالحذف يكون للفراغات ف

trim(' tech ') فراغات بدون سوف نرجع القيمة'tech'

trim(' ' from ' tech ') استخدمناأنناوالحظا فراغاتسوف ترجع الكلمة بدون from 'tech'

trim(leading '0' from '000123') 123' من بداية الجملةاألصفار سوف يتم حذف'

trim(trailing '1' from 'Tech1') واحد من اآلخرلا سوف يتم حذف'Tech'

trim(both '1' from '123Tech111') واحد من اليمين سوف يتم حذف الرقم '23Tech'مالوالش

: Ltrim األحــرف تحــذف إنهــامميزاتهــا مــن و.تــستخدم للحــذف مــن جهــة اليــسار

.المراد حذفها سواء كانت مرتبه أو ال

ltrim( string1, [ trim_string ] ) :أمثلة

ltrim(' tech'); would return 'tech' ltrim(' tech', ' '); would return 'tech' ltrim('000123', '0'); would return '123' ltrim('123123Tech', '123'); would return 'Tech' ltrim('123123Tech123', '123'); would return 'Tech123' ltrim('xyxzyyyTech', 'xyz'); would return 'Tech' ltrim('6372Tech', '0123456789'); would return 'Tech'

رغم تكرارهاyحذف الـ نالحظ كيف نوهنا

Rtrim: نفس مبدأ عملtrim ولكنها عكس Ltrimحيث تحذف من جهة اليمين

Page 110: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

31

rtrim( string1, [ trim_string ] ) :أمثلة

rtrim('tech '); would return 'tech' rtrim('tech ', ' '); would return 'tech' rtrim('123000', '0'); would return '123' rtrim('Tech123123', '123'); would return 'Tech' rtrim('123Tech123', '123'); would return '123Tech' rtrim('Techxyxzyyy', 'xyz'); would return 'Tech' rtrim('Tech6372', '0123456789'); would return 'Tech'

LPAD: طبعـاوتستخدم لزيادة عدد مـن الفراغـات أو تكـرار الكلمـة مـن جهـة اليـسار .سوف يبدأ من جهة اليسار ليزيد

lpad( string1, padded length, [ pad string ] ) يـــنقص منـــه طـــول الكلمـــة هـــو العـــدد المـــراد زيادتـــه طبعـــاpadded lengthحيـــث

طول طبعا10 العدد وأعطى+ يزيد عليها أن وأرادRRR الكلمة أعطانالو فرضنا فم فيـــــــصبح الـــــــشكل الكلمـــــــة كمـــــــا يلـــــــي نجـــــــ7 يعنـــــــي ســـــــوف يزيـــــــد 3الكلمـــــــة هـــــــي

RRR+++++++

:أمثلة

lpad('tech', 7); would return ' tech' lpad('tech', 2); would return 'te' lpad('tech', 8, '0'); would return '0000tech' lpad('tech on the net', 15, 'z'); would return 'tech on the net' lpad('tech on the net', 16, 'z'); would return 'ztech on the net'

Page 111: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

32

RPAD: وتستخدم لزيادة عدد مـن الفراغـات أو تكـرار الكلمـة مـن جهـة اليمـين طبعـا .سوف يبدأ من جهة اليمين ليزيد

rpad( string1, padded_length, [ pad_string ] ) : أمثلة

rpad('tech', 7); would return 'tech ' rpad('tech', 2); would return 'te' rpad('tech', 8, '0'); would return 'tech0000' rpad('tech on the net', 15, 'z'); would return 'tech on the net' rpad('tech on the net', 16, 'z'); would return 'tech on the netz'

SUBSTR: تحـدد بدايـة القطـع أن يستخدم لقطع جملة معينة أو كلمة معينة ويجب

. أو طول المراد قطعهاألحرفوعدد

substr( string, start position, [ length ] ) كـان الـرقم واذا واحـدإلـى تغيـر القيمـة SUBSTR كان بداية القطع صـفر فـإن الــ إذا

كـان الـرقم بدايــة واذابدايـة القطـع هـو موجـب فانـه يبـدأ مـن بدايـة الكلمـة يعنـي اليـسار .طع هو سالب فانه يبدأ من نهاية الكلمة يعني اليمينالق

:أمثلة

substr('This is a test', 6, 2) would return 'is' substr('This is a test', 6) would return 'is a test' substr('TechOnTheNet', 1, 4) would return 'Tech' substr('TechOnTheNet', -3, 3) would return 'Net' substr('TechOnTheNet', -6, 3) would return 'The' substr('TechOnTheNet', -8, 2) would return 'On'

INS: موقع الحرف في الكلمة وكذلك يستخدم للبحث عن حرف في إلرجاعيستخدم يــستغل فــي معالجــة أن يرجــع القيمــة صــفر ويمكــن واالموقعــه ل وجــده يرجــع فــإذاكلمــة

.ناتبعض البيا

Page 112: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

33

instr( string1, string2, [ start_position ], [ nth_appearance ] )

:أمثلة

instr('Tech on the net', 'e') would return 2; the first occurrence of 'e' instr('Tech on the net', 'e', 1, 1) would return 2; the first occurrence of 'e' instr('Tech on the net', 'e', 1, 2) would return 11; the second occurrence of 'e' instr('Tech on the net', 'e', 1, 3) would return 14; the third occurrence of 'e' instr('Tech on the net', 'e', -3, 2) would return 2.

LENGTH: الجملة طول الكلمة أو إلرجاعيستخدم.

length( string1 ) :مثال

length(NULL) would return NULL. length('') would return NULL. length('Tech on the Net') would return 15. length('Tech on the Net ') would return 16.

TRANSLATE: يبـدل حيـث حددها بأخرىن نحن معينه أحرفيستخدم الستبدال

RTYYRT مـــن الكلمـــة RTY األحـــرفددنا يعنـــي لـــو حـــ كـــل حـــرف مقابلـــه حـــرف سـوف يبـدلها T وبـدل 3 ـ سوف يبـدلها بـYالحظ انه بدل الـ ن QW3 ـ بإبدالهاونريد ــــــــــــ W ـبـــــــــــ QW33QWلتـــــــــــصبح الكلمـــــــــــة Q ـ ســـــــــــوف يبـــــــــــدلها بـــــــــــR وبـــــــــــدل ال

Page 113: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

34

:القاعدة

translate( string1, string_to_replace, replacement_string (

بالكلمـــــــــــــــــةإبــــــــــــــــدالها المـــــــــــــــــراد األحــــــــــــــــرف هـــــــــــــــــوstring_to_replaceحيــــــــــــــــث replacement_string القديمةباألحرف إبدالها الجديدة المراد األحرف .

:أمثلة

translate('1tech23', '123', '456); would return '4tech56' translate('222tech, '2ec', '3it'); would return '333tith'

REPLACE: ـ الكلماتوتستخدم لحذف أو استبدالreplace( string1,

string_to_replace, [ replacement_string( [

تقريبـــاTRANSLATE الكلمـــة المـــراد اســـتبدالها وهـــي تـــشبه الــــ أنحيـــث تبـــين هنـــا تعمـل REPLACEـ الـأمـا فقـط األحـرف تبـدل TRANSLATE الــ إنوالفرق هو

بهــــا فيمــــا لــــو االســــتبدال اد المــــراألحــــرف لــــم نحــــدد لهــــا واالســــتبدال إذاعلــــى الحــــذف :استخدمت فقط بالشكل التالي

replace('123123tech', '123'); would return 'tech' replace('123tech123', '123'); would return 'tech'

TRANSLATE تشبه عمل فإنها استخدمت بالشكل التالي إذا أما

replace('222tech, '2', '3'); would return '333tech' replace('0000123', '0'); would return '123' replace('0000123', '0', ' '); would return ' 123'

Page 114: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

35

Page 115: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

36

CONCAT: بعضمع أكثريستخدم لدمج كلمتين أو.

concat( string1, string2 ) ||ويمكن استبدالها بالرمز

concat('Tech on', ' the Net'); would return 'Tech on the Net'. concat('a', 'b') would return 'ab'. 'Tech on'|| ' the Net' would return 'Tech on the Net'. 'a'|| 'b' would return 'ab'.

Page 116: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

37

:األسئلةوالبيانـــات بالـــشكل لـــدينا الجـــدول التـــالي يحتـــوي علـــى اســـم الموظـــف ورقـــم الموظـــف

:التالي

emp_no emp_name birth_date

10 ali ahmed ali 20-01-1970

20 Admin05 05 05 20-02-1976

30 ahmed moheme 20-01-1960

40 50dfgdr50 20-10-1950

؟ شهور 5 الموظفين وتاريخ ميالدهم بزيادة أسماءاعرض - 1 أيام؟ 5 يكون تاريخ الميالد زيادة أن الموظفين وتاريخ ميالدهم على أسماءاعرض -2 ؟ من كل اسمفأحر 3 أولاحذف - 3 ؟ لدمج اسم الموظف ورقمهconcatاستخدم الـ - 4 ؟ من كل اسمe ب aاستبدل الـ الحرف - 5 ؟ من كل اسمmبين موقع الحرف - 6 ؟بين طول كل اسم من كل حرف- 7 ؟ واعرضهاv من كل اسم بحرف أحرف 3 آخراستبدل - 8 أخرى ؟رة نجم من جهة اليمين لكل اسم مرة وكن جهة اليسار م9 أضف- 9

؟ابدأ القطع لكل اسم من الموقع الثالث-10

Page 117: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

38

):Subqueries (ـالأشكال 1- WHERE CONDITION:

select * from all_tables tabs where tabs.table_name in (select cols.table_name from all_tab_columns cols where cols.column_name = 'SUPPLIER_ID');

ح مفهوم هـل ي لتوضIN واستخدمنا الـ WHERE محور الحدث كله حول نأظ الحن

عرض سـتوكأننـا نقـول ا هذا البيان موجود ضمن مجموعة من البيانات في جدول آخـر اسـم الجـدول موجـود يكـون مـثالأن علـى all_tablesلنا جميع البيانـات مـن الجـدول

.ل الجداوأسماء بحيث ترجع جميع أخرى selectضمن جملة where cols.column_name in (select * from table_name)

:توضيحيمثال

؟ العامةاإلدارة يكون الموظفين في أنعرض اسم الموظف ورقمه على ستا

SELECT EMP_NAME,EMP_NO FROM EMPLOYEES WHERE DPT_NO IN (SELECT DPT_NO FROM DEPARTMENTS

WHERE DPT_NAME=' ' العامةاإلدارة أن مــثال علــى 10 رقــم اإلدارة إلــى المــوظفين الــذين ينتمــون أســماء ســوف يعــرض هنــا

). العامةإلدارةا ( الثانية وتكون اسمهSELECT ضمن جملة الـ اإلدارةتكون هذه

Page 118: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

39

2- UNION Query: فـي أكثـرويقصد بها دمج استعالمين لحقلين متشابهين أو يكــون عــدد أنيانــات المتكــررة علــى البإظهــارويــستفاد منهــا بعــدم . جــدولين مختلفــين

. مساوي لعدد الحقول للجدول الثانياألولالحقول في الجدول

select field1, field2, . field_n from tables UNION select field1, field2, . field_n from tables;

:مثال

select supplier_id from suppliers UNION select supplier_id from orders;

:union مع With ORDER BY Clauseاستخدام

......وهكذا1 برقم األول ترمز السم الحقل أنن ك وممunio الـ آخرتوضع في

select supplier_id, supplier_name from suppliers where supplier_id > 2000 UNION select company_id, company_name from companies where company_id > 1000 ORDER BY 2;

واليعنــي الــرقم عــدد company_name وكــذلك supplier_name هــو رمــز 2رقــم Order Byالحقول ولكن تعني الترتيب فلو وحدنا األسماء لكتبنا األسماء بعد

CODE]select supplier_id, supplier_name as "name" from suppliers

where supplier_id < 2000

Page 119: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

40

UNION select company_id ,company_name as "name"

from companies where company_id < 1000

ORDER BY name;[/CODE[

:UNION ALL Queryاستخدام ولكن تعرض جميع البيانات في الجدولين مع التكرارunionهي نفس مبدأ عمل الـ

select field1, field2, . field_n from tables UNION ALL select field1, field2, . field_n from tables;

:مثال

select supplier_id from suppliers UNION ALL select supplier_id from orders;

Page 120: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

41

-3y-INTERSECT Quer : وهــــو دمــــج البيانــــات مــــع فــــارق انــــه يعــــرض البيانــــات union الـــــ يــــشبهومبــــدأ عملــــه

الغيـر موجودة في الجدول الثاني يعني يعرض والتي غير األولالموجودة في الجدول select field1, field2 , .field_n مكرر فقط

from tables INTERSECT select field1, field2, . field_n from tables;

:مثال

select supplier_id from suppliers INTERSECT select supplier_id from orders;

MINUS Query : والغيـر موجـود األول البيانـات فـي االسـتعالم رجـاعإهي عملية في االستعالم الثاني

select field1, field2, . field_n from tables MINUS select field1, field2, . field_n from tables;

:مثال

select supplier_id from suppliers MINUS select supplier_id from orders;

Page 121: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

42

عرض سـتا (ومعنـى المثـال الـسابق. والنـوع كـذلكمتـشابهدد الحقـول كون عـي أنويجب كأن تقـول نريـد ) والغير موجودة باالستعالم التالياألولىالبيانات في جملة االستعالم

. الموردين الذين لم يتم الطلب على منتجاتهمأسماء نعرض أن

ALTER TABLE: علـى التعـديل خاللـهيـتم مـن أمـر هـي عبـارة عـن تعليمـة أو :أنواع علىوهي محتويات الجدول

Adding column(s) to a table : حقـل أو عـدة حقـول علـى جـدول إضـافةوهـو .موجود على قاعدة البيانات

:القاعدةALTER TABLE table_name ADD column_name column-definition;

ثــم اســم الحقـــلADD ثـــم اســم الجــدول ونـــضع ALTER TABLEحيــث نــضع

.ضع نوع الحقلوبعدها ن :مثال

ALTER TABLE supplier ADD supplier_name varchar2(50);

. مجموعة من الحقولإلضافة

ALTER TABLE table_name ADD ( column_1 column-definition, column_2 column-definition, ... column_n column_definition );

Page 122: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

43

Modifying column(s) in a table: عـدل نوهو التعديل علـى الجـدول بحيـث

إلـىال نـستطيع تغييـر حالـة الحقـل مـن رقـم أننـا بعـين االعتبـار األخـذنوع الحقل مـع . حروف إلى األرقام ونستطيع تحويل كان فارغاإذا إالحروف :القاعدة

ALTER TABLE table_name MODIFY column_name column_type;

. بالقيام بعملية التغييرSQLـ الواشعارير للتغMODIFYهنا نستخدم

:مثال

ALTER TABLE supplier MODIFY supplier_name varchar2(100) not null;

:قاعدة التعديل على مجموعة من الحقول

ALTER TABLE table_name MODIFY ( column_1 column_type, column_2 column_type, ... column_n column_type );

Drop- column(s) in a table : وهو حذف حقل من الجدول

ALTER TABLE table_name DROP COLUMN column_name;

:مثال

ALTER TABLE supplier DROP COLUMN supplier_name;

Page 123: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

44

Rename column(s) in a table -: )NEW in Oracle 9i Release 2( 9i R2 أوراكلي نسخة وهو تغير اسم الحقل بالجدول وهي فقط ف

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

:مثال

ALTER TABLE supplier RENAME COLUMN supplier_name to sname;

DROP TABLE: :القاعدة

DROP TABLE table_name; :مثال

DROP TABLE supplier; CASCADE CONSTRAINTSف يضنــ فقــط آخــرلــو كــان الجــدول مــرتبط بعالقــات مــع جــدول

:مثال

DROP TABLE supplier CASCADE CONSTRAINTS;

Page 124: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

45

:األسئلة

؟Select في جملة Unionبين استخدام ـ1 ؟union في countبين استخدام الـ ـ2 ؟Minus Query و INTERSECT Queryما الفرق بين ـ3 حقل بجدول ؟الذي من خالله تستطيع تغيير نوع األمر ما ـ4 الذي من خالله تستطيع حذف حقل بجدول ؟األمر ما ـ5 الذي من خالله تستطيع تغيير اسم حقل بجدول ؟األمر ما ـ6 الذي من خالله تستطيع حذف جدول ؟األمر ما ـ7

Page 125: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

46

مــن المحــددات وكيفيــة اســتعراض هــذه المحــددات وكيفيــة أخــرى أنــواعالتعامــل مــع : تفعيلهاحذفها وتفعيلها وعدم

-1-unique constraint :

ويعرفــــان رال تتكــــرهــــو عبــــارة عــــن حقــــل وحيــــد أو مجموعــــة حقــــول وحيــــدة بالجــــدول أي يحتوي على قـيم فارغـة ولكـن هـذه القـيم تكـون فريـدة أنممكن و في سجلاستثنائيا . قيمة واحدة فريدةأي رال تتكر

؟UNIQUE و Primary Keyالفرق بين الـ عـن UNIQUE قـيم مكـررة ولكـن الـذي يميـز الــ لال يقبـكبير فكالهمـا فرق دال يوج

PRIMARY KEY انه يقبل قيمة فارغة NULL VALUEمكررة ولكن غير. ولكن لنفرض لنفس العمودunique و Primary key بتعيين نا األوراكللال تسمح

وال Primary keyنــه أ رقــم الموظــف ورقــم هاتفــه ورقــم منزلــه علــى قمنــا بتعيــين أننــاورقـم هاتفـه E01الحظ انـه لـو ورضـعنا رقـم الموظـف فـن يتكرر رقـم الموظـف أنريد ن

E01 بـرقم الموظـف آخـر سـجل أضـفنافـي هـذه الحالـة لـو فw01 ورقم منزلـه 2222نعـم ألن البيـان الجـوابأوراكـل؟ يقبـل فهل سـو w02 ورقم منزله 3333ورقم هاتفه

ــا ا مكــررأوراكــل هال يعتبــرهنــا ــأنحــددنا بالبدايــة ألنن يتكــون مــن primary Keyـ الولكـــن لهـــذا الحقـــلuniqueيتكـــرر رقـــم الموظـــف نعينـــه الأ أردنـــا واذاثالثـــة حقـــول

و primary keyـ يعـــين الـــأنتقبـــل الاألوراكـــل نـــا إن قلإننـــاالـــبعض ســـوف يقـــول unique لنفس الحقل وليست لمجموعة حقول فلـوناقول نعم ولكن قلون لنفس الحقول

تعينـــه اال يمكننـــ لوحـــده بهـــذه الحالـــة primary keyعيننـــا رقـــم الموظـــف علـــى انـــه unique.

ل قبــ إنــشائه إمــا وهــي unique الـــ إلنــشاءهنــاك حــالتين :unique الـــ إنــشاءقاعــدة . الجدولإنشاء الجدول أو بعد إنشاء

Page 126: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

47

CREATE TABLE table_name (column1 datatype null/not null, column2 datatype null/not null, ... CONSTRAINT constraint_name UNIQUE (column1, column2, . column_n) );

:مثال

CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id) );

: واحدunique من أكثرتعيين :مثال

CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name) );

: بعد الجدول فبهذه الطريقةشاءهإن أما

ALTER TABLE table_name add CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

:مثال

ALTER TABLE supplier add CONSTRAINT supplier_unique UNIQUE (supplier_id);

Page 127: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

48

: واحدunique من أكثرتعيين :مثال

ALTER TABLE supplier add CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name);

Check Constraints:بوضــع شــرط علــى كــل حقــل بالجــدول يعنــي النــايــسمح ل

: مع مراعاة. الأم هل هو ضمن الصالحيات أكد بعد التإال اإلضافةيمكن أن)check(ـــ بالإنشائهيمكن ال) View.( أن)check (تكـون أن ينتمي أو يرجع لحقول ضـمن الجـدول وليـست أن يجب

.أخرىضمن جداول نأ)check(فيإنشائهيمكن ال ) Sub Query( أو االستعالم المتداخل .

:إنشائهقاعدة : الجدولإنشاء أثناء

CREATE TABLE table_name (column1 datatype null/not null, column2 datatype null/not null, ... CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE] );

:مثال

CREATE TABLE suppliers ( supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_id

Page 128: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

49

CHECK (supplier_id BETWEEN 100 and 9999) );

:مثال آخر

CREATE TABLE suppliers ( supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_name CHECK (supplier_name = upper(supplier_name)) );

أو حروفـه capital يـساوي االسـم الــ أن اسـم المـورد يجـب أنوفي هـذا المثـال حـددنا

.Capitalتكون

:ALTER وهي استخدام الـ أخرىطريقة بإنشائهقاعدة

ALTER TABLE table_name add CONSTRAINT constraint_name CHECK (column_name condition)

:مثال على ذلك

ALTER TABLE suppliers add CONSTRAINT check_supplier_name CHECK (supplier_name IN ('IBM', 'Microsoft', 'Nvidia'));

Page 129: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

50

:CONSTRAINTS حذف الـ

ALTER TABLE table_name drop CONSTRAINT constraint_name;

:مثال

ALTER TABLE suppliers drop CONSTRAINT check_supplier_id;

:CONSTRAINTتفعيل الـ

ALTER TABLE table_name enable CONSTRAINT constraint_name;

:مثال

ALTER TABLE suppliers enable CONSTRAINT check_supplier_id;

:CONSTRAINT الـ إيقاف

ALTER TABLE table_name disable CONSTRAINT constraint_name;

:مثال

ALTER TABLE suppliers disable CONSTRAINT check_supplier_id;

Page 130: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

51

يـــسمى CONSTRAINT والـــذي يخـــزن فيـــه الــــ أوراكـــلالجـــدول المعتمـــد مـــن : USER_CONSTRAINTS بجدول التابعة لجدول معين فقطCONSTRAINTـ الأسماءلمعرفة

CONNECT SYSTEM/UR_PASSWORD SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME='SUPLLIERS';

على جداول تحتوي علـى بيانـات CONSTRAINT المحددات إنشاء إثناءنستطيع إنـشاء بغض النظر عن البيانات القديمة ويبدأ مـن لحظـة إما والتحكم هاإنشائنستطيع

علـى أن نـشبك أردنـا إذا أمـا NOVALIDATEالــ نـستخدمCONSTRAINTـال .VALIDATEالبيانات القديمة فنستخدم معه

:NOVALIDATEمثال على

ALTER TABLE uclass MODIFY CONSTRAINT pk_uclass DISABLE VALIDATE;

:VALIDATEال على مث

ALTER TABLE uclass ENABLE NOVALIDATE PRIMARY KEY;

Page 131: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

52

:األسئلة UNIQUE و PRIMARY KEYهو الفرق بين الـ ما ـ 1 PRIMARY ننشئ أن وأردنا لدينا جدول توجد به بيانات مكررة أنلنفرض ـ 2

KEYات الالزمة هي الخطو على هذا العمود الذي يحتوي على البيانات المكررة ما .لتطبيق ذلك

CONSTRAINTـ كيف نقوم بتفعيل ال ـ 3

Page 132: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

53

:Function الـ إنشاءقاعدة CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatype IS | AS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [function_name];

CREATE [OR REPLACE] FUNCTION function_name

ثم CREATE OR REPLACEهنا نقوم بعمل أو تبديل الدوال يعني نكتب هنا لتبديل REPLACEـ ثم نكتب اسم الدوال وفائدة ال FUNCTIONنكتب

]) ]parameter [,parameter[ (إنشائه الدوال القديم بالدوال الجديد الذي نريد هذه الجزئية هي عبارة الباراميتر الداخل أو الخارج من الدوال حيث عند استخدام

:الباراميتر وتعريف نوعه نستخدم ثالث حاالت وهيIN والغير مرتجعه بها القيمةالداخلة وتعني قيمة الباراميتر .

OUTوتعني قيمة الباراميتر الخارجة أو الناتجة من الدوال IN OUT وهي القيم الداخلة والخارجة حيث يدخل الباراميتر بقيمة ويرجع بقيمة

ن الدوال ترجع القيمة باسم الدوال نفسهأونحن نعرف . أخرى

RETURN return_datatype: في الدوال وتعني نوع الدوال هل هو رقم أو حرف أو إرجاعهاهنا نوع القيمة المراد

.غير ذلك

Page 133: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

54

IS | AS التهيئة ونستخدم عادة الـ وتعنيIS: ]section_declaration[

.هنا نعرف الباراميتر المختلفة والتي نستطيع استخدامها

BEGIN: executable_section

بجمع أو طرح أو غير ذلكالقائم أو SELECT الدوال لنبدأ بعملية الـ ئنهيهنا

]EXCEPTION:

exception_section[

نفذ الشرطتستخدم في حال لم يEND] function_name[;

الدوالالسم يكون مطابق أنوهنا ننهي الدوال مع كتابة اسم الدوال ويجب

Page 134: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

55

:مثال

CREATE OR REPLACE Function FindCourse ( name_in IN varchar2 ) RETURN number IS cnumber number; cursor c1 is select course_number from courses_tbl where course_name = name_in; BEGIN open c1; fetch c1 into cnumber; if c1%notfound then cnumber := 9999; end if; close c1; RETURN cnumber; EXCEPTION WHEN OTHERS THEN raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM); END;

:اإلجراء) Procedure(ـ الإنشاءقاعدة

CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ] IS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [procedure_name];

Page 135: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

56

CREATE [OR REPLACE] PROCEDURE procedure_name CREATE OR يعني نكتب Procedureـ هنا نقوم بعمل أو تبديل ال

REPLACE ثم نكتب PROCEDURE ـ ثم نكتب اسم الPROCEDURE القديم PROCEDUREـ هنا لتبديل الREPLACEـ وفائدة ال

إنشائه الجديد الذي نريد PROCEDUREـبال) ]parameter [,parameter[ ([

ستخدام ا حيث عند اإلجراءئية هي عبارة الباراميتر الداخل أو الخارج من هذه الجز :الباراميتر وتعريف نوعه نستخدم ثالث حاالت وهي

IN والغير مرتجعه بها القيمة الداخلة وتعني قيمة الباراميتر . OUTوتعني قيمة الباراميتر الخارجة أو الناتجة .

IN OUTث يدخل الباراميتر بقيمة ويرجع بقيمة وهي القيم الداخلة والخارجة حي .أخرى

/ ISوتعني التهيئة:

]declaration_section[ .Procedureللـ هنا نعرف الباراميتر المختلفة والتي نستطيع استخدامها

BEGIN:

executable section بجمع أو طرح أو القائم أو SELECT لنبدأ بعملية الـ Procedureالـ ئنهيهنا

لكغير ذ

Page 136: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

57

EXCEPTION: exception section][

تستخدم في حال لم ينفذ الشرط END [PROCEDURE_name];

. مطابقاالسم يكون أنويجب ه مع كتابة اسمProcedureالـ وهنا ننهي

:مثال

CREATE OR REPLACE Procedure UpdateCourse ( name_in IN varchar2 ) IS cnumber number; cursor c1 is select course_number from courses_tbl where course_name = name_in; BEGIN open c1; fetch c1 into cnumber; if c1%notfound then cnumber := 9999; end if; insert into student_courses ( course_name, course_number) values ( name_in, cnumber ); commit; close c1; EXCEPTION WHEN OTHERS THEN raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM); END;

ويمكن استدعائه عن جدول الطالبإلى يأخذ رقم الكورس ويضيفه اإلجراءهذا .طريق التريجر مثال

Page 137: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

58

:TRIGGERالـ إنشاءقاعدة حــدوث تغييــر علــى جــدول أثنــاء الحــدث الــذي ينفــذ أنــه علــى TRIGGERـ الــتعــرف

واضـــافتهامعـــين بقاعـــدة البيانـــات لتنفيـــذ مجموعـــة مـــن التعليمـــات أو ألخـــذ معلومـــات تــم FUNCTION أو حتــى اســتدعاء PROCEDUREبجــدول آخــر أو اســتدعاء

على قاعدة البياناتإنشائهاCREATE or REPLACE TRIGGER trigger_name TRIGGER TYPE ON table_name [ FOR EACH ROW ] DECLARE -- variable declarations BEGIN -- trigger code EXCEPTION WHEN ... -- exception handling END;

CREATE or REPLACE TRIGGER trigger_name

ثم CREATE OR REPLACEكتب Triggerـ هنا نقوم بعمل أو تبديل ال هنا لتبديل REPLACEـ وفائدة الTRIGGERـ نكتب اسم الTRIGGER نكتب

إنشائه الجديد الذي نريد TRIGGERـ القديم بالTRIGGERJـ ال

Page 138: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

59

TRIGGER TYPE: Delete Trigger و Update Trigger و Insert Triggers أنواعوهي

:األنواعوسوف نستعرض هذه ON table_name : وهنا تضع اسم الجدول

] FOR EACH ROW[ معناها لكل سطر يضافو

:أننامع مالحظة views على األنواع هذه إنشاء عال نستطي ـ 1 داخل التريجرnew ـ يمكن التعديل على 2 داخل التريجرold ـ ال يمكن التعديل على 3

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

):Insert Triggers ( هواألنواع وأول

BEFOR INSERT Trigger:

CREATE or REPLACE TRIGGER trigger_name BEFORE INSERT ON table_name [ FOR EACH ROW ] DECLARE -- variable declarations BEGIN -- trigger code EXCEPTION WHEN ... -- exception handling END;

:مثال

Page 139: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

60

: الجدولننشئ

CREATE TABLE orders ( order_id number(5), quantity number(4), cost_per_item number(6,2), total_cost number(8,2), create_date date, created_by varchar2(10) );

:ننشئ هذا التريجرثم

CREATE OR REPLACE TRIGGER orders_before_insert BEFORE INSERT ON orders FOR EACH ROW DECLARE v_username varchar2(10);

BEGIN -- اسم المستخدم إيجاد SELECT user INTO v_username

FROM dual; -- تعديل تاريخ التعديل حيث new ترمز إلى قيمة جديدة :new.create_date := sysdate; -- هنا نضيف اسم المستخدم الجديد حيث

باراميتر الجديدة وهو عبارة لنضع القيمة new استخدمناINSERT :new.created_by := v_username; END;

Page 140: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

61

AFTER INSERT: CREATE or REPLACE TRIGGER trigger_name AFTER INSERT ON table_name [ FOR EACH ROW ] DECLARE -- variable declarations BEGIN -- trigger code EXCEPTION WHEN ... -- exception handling END;

:مثال : الجدولننشئ

CREATE TABLE orders ( order_id number(5), quantity number(4), cost_per_item number(6,2), total_cost number(8,2) );

:يجرننشئ هذا الترثم

CREATE OR REPLACE TRIGGER orders_after_insert AFTER INSERT ON orders FOR EACH ROW DECLARE v_username varchar2(10); BEGIN -- Find username of person performing the INSERT into the table SELECT user INTO v_username

Page 141: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

62

FROM dual; -- Insert record into audit table INSERT INTO orders_audit ( order_id, quantity, cost_per_item, total_cost, username ) VALUES ( :new.order_id, :new.quantity, :new.cost_per_item, :new.total_cost, v_username ); END

فهي نفس ما سبق الباقية األنواع ماأ

:Drop a Trigger / حذف التريجر

DROP TRIGGER trigger_name; :مثال

DROP TRIGGER orders_before_insert;

:DISABLE عمل التريجر إيقاف

ALTER TRIGGER trigger_name DISABLE; :مثال

ALTER TRIGGER orders_before_insert DISABLE;

Page 142: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

63

: عمل جميع التريجرات على الجدولإيقاف

ALTER TABLE table_name DISABLE ALL TRIGGERS; :مثال

ALTER TABLE orders DISABLE ALL TRIGGERS; :تفعيل عمل التريجر

ALTER TRIGGER trigger_name ENABLE;

:مثال

ALTER TRIGGER orders_before_insert ENABLE;

:تفعيل عمل جميع التريجرات على الجدول

ALTER TABLE table_name ENABLE ALL TRIGGERS; :مثال

ALTER TABLE orders ENABLE ALL TRIGGERS;

Page 143: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

64

:األسئلة

؟ ما هي الفائدة من الدوال ـ1

؟ كان داخل أو خارجإذاكيف نستطيع تحديد نوع الباراميتر ـ 2

؟SELECT في جملة وارجاعهما فانكشن يقوم بجمع رقمين بإنشاءقم ـ 3

؟رالبروسيجما هي الفائدة من ـ 4

؟ كان داخل أو خارجإذاتحديد نوع الباراميتر كيف نستطيع ـ 5

.SELECT في جملة وارجاعهما بروسيجر يقوم بجمع رقمين بإنشاءقم ـ 6

Page 144: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

65

والتعامل معهاViews الـ إنشاءهــي عبــارة عــن اســتعالم نــستطيع وضــعه علــى جــدول أو اكثــر بحيــث ال viewsالـــ

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

:View الـ إنشاءقاعدة CREATE VIEW view_name AS SELECT columns FROM table WHERE predicates;

:مثال

CREATE VIEW sup_orders AS SELECT supplier.supplier_id, orders.quantity, orders.price FROM supplier, orders WHERE supplier.supplier_id = orders.supplier_id and supplier.supplier_name = 'IBM';

: وعرض محتوياتها هيviewـ عرض ال

SELECT * FROM sup_orders;

:وذلك حسب القاعدة التالية بدون حذفهاviewيمكن التحديث على الـ

CREATE OR REPLACE VIEW view_name AS SELECT columns FROM table WHERE predicates;

Page 145: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

66

:مثال

CREATE or REPLACE VIEW sup_orders AS SELECT supplier.supplier_id, orders.quantity, orders.price FROM supplier, orders WHERE supplier.supplier_id = orders.supplier_id and supplier.supplier_name = 'Microsoft';

:يتم حسب القاعدة التالية viewحذف الـ

DROP VIEW view_name; :مثال

DROP VIEW sup_orders;

Page 146: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

67

: وحذفهاإنشائهاهي وكيفية وماSynonymsالـ ,tablesـهــو عبــارة عــن بــديل لمحتويــات قاعــدة البيانــات مثــل الــ Synonymsالـــ

views, sequences, stored procedures ,أنتها وغيرهـا مـن المحتويـات وفائـد . يجلب أو يعدلأنالمستخدم يستطيع

:اإلنشاءقاعدة create [or replace] [public] synonym [schema .] synonym_name for [schema .] object_name [@ dblink];

or replace وهــذه نــستخدمها عنــدما نريــد التعــديل علــى Synonyms أصــال موجــود

public المــستخدمين علــى قاعــدة البيانــات االســتفادة منهــا كنــا نريــد جميــعإذا نكتبهــا schema.

table package view materialized view sequence java class schema object stored procedure user-defined object function synonym

:مثال

create public synonym suppliers for app.suppliers;

puplic ونوعـه suppliers علـى جـدول app علـى synonym أناأنـش لقدكما نرى تـستطيع مــن أنـك synonymفائـدة الــ و عليهـا يـستعلم أن مـستخدم أييعنـي يـستطيع

.القيام بقراءات متعددةخاللها

[COLOR=blue]select * from suppliers;[/COLOR]

Page 147: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

68

: نكتب التاليsynonymلتعديل على ا

create or replace public synonym suppliers for app.suppliers;

:synonymحذف الـ

drop [public] synonym [schema .] synonym_name [force]; puplic أصــــــــــــال synonym تــــــــــــستخدم فــــــــــــي حالــــــــــــ كــــــــــــان الـــــــــــــ publicحيـــــــــــث

force تستخدم لحذف الـ synonym األوراكـلجبـر ت حتى لو كـان لهـا تبعيـات فإنهـا .oject قد تعطل عمل الـ ألنهاستحب استخدامها على حذفها وال ي

:مثال

drop public synonym suppliers;

Page 148: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

69

إنشائها وكيفية ROLES القواعد المـــستخدم بهـــا وهـــيإلـــزام ليـــتم إنـــشائها عبـــارة عـــن مجموعـــة مـــن الـــشروط يـــتم وهـــي

Creating a Roleالـــ إلنــشاء Role إنــشاء يجــب Role system privileges :لك نتبع الخطوات التاليةوليتم ذ

CREATE ROLE role_name [ NOT IDENTIFIED | IDENTIFIED {BY password | USING [schema.] package | EXTERNALLY | GLOBALLY };

role هو اسم الـ role_name حيث

NOT IDENTIFIED : توضـع فـي حالــ تعريـف الــroleـ حيـث تفعـل الـrole وال .roleلتفعيل الـ يحتاج لكلمة سر IDENTIFIED: تقوم بتعريف خصائص الـ أنهنا يجب roleقبل تفعيلها BY password : يــضع كلمــة ســر قبــل تفعيــل الـــ أن المــستخدم يجــب أنهنــا تعنــي

role USING package: مجموعــة مــن أنــشأتقــد تكــون هنـا role ويجــب تطبيقهــا مــن

.خالل البرنامجEXTERNALLY :ــــــــــي انــــــــــك ــــــــــف خــــــــــصائص وهــــــــــذا يعن ــــــــــاج إلــــــــــى تعري تحتEXTERNALLY قبل تشغيل الـ role.

GLOBALLY: المستخدم يستطيع تعريف أو االطالع على اليوزر عـن أنيعني .enterpriseطريق مجلدات الـ

IDENTIFIED أو نـضع NOT IDENTIFIED لـم نـضع إذا إننـامع مالحظـة .NOT IDENTIFIED أنها أساس على role الـ إنشاءسوف يتم

Page 149: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

70

:مثال test_role ونسميها roleننشئ

CREATE ROLE test_role;

ولكن نستخدم الباسوورد حيث يطلب الباسوورد عند تشغيلهاroleننشئ

CREATE ROLE test_role IDENTIFIED BY test123;

Grant Privileges (on Tables) to Roles

privilege باستخدام role ـ الصالحيات على الجداول لإعطاء

: هي من الصالحيات على الجداولأنواعوهناك Select صالحية االستعالم باستخدام جملة إلعطاء select Insert سجل جديد على الجداولإضافة صالحية إعطاء هو

Update صالحية التحديث على سجل في الجدولإعطاء Delete صالحية الحذف لسجل من الجدولإعطاء

References الـ إلنشاء صالحية إعطاء Constraints Alter صالحية التعديل على الجدولإعطاء Index الـ إلنشاء صالحية إعطاء indexعلى الجدول

:القاعدة

grant privileges on object to role_name

Page 150: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

71

:Roles ـ بعض الصالحيات لإعطاءمثال على

grant select, insert, update, delete on suppliers to test_role;

:Roles الصالحيات لجميع الـ إعطاءمثال على

grant all on suppliers to test_role;

:Rolesإلغاء الصالحيات عن Revoke Privileges (on Tables) to Roles

Roles الصالحية عن إلغاءهذه الخاصية هي كيفية

revoke privileges on object from role_name;

:مجموعة من الصالحياتعلى إلغاء مثال

revoke delete on suppliers from test_role;

: جميع الصالحياتإلغاءمثال على

revoke all on suppliers from test_role;

:roles الصالحية عن الـ إلغاء

revoke execute on object from role_name;

:مثال

revoke execute on Find_Value from test_role;

Page 151: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

72

: المستخدمإلى Roles صالحيات الـ إعطاء Granting the Role to a User

وهي تمكن من السيطرة على صالحيات المستخدم للنظام :القاعدة

GRANT role_name TO user_name; :مثال

GRANT test_role to smithj;

:The SET ROLE statementاستخدام الـ قاعــدة Roles لتفعيــل أو عــدم تفعيــل الـــ Set Roleي تــدعى الـــ هــذه الخاصــية التــ

:االستخدام

SET ROLE ( role_name [ IDENTIFIED BY password ] | ALL [EXCEPT role1, role2, ... ] | NONE );

Page 152: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

73

معلومات تلخيصية

Page 153: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

74

Page 154: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

75

:تمرين حر

ــــد باســــم ــــستخدم جدي ــــشئ م ــــرور ABAHEأن ــــة الم ــــع DHID وكلم م .المناسبة له للعملالصالحيات

صــمم جــداول للطــالب ونتــائجهم ولــك حريــة اختيــار العمليــات والنتــائج التــيـــا ومـــن وجهـــة نظـــرك ـــر معن ـــا ســـبق وم ـــستفيدا بم ـــذلك م تراهـــا مناســـبة ل

...كمبرمج احفظ كل األكواد مع الشرح وأرسلها ألستاذك المشرف.

مع متنياتنا لكم بالتوفيق والنجاح الدائمني

Page 155: Oracle - abahe.uk · Arab British Academy for Higher Education. Oracle – Part1

Arab British Academy for Higher Education. Oracle – Part 2

www.abahe.co.uk

76