24) 1377 ﻥﺎﺒﻌﺷ 4 ﺦﻳﺭﺎﺘﺑ...˘ ˙ !˙ ˜ ˙ ˙ ˛˚˙ ˝ ˙ ˇˆ ˘ ﻝﻭﻷﺍ ﺏﺎﺒﻟﺍ ﻦﻴﻔﻇﻮﻤﻠﻟ ﺔﻴﻧﻮﻧﺎﻗ ﻝﺍﻮﺣﺃﻭ
Oracle - ABAHEArab British Academy for Higher Education. Oracle – Part1 1 ﻝﻭﻷﺍ ءﺰﳉﺍ...
Transcript of Oracle - ABAHEArab British Academy for Higher Education. Oracle – Part1 1 ﻝﻭﻷﺍ ءﺰﳉﺍ...
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
0
Oracle Part 1
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الكتالوغ
معلومات البد منها
قاعدة بيانات أوراكلتنصيب
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
2
برنــــــامج قاعــــــدة بيانــــــات وهــــــي شــــــبيهة إلــــــىنقــــــول إنــــــه وراكــــــل األ إن أردنــــــا تعريــــــف
يعنــي أنهــا قاعــدة مايكروســوفت أكــسس وأقــرب إلــى مايكروســوفت إس كيــو إل ســريفر بحــد ذاتهــا فمــثال فبجــوال بيــسك تعتبــر لغــة برمجــة لغــة برمجــة مــستقلةبيانــات وليــست
ألنهــا تمكنــك مــن عمــل بــرامج ذات أهــداف متعــددة وال يــشترط أن تكــون بــرامج قواعــد بيانات فيمكنك عمـل برنـامج رسـم كمـا برنـامج الرسـام فـي وينـدوز ويمكنـك الـتحكم بهـا
حتـى باالرتبـاط بقواعـد بيانـات على حد كبير من المرونة واإلمكانيات التي تـسمح لـك متعددة ولكن أوراكل هي قاعدة بيانات قوية و آمنة ولكـن يوجـد لـديها أدوات تـساعدها للتعامل معها واظهارها في أشكال متعددة مثل الدفلوبر بحيـث يمكنـك إدخـال البيانـات واســـتخراجها عـــن طريـــق نمـــاذج وتقـــارير ورســـوم بيانيـــة ولكـــن ال يمكنهـــا التعامـــل مـــع
عــدة بيانــات غيــر أوراكــل كمــا أنهــا ال تمنــك مــن عمــل بــرامج مثــل الرســام دعنــا نأخــذ قاطلــب منــك ثالثــة مــشاريع ولنفتــرض مــثال بــأن مــديرك . أمثلــة لكــي يتبــين الفــرق لــديك
:وهي
المشروع األول
برنــــامج يقــــوم بعمــــل ملــــصقات خاصــــة بالرســــائل لكــــي يــــتم إلــــصاقها علــــى مظــــاريف .بيانات العمالءالمراسالت يستند إلى قاعدة
الحل
يمكن للبرنامج االستناد على قاعدة بيانات أوراكل أو عمل قاعدة بيانات صـغيرة علـى أكــسس ويمكــن عمــل الملــصقات كتقريــر مخــرج مــن نفــس أوراكــل ولكــن فــي الفيجــوال بيــــسك يمكنــــك إضــــافة لمــــسات فنيــــة واضــــافة فالتــــر معينــــة تعمــــل علــــى الملــــصقات
ر ففـــي حـــال أوراكـــل تحتـــاج إلـــى نـــسخة قاعـــدة بيانـــات إلظهارهـــا بأشـــكال جماليـــة أكثـــأوراكل لتحميلها على الجهاز كما تحتاج للملفات التشغيلية الخاصة بالنماذج والتقارير كمــا أن الحمايــات يجــب أن تــوزع للمــستخدمين بحيــث ال يــسمح لكــل مــستخدم الــدخول
أي موظـف مـن قبل إعطائه هـذه الـسماحيات فبرنـامج كهـذا ال يحتـاج إلـى حمايـة ألن الممكن استخدامه ولذلك يفضل فيجوال بيسك
المشروع الثاني
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
3
ين وهواتف العمالءوبرنامج يقوم بعمل مفكرة للهاتف الشخصي أو لعنا
الحل
هذا البرنامج ينطبق عليه نفس ما ينطبق على المشروع األول
المشروع الثالث
الـشركة فـي ثالثـة فـروع برنامج خـاص بالحـسابات يـستند علـى قاعـدة بيانـات حـسابات وهــذه المؤســسة تتعامــل أيــضا بالتجــارة اإللكترونيــة علــى اإلنترنــت كمــا جغرافيــا موزعــة
تحتــاج لتقــارير واحــصاءات دوريــة تــزود للعمــالء مــن قبــل البرنــامج دون الحاجــة لعمــل .يدوي
الحل
ن هــذا البرنــامج يمكــن أن يحــل بفيجــوال بيــسك ولكــن قاعــدة البيانــات ال يمكــن أن تكــوأكــسس بــل مــستحيل وذلــك لكثــرة البيانــات وكثــرة العمليــات وتوزيــع قواعــد البيانــات بــين فروع الشركة المختلفة فيمكن أن يربط برنامج فيجـوال بيـسك بقاعـدة بيانـات أوراكـل أو أي كيــو أل ســيرفر مــن مايكروســوفت ولكــن كــان مــن األحــرى اســتعمال الــديفلوبر لهــذا
مع قاعدة البيانات التي وضع الديفلوبر ألجلها كما أن التطبيق وذلك لمرونة البرنامجمــــن أدوات أوراكــــل إمكانيــــة التعامــــل مــــع اإلنترنــــت واعطــــاء حمايــــة وأمــــان للبيانــــات الموجــودة كمــا أن البرنــامج ال يمكــن أي مــستخدم مــن الــدخول إليــه والعبــث بمحتوياتــه
.سوى من هم مختصين بذلك وبسماحيات متفاوتة
إلـى الكاهنـة المقدسـة التـي يطلبهـا النـاس Oracleناني القديم أوراكـل يشير االسم اليو
للتبوء بالغيب ولتفسير حكمة اإللهة المقدسـة إن كـل مـا تقولـه هـو حكمـة ولكنهـا دائمـا ويــصف اللفــظ أيــضا كــل مــا لديــه الكثيــر مــن العلــم . حكمــة مقدســة مغلفــة بــالغموض
وهـى oracularأما الصفة فهـي . بموضوع معين ويستطيع أن يقدمه كنصيحة غاليةـــى الـــصعوبة فـــي الفهـــم ـــسحر . تـــشير إل واذا كانـــت أوراكـــل جـــديرة بـــان تتتـــوج أميـــرة لل
كيــــف يعمــــل هــــذا البنــــاء الــــضخم ىوالغمـــوض إال إننــــا ننــــوي بــــإذن اهللا أن ننظــــر لنـــرالمسمى بأوراكل من الـداخل وذلـك األمـر يعـد مقدمـة ال غنـى عنـه لمـن يريـد أن ينتفـع
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
4
من أقوى نظم قواعد البيانات وان يتقدم قليال في دراسته كـي يـصبح بعـون بمزايا نظاماهللا مديرا ومسيطرا على أوراكل األميرة الساحرة .
وقد حاولت قدر المستطاع أن أقدم أوراكل بأسلوب مبسط ولم التزم حرفيا بالتقسيم
المعلومة ومن ثم الموجود في كتابات أوراكل المعقدة كي أحاول بقدر اإلمكان تبسيط . ندخل إلى التعامل مع إصداراتها
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
5
ما هي األوركلإلـــى مجموعـــة منظمـــة مـــن البيانـــات والتـــي تخـــزن Databaseتـــشير قاعـــدة البيانـــات
ويتم التعامل مع تلك . بطريقة معينة بحيث يسهل الوصول إليها والتعامل معها بكفاءةبــرامج معقــدة وأدوات تمكننــا وهــى RDBMSالبيانــات بواســطة نظــم قواعــد البيانــات
. من الوصول إلى البيانات بسهولة :إن إدارة قواعد البيانات تتطلب العديد من العمليات واإلجراءات ومن أمثلتها
وهــي الحاويــة أو الوعــاء التــي ســتنتظم فيــه البيانــات وكيفيــة :إنــشاء قواعــد البيانــاتعها كمــــا تتــــضمن أيــــضا تنظــــيم البيانــــات نفــــسها داخــــل تلــــك الحاويــــة وطــــرق اســــترجا
. إجراءات تأمين البيانات وطرق االحتفاظ بتا سليمة وحمايتها من التلفإن أوراكل كنظام إلدارة لقواعد البيانات قـد تـم تـصميمه خصيـصا لكـي يعمـل فـي بيئـة عمـــل تحـــوي العديـــد مـــن المـــستخدمين الـــذين يريـــدون إنجـــاز إعمـــالهم بـــسرعة وســـهولة
نفــس الوقــت تقريبــا إلــى قاعــدة البيانــات واالســتفادة مــن وبالتــالي ضــمان الوصــول فــي :مواردها المتاحة وتتميز بيئة العمل تلك بالتالي
يعمـــل نظـــام التـــشغيل علـــى تنفيـــذ العديـــد مـــن العمليـــاتProcess فـــي نفـــس .الوقت
يقـــوم نظـــام التـــشغيل بتحديـــد وقـــت معـــين لكـــل عمليـــة وطريقـــة تنفيـــذها وأولويـــة .التنفيذ
تــشغيل بتقــسيم الــذاكرة يقــوم نظــام الMemory إلــى منــاطق أو أجــزاء محجــوزة . للمستخدمين ومناطق تتشارك فيها مجموعة من العمليات
رتوضــيح معنــى الــسيرفقبـل أن نــصور الكيفيــة التــي يعمــل بهــا ســيرفر األوركــل ينبغــي
والذي هو ببساطة مجموعة من البرامج والتي تشكل نظاما متكامال تركب علـى جهـاز
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 المثـال مجموعة منظمة من الداتا مخزنة في ملفات أما
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
7
والتــي تــتم فــي منــاطق معينــة مــن الــذاكرة تحــددها أوراكــل كــي Processesالعمليــات . نــتمكن مــن الوصــول إلــى الملفــات الماديــة التــي تــشكل قاعــدة البيانــات والتعامــل معهــا
:أي أن العمليات التي تتم فيها + معمارية الذاكرة =Oracle Instance
مادية المكونة لقاعدة البيانات يشار إليها عادة بـ الملفات الDatabase
مثال األوركل + الملفات المادية المكونة لقاعدة البيانات =Oracle Server :الشكل التالي يبين اكثر المقصود مما قلناه
ولكن ما الذي يحدث عندما يقوم المستخدم باالتصال بأوراكل ؟
:م التالي يمكننا توضيح ذلك بالرس
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 ويـتم االنتقـاء مـن العمليـات الغيـر شـاغرة لتنفيـذ
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
9
طلــب آخــر فإنهــا فلــو كانــت العمليــة األولــى غيــر مــشغولة بتنفيــذ Queeذلــك الطــابور . ستتولى االنتقاء من الطابور لتنفيذه وهكذا كما يتضح من الشكل التالي
:يتضح من الشكل السابق التالي
أن المــــستخدم ســــوف يقــــوم باالتــــصال بالمــــستقبلdispatcher وعنــــدها يقــــوم ــــذاكرة المــــستقبل بوضــــع أمــــر المــــستخدم فــــي طــــابور االنتظــــار فــــي منطقــــة ال
SGA . تكون جاهزة سوف تقوم بأخذ الطلب من الطابور لتنفيذهأول عملية . طلــب المــستخدم تــم تنفيــذه وتــم وضــع نتــائج التنفيــذ فــي طــابور االنتظــار مــرة
أخــرى تمهيــدا لعرضــه علــى المــستخدم يقــوم المــستقبل بأخــذ نتــائج الطلــب مــن . الطابور ثم يقدمه إلى المستخدم ثم يغلق قناة االتصال
: باالتصال بأوراكل Clientتخدم ولكن كيف يقوم المس
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 .
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االتــصال
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العملية تكون مهمة
انــات ويكــون بخدمتــه عمليــة مــن بينمــا يكــون المــستخدم قــد اتــصل مباشــرة بقاعــدة البي . عمليات السيرفر كما أوضحنا من قبل
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
13
Shared Serverفي حالة Listnerدور الليسنر
يعلم الليسنر بالـضبط المـستقبالت التـي تعمـل علـى الـداتابيز وعنـدما يطلـب المـستخدم ليقـدم االتصال يقوم الليسنر باختيار مستقبل من تلك المستقبالت التـي تعمـل ثـم يعـود
لــى اللمــستخدم معلومــات عــن كيفيــة االتــصال بالمــستقبل ومنهــا رقــم البوابــة المفتوحــة وهنا ينتهي دور الليسنر فينقطع االتصال بينه وبين المستخدم ليبدأ المستخدم االتصال
. مباشرة بالمستقبل كما يتبين ذلك من الشكل التالي
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
14
ن وهــو يوضــح التفاعــل الــذي يــتم بــين والــشكل التــالي هــو توضــيح لمــا تــم ذكــره قبــل اآل المستخدم وبين عمليات السيرفر
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عــن طريــق أرشــفة تلــك الملفــات قبــل إعــادة الكتابــة عليهــا حيــث تقــوم عمليــة
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
16
ن تلــك بعمــل نــسخ احتياطيــة لملفــات الريــدو لــوغ وال تــسمح بإعــادة الكتابــة علــى أيــة مــ . الملفات إال بعد إتمام أرشفة الملف
تعـــادل ملفـــات البـــارمتر ملفـــات األوامـــر فـــي نظـــام الـــدوس وهـــى ملفـــات تـــسمح بإعطــاء قــيم تحــدد الطريقــة التــي ســيعمل بهــا مثــال األوركــل بينمــا يلــزم ملــف الــتحكم
Control File وتقـوم أوراكـل بتـسجيل األخطـاء . لفتح قاعـدة البيانـات والتعامـل معهـا Logالتي تحدث أثناء التشغيل وكذلك معلومات التشغيل بصورة تفصيلية في ملفات
& Alert . Filesالشكل التالي يوضح الهيكل المادي ألوراكل وعالقته بالعمليات و .
:والشكل التالي يوضح أنواع الملفات المختلفة التي تشكل قاعدة البيانات
:دي ألوراكل على النحو التاليحيث يمكن تصور هيكل الملفات الما
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
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وفهارس
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
19
:يتضح من الشكل السابق ما يلي
الهيكل المادي للملفات مكون من عدة ملفاتData Files وهى ملفـات توجـد . على نظام التشغيل تشكل الوعاء المادي للبيانات
راكـــل حيـــث ال يمكـــن إدارة تلـــك الملفـــات بـــصورة مباشـــرة بـــل تـــتم مـــن خـــالل أوتنـــشئ هيكـــل افتراضـــي للملفـــات مكونـــا بـــصفة أساســـية مـــن مـــساحات جدوليـــة
TableSpaces .
المساحات الجدولية تحوى على الجداول والفهارس والمناظيرViews .
ـــاظير وبواســـط ـــتم تنظـــيم SQL تنفيـــذ جمـــل ةمـــن خـــالل تلـــك الجـــداول والمن ي .البيانات الفعلية وادارتها
واحد أو اكثر من الملفات المادية كل مساحة جدولية تنظم DataFiles.
كل ملف داتـاDataFile يـرتبط بمـساحة جدوليـة واحـدة فقـط بينمـا المـساحات . الجدولية نفسها يمكن أن تكون مرتبطة بأكثر من ملف داتا
ـــى ـــى مكـــان وضـــع الجـــداول أو الفهـــارس عل ـــسيطرة عل ـــا ال ـــا ال يمكن الحـــظ أنن . DataFilesملفات الداتا المادية
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 إلدارة لقاعدة البيانات .
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(التـــشغيل مـــثال فهـــو يتـــراوح بـــين )بايت
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
22
كمــا يعبــر الــشكل فــان القطــاع يكــون مــن واحــد أو اكثــر مــن امتــدادExtents و . يتشكل كل امتداد من بلوكات متجاورة
نفـس التكـوين العـام كل بلوك في الداتابيز يكون حجمـا ثابتـا كمـا أن البلوكـات لهـا
: حيث يتكون البلوك كما يوضح الشكل التالي
رأس البلوكBloch Header
o يحتــوى رأس البلــوكHeader علــى معلومــات توضــح نــوع البلــوك ســواء كــان . Index Blockأو بلوك فهرس Table Blockبلوك جداول
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من ملفات الداتا
ــــداتا وأنــــواع الكائنــــات التــــي تحتويهــــا المــــساحة المــــساحات الجدوليــــة وملفــــات ال .الجدولية
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 وكـــل امتـــداد . عبارة عن مجموعة متجاورة من البلوكات
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فــــي اإلصــــدار . اعتبــــارات الكفــــاءة
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إلعــادة اســترجاع النظــام إلــى النقطــة التــي كانــت قبــل انقطــاع التيــار الكهربــائي .واذا حــدث علــى ســبيل المثـــال أن قمنــا بتأكيــد إلغــاء جـــداول فانــه يمكــن مــع اســـتخدام
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
27
فــات التراجــع أن نعيــد مــا فقــد مــن نــسخة احتياطيــة لقاعــدة البيانــات باإلضــافة إلــى مل .بيانات
ONLINE Redoكـل عمليـة تقريبـا تـتم فـي أوراكـل يـتم تـسجيلها فـي ملفـات الريـدو فعلى سبيل المثال عندما ندخل صفا جديدا أو عندما نلغي صـفا فـإن ذلـك يـسجل فـي
يوجد نوعين من ملفات الريدو وهما . ملفات الريدو ملفات التراجعOnline Redo Log
علــى اثنــين مــن ملفــات الريــدو علــى األقــل وهــي لتحتــوى قاعــدة بيانــات أروا كــملفــات ذات حجــم ثابــت ويــتم التــسجيل عليهــا بطريقــة دائريــة بمعنــى أن قاعــدة البيانـــات ســـوف تـــسجل فـــي الملـــف األول حتـــى امتالئـــه ثـــم يـــتم التحويـــل إلـــى
. لملــف األول وهكــذاالملــف الثــاني وفــى حالــة امتالئــه يــتم إعــادة الكتابــة علــى ا :كما يتضح من الشكل التالي
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 كما يوضحه الشكل التالي
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يوجـد حـدث . بإتمام تفريغ الذاكرة
وحتــى يــتم كاتــب البلــوك عملــه فــي إعــادة . مــا يتحقــق عنــدما يحــدث تبــديل لملــف اللــوغإلــى الملفــات الماديــة تكــون البلوكــات محميــة مــن إعــادة البلوكــات المعدلــة مــرة أخــرى
االســتخدام بواســطة معلومــات التراجــع المــسجلة فــي ملــف الريــدو لــوغ فــإذا مــا حاولنــا : إعادة استخدامها فان رسالة تظهر كالتالي
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باســتمرار تحــسبا لتلــف ملفــات اللــوغ :التالي
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
تقــــــــــــــــــــوم
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
32
حيـث يمكـن النظـر إليهـا ممن العمليات تقوم بتلبية طلبات المـستخدالمجموعة األولى ا تحتــاج إلــى معلومــات مــن قاعــدة البيانــات كرابطــة أو حبــل يــشدك إلــى أوراكــل فعنــدم
سوف تأمر تلك المجموعة من العمليات كـي تقـوم بربطـك بقاعـدة البيانـات ثـم تحـضر مـــا طلبتـــه مـــن معلومـــات واذا مـــا قمـــت بتعـــديالت أو تحـــديثات فإنهـــا تـــأمر باســـتدعاء عمليات أخرى لتسجل تلك التعديالت في مناطق خاصـة فـي الـذاكرة تمهيـدا لنقـل تلـك
.التحديثات فيما بعد إلى الملفات الخاصة بالداتابيز مــن تلـــك العلميــات فهـــي تعنــى بوضــع وكتابـــة البيانــات علـــى المجموعــة الثانيـــةأمــا
فكمـــا قلنـــا مـــن قبـــل فـــان المعلومـــات تخـــزن Data Filesالملفــات المكونـــة للـــداتابيز تنقـل بواسـطة ثم Shared Memory مبدئيا في مناطق تحددها األوركل في الذاكرة
تلك العمليات بعد وقت معـين إلـى الملفـات ويـتم إخـالء المنطقـة لتـوفير قـدر اكبـر مـن .مساحة الذاكرة
بكتابــة مــا يحــدث علــى البيانــات مــن تعــديالت فــي ملفــات المجموعــة الثالثــةوتخــتص اللــوغ حيــث تــسمح تلــك الملفــات باســتعادة آخــر مــا تــم علــى البيانــات مــن تعــديالت فــي
الوصول إلى الداتابيز والذي يحدث نتيجـة العديـد مـن األسـباب ومنهـا تلـف حالة فشل . وحدات التخزين
أية إدخال جديد لبيانات ( Transactionإن أوراكل تسجل كل معاملة وعليه ف
Logفــي ملفــات اللــوغ ) أو التعــديل فــي بيانــات موجــودة ســواء باإلضــافة أو باإللغــاء
Files الــداتا وفــى حالــة فقــدان أيــة مــن ملفــات الــداتا وهــى ملفــات مــستقلة عــن ملفــات المكونـــة للـــداتابيز أو فـــشل التعامـــل معـــه فـــيمكن اســـتدعاء ملـــف اللـــوغ للمـــساعدة فـــي عمليــات اإلصــالح حيــث يمكــن اســتدعاء نــسخة احتياطيــة مــن ملــف الــداتا وتطبيــق مــا هو موجود في ملف اللوغ من آخر معامالت حتى يمكـن اسـتعادة الوضـع إلـى مـا هـو
.عليه . وتختص آخر مجموعة من العمليات بمراقبة أداء الداتابيز
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
33
تقــسم العمليــات التــي تقــوم بهــا أوراكــل إلــى نــوعين أساســين مــن وجهــة المــستخدم
: الذي يريد االتصال بأوراكل
واذا نظرنــا إلــى المــستخدم الــذي يريــد االتــصال بقاعــدة البيانــات نجــد أن هنــاك نــوعين خصصين لضمان اتصال المستخدم بمثـال األوركـل وبالتـالي لالتـصال من العمليات م
يقــوم المــستخدم بتــشغيل تطبيــق ولــيكن مــثال برنــامج . بقاعــدة البيانــات والتعامــل معهــالــشؤون األفــراد والــذي يتطلــب الحــصول علــى داتــا مــن قاعــدة البيانــات فتقــوم األوركــل
حيـــث تقـــوم تلـــك User Processبتـــشغيل عمليـــات خاصـــة لخدمـــة هـــذا المـــستخدم العلميات بعمل قناة اتصال تسمح بربط المستخدم بمثال األوركل وعندما يـتم فـتح تلـك
علـى سـيرفر األوركـل Server Processالقناة تقوم أوراكل بتـشغيل عمليـات إضـافية فعليا عن تعامل المستخدم مـع قاعـدة البيانـات ويتـضح ذلـك ةنفسه والتي تكون مسؤول
:ليمن الرسم التا
Processes
User Process Server Process
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الــداتابيز والعكــس ا خمــسة عمليــات ال غنــى عنهــا والبــاقي يعتمــد علــى خيــارات إعــداد األداء ويوجــد منهــ :أوراكل للعمل وهي
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
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 يكون موجودا فيه البارمتر البارمتر والذي
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
37
: Monitoring Processesوظائف الرقابة ومتابعة األداء .2) SMON( توجــد ثالثــة عمليــات رئيــسية فــي تلــك المجموعــة فآمــا األولــى فهــي
ودورها تحرير مثال األوركل من أيـة اختناقـات وأخطـاء أثنـاء بـدء تـشغيل المثـال فهـي الوظيفـة التـي ) PMON(وقت يتطلب ذلك أمـا الوظيفـة الثانيـة أو في أي
دورها تحرير ومسح ما ينجم عن فشل أية عملية من عمليات المستخدم
مراقبة النظامSystem Monitor )SMON(
وظيفة العمليـة مراقبـة مثـال األوركـل والتعامـل مـع أيـة أخطـاء تحـدث نتيجـة فـتح ل المثــال بالتأكــد مــن فــتح المثــال قــد تــم بــصورة المثــال فهــي علــى تقــوم علــى ســبي
طبيعية واذا لم يكن تحاول إجـراء إصـالح واسـتعادة الوضـع عمـا كـان عليـه قبـل ShutDownحدوث الخطأ فإذا لم يكن المثال قـد تـم إغالقـه بـصورة طبيعيـة
normal فإنه قـد يكـون هنـاك بعـض المعـامالت والتـي تـسجل بعـد علـى ملفـات ي تتطلـــب إعـــادة االســـترجاع وتحريـــر عمليـــات الفهرســـة ونقـــل تلـــك الـــداتا وبالتـــال
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
38
Temporary Segmentsالمعــامالت كمــا ينبغــي تحريــر القطاعــات المؤقتــة . ونقل ما عليها إلى ملفات الداتا وهكذا
كما يتضح من الشكل فالوظيفة السابقة معدة لكـي تعمـل فـي حالـة إذا مـا كـان ير واإلخالء فمثال تقوم الوظيفة بـالتحقق مـن المثال في حاجة إلى بعض التحر
وجــــود قطاعــــات مؤقتــــة غيــــر مــــستغلة فتقــــوم بتحريــــر تلــــك المــــساحات ودمــــج Databaseالمساحات كما تعمل الوظيفة أيضا في حالة احتياج كاتب الداتا
Writer إلــــى مــــساحات مؤقتــــةTempory Sgments فهــــو يطلــــب مــــن . المستغلة الالزمة ألداء عمله بكفاءةالوظيفة تحرير واخالء بعض المساحات
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
39
مراقب العملياتProcess Monitor ) PMON( يخـــــصص وقتـــــه كلـــــه لعمليـــــة اإلخـــــالء والتحريـــــر بعـــــد إتمـــــام عمـــــل عمليـــــات
:فهي على سبيل المثال تقوم بالتالي User Processesالمستخدم إزالة أرقام العمليات التي انتهت. إخالء وازالة أية أقفالLocks تكون قد عملتها تلك العمليات. إزالــة واخــالء أيــة عناصــر مــن ذاكــرة الكــاش تكــون ناتجــة عــن عمليـــات
. سابقة
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منطقة النظام الشاملة
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 و
الخ.... الكيرسور
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
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.
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لو فرضنا أن هناك أكثـر مـن . في تلك المنطقة
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
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.
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 االتصال الشبكي لوبين المستخدم من خالل بروتوكو
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
48
لخدمـــة رالـــسيرفر يتلقـــى اتـــصال المـــستخدم ويولـــد علميـــة مـــن عمليـــات الـــسيرف
. المستخدم
المستخدم يطلب تنفيذ جملةSQLدم تغير قيمـة فـي وفى مثالنا يطلب المستخ . صف موجود فى جداول موجود بقاعدة البيانات
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ملفــــات الــــداتا . العملية
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
50
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
51
Database Startupفتح قاعدة البيانات
ات تـتم فـي كما ذكرنا من قبل يمثل المثال معمارية معينـة للـذاكرة باإلضـافة إلـى عمليـ
. علــى االتــصال بقاعــدة البيانــات والتعامــل معهــاالخلفيــة والتــي تجعــل المــستخدم قــادراعنــدما تبــدأ أوراكــل فــي العمــل فإنهــا تبــدأ فــي تهيئــة معماريــة الــذاكرة وتــشغيل عمليــات
وهكـذا فـان هنـاك عـدد مـن . الخلفية استعدادا لدخول المستخدمين على قاعدة البيانـات التأكــــــد مــــــن أن قاعــــــدة البيانــــــات جــــــاهزة تمامــــــا لتلقــــــى طلبــــــات المراحــــــل حتــــــى يــــــتم
: أن قاعدة البيانات تمر على اآلتي. المستخدمين التشغيل قبل االرتقاءSTARTUP NOMOUNT:
يتم فتح المثال وتجهيزه لفتح قاعدة البيانات قبل االرتقاء إلى قاعدة البيانات حيـث يـتم ات المثـال واعـداد الـذاكرة وفقـا للمعماريـة التـي عن إعدادلقراءة ملف البارمتر المسؤو
تتطلبها أوراكل كما تأخذ عمليات الخلفيـة وضـع االسـتعداد للفـتح والتـشغيل ولكـن دون
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:
يمكنــــك تبنــــي ذلــــك االختيــــار إذا واجهتــــك بعــــض المــــشاكل أثنــــاء فــــتح قاعــــدة مفـاجئ البيانات بطريقة طبيعية فعلى سـبيل المثـال إذا حـدث انقطـاع للكهربـاء
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
53
ة تجربـة تلــك الخطــوة أمــرا وتوقفـت قاعــدة البيانــات بعــد الفـتح فهنــا تكــون محاولــوهنـــا ال يتوقـــف هـــذا االختيـــار علـــى أيـــة وضـــعية . ضـــروريا يـــستحق المحاولـــة
ـــــة كانـــــت عليهـــــا قاعـــــدة البيانـــــات ســـــواء كانـــــت أغلقـــــت بطريقـــــة غيـــــر طبيعيshutdown abort and then restarts the database
الفتح مع وجود قيودSTARTUP RESTRICT
RESTRICTED للمستخدمين الذين لهم صالحية هنا تفتح قاعدة البيانات
SESSION دون بقيــة المــستخدمين ويكــون هــذا فــي حالــة إجــراء الــصيانة أو لقاعدة البيانات حيث يكون مطلوبـا تعطيـل وصـول بقيـة دالتصدير أو االستيرا
وبعـــد ذلـــك نعطـــل تلـــك الوضـــعية بـــاألمر . المـــستخدمين لحـــين إتمـــام الـــصيانة .المستخدمين من الدخول العادي لقاعدة البياناتالتالي لتمكين بقية
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ة خروج المستخدمين بصورة طبيعي
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
ت حيــث يــتم الخــروج فــورا مــن المثــال وال غيــر طبيعيــا لقاعــدة البيانــايعتبــر هــذا إغالقــا
: التاليةتيستخدم إلى في الحاال
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
56
قاعدة البيانات ال تعمل بصورة طبيعية ولم تفلح الطرق السابقة في غلقها .
حالة االنقطـاع الفـوري للطاقـة فمـثال إذا كنـا نعلـم أن التيـار الكهربـائي سـينقطع . في خالل دقيقة واحدة
الحدوث أخطاء في فتح المث .
نصدر األمر التالي: SHUTDOWN ABORT
:وفى تلك الحالة يحدث ال يسمح بأية اتصاالت جديدة أو عمليات بقاعدة البيانات.
أيـــة إنهـــاءيخـــرج المـــستخدمون الحـــاليين مـــن قاعـــدة البيانـــات علـــى الفـــور ويـــتم . عمليات كانوا يقومون بها حتى ولو كانت غير مكتملة
يتم التراجع عنها أية عمليات غير مؤكدة ال not rolled back
عنــد إعــادة Instance recoveryوفــى هــذه الحالــة ســنحتاج إعــادة إصــالح المثــال
.الفتح
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فمثال في حالة إنشاء المستخدم لجداول جديد .
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بأسماء تبدأ بـ :الرسم التالي
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
59
يظهـر جميـع الجـداول التـيDBA_TABLESكما يظهر مـن الرسـم فـان المنـاظير
جميـع الجـداول التـي ALL_TABLESتحتوى قاعدة البيانات بينما يظهـر المنظـار يمتلكها مستخدم معين مسجل لدى قاعدة البيانات باإلضـافة إلـى جميـع الجـداول التـي ـــــــــــك صـــــــــــالحيات تمكنـــــــــــه مـــــــــــن الوصـــــــــــول إليهـــــــــــا بينمـــــــــــا يظهـــــــــــر المنظـــــــــــار يمتل
USER_TABLES مـن المثـال جميع الجداول المملوكة فقط للمستخدم كما يتـضح :التالي
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
60
empيظهر المثال جميع الجداول المملوكة للمستخدم
والجدول التالي يظهر بعض المناظير جرب واكتشف بنفسك
:للحصول على معلومات عن كل المناظير يمكن الذهاب إلى
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
61
Dynamic Performance Viewsهناك نوع آخر من المناظير تسمى
مــــن تلــــك المنــــاظير ومعظــــم تلــــك 350جــــد حــــوالي يوOracle 10gوفــــي أوراكــــل : الجدول التالي يبين أمثلة منها$Vالمناظير تسمى بأسماء تبتدئ بـ
والذي يبين نوع إصدار األوركل المستخدم V$VERSIONومثال عليها المنظار
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
62
وعلى الرغم من كال النوعين من المناظير يشتركان كالهمـا فـي تقـديم معلومـات هامـة عمــل أوراكــل و بينهمــا تــشابه إال انــه توجــد بعــض اختالفــات تظهــر فــي الجــدول عــن :التالي
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
63
معلومات البد منها :مسؤوليات ووظائف مدير قواعد البيانات
بهــا االهتمــام بعــض المهــام الرئيــسية الواجــب عليــه لأوراكــ البيانــاتعلــى مــدير قواعــد :لضمان صالحية قاعدة البيانات
كل والتطبيقات الخاصة بهتركيب برامج أورا تحديد مواصفات األجهزة المستخدمة والتعامل معها تخطيط قاعدة البيانات وتصميمها إنشاء وفتح قواعد البيانات إنشاء البرامج والتطبيقات إنشاء نسخ احتياطية لقواعد البيانات إضافة مستخدمين لقواعد البيانات و إعطاء امتيازات الدخول د البياناتتحسين أداء قواع
:وظائف نظم إدارة قواعد البيانات
إليك بعض المواصفات التي يجب أن تتوفر في قواعد البيانات القياسـية والتـي تقـدمها :األخرىأوراكل مع العديد من المزايا
إدارة حجم كبير جدا من المعلومات وبشكل آمن إمكانية العمل في بيئة متعددة المستخدمين مثل الشبكات البيانات من عدم العبث بهاحماية تقديم األدوات إلصالح األعطال والتخزين االحتياطي
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
64
:إدارة قواعد البيانات أوراكل نظامواألداء العـــالي بـــسبب التقيـــد بالمقـــاييس قيـــةثويمتـــاز نظـــام قواعـــد البيانـــات أوراكـــل بالو
:والكثير من األسباب التي تم شرح بعضها هنا
كبيرة جداأن تكون إمكانية التخزين إمكانية التعامل مع عدد كبير من المستخدمين بشكل متزامن ومتوازي نظام أمن مـن الممكـن عـدم توقـف التعامـل معـه علـى مـدار اليـوم وقدرتـه علـى
إصالح األعطال حتى الفيزيائية منها حمايــــة البيانــــات مــــن العبــــث بهــــا أو الحــــصول عليهــــا مــــن غيــــر المــــستخدمين
المحددين لي إذ أن زيـــادة البيانـــات والمـــستخدمين ال تـــؤثر علـــى ســـرعة وعمـــل األداء العـــا
أوراكل المواصفات القياسية الخاصة بأوراكل مواصفات عالمية من نظام تشغيلأكثرإمكانية العمل على إمكانية االتصال القوية عبر الشبكات التعريب إذ يمكن التعامل معه باللغة العربية
:البيانات أهداف قواعد
قواعــد البيانــات والتــي قامــت الــشركات بعــد ذلــك ألجلهــا أهــداف معينــة وضــعت هنــاكهـــي شـــركة أوراكـــل واليـــك أهـــم أهـــداف قواعـــد هـــذه وأكبرهـــا بتطـــوير قواعـــد البيانـــات
. وضعها لهااستدعتالبيانات التي
:مركزية البياناتانــات وهــي إحــدى أهــم أهــداف الــذي وجــدت قواعــد البيانــات لهــا والتــي تــوفر ترتيــب البي
لـــسهولة الوصـــول إليهـــا وعـــدم تـــضاربها مـــع التـــوفير فـــي المـــساحات المـــستخدمة فـــي التخزين وللمشاركة في البيانات بين عدة تطبيقات
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
65
:استقاللية البيانات عن التطبيقاتوالتـــي تفيـــد فـــي عـــدم ضـــياع البيانـــات بـــسبب انهيـــار البرنـــامج التطبيقـــي الـــذي يقـــوم
.بإدارتها :ربط البيانات بعالقات
وهـــي هـــدف مهـــم فـــي تـــوفير الجهـــد والوقـــت وللحـــصول علـــى البيانـــات التـــي تـــرتبط أو .تشترك فيما بينها للحصول على معلومات قيمة
:تكامل وانسجام البياناتإحدى أهداف قواعد البيانات التي تقـوم بتحديـد نـوع البيانـات ووضـع الـشروط المحـددة
.لهذه البيانات :أمان البيانات
ف قواعــد البيانــات التــي تــساعد علــى عــدم ضــياع البيانــات وســرعة وهــي إحــدى أهــدا .إصالحها واستردادها
:الوثوقيةوهي إحدى أهم األهداف والتي تساعد في سرية البيانات وعـدم فـضحها وذلـك بتحديـد
السماحيات للوصول إليها :المشاركة في البيانات
ى العديد مـن المـستخدمين وهي من أهم األهداف في البيئات الشبكية والتي تحتوي علالذين لهـم سـماحيات وصـول لقواعـد البيانـات حيـث تـساعد فـي عـدم تـضارب البيانـات
.بين المستخدمين :البيانات أوراكل بمديري قواعدالخاصةبعض أهم األدوات
Server Manager :تـستخدم هـذه األداة لمراقبـة قاعـدة البيانـات كمـا ـ مـدير الخـادم .في إدارة قاعدة البياناتتساعدك على التحكم
Enterprise Manager :تــــستخدم هــــذه األداة فــــي إدارة ـ مــــدير المؤســــسات .الصالحيات والتحكم في سماحيات المستخدمين بواجهة رسومية
SQL Loader :تـستخدم هـذه األداة فـي اسـتيراد البيانـات ـ معـالج لغـة االسـتعالمات .من ملفات نصية إلى قاعدة بيانات أوراكل
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
66
Export Manager :تستخدم هـذه األداة فـي تـصدير قاعـدة بيانـات ـ مدير التصدير أوراكــل أو جــدول محــدد مــن قاعــدة البيانــات الســتخدامات النــسخ االحتيــاطي أو لنقــل
.البيانات من قاعدة بيانات إلى أخرىImport Manager: تـستخدم هـذه األداة فـي اسـتيراد قاعـدة بيانـات ـ مدير االسـتيراد
جداول تم تصديرها من قبـل عمليـة تـصدير سـابقة إمـا إلصـالح قاعـدة البيانـات أو أو .لنقل البيانات من قاعدة بيانات أخرى
للتجـــــارة مـــــن الـــــرواد الـــــذين اســـــتطاعوا تقـــــديم حلـــــول متكاملـــــةوتعتبـــــر األوراكـــــل اإللكترونيــة فــي عــالم اإلنترنــت حــول العــالم والتــي قامــت بتطــوير البنــى التحتيــة لخدمــة
حــول الزبــون فــي تطبيقــات اإلنترنــت وقــدمت األدوات والبــرامج والحلــول/ نيــة الخــادم تقتعمـل بـرامج أوراكـل علـى الحاسـبات الشخـصية محطـات ، والشبكة العالميـة العنكبوتيـة
العمل الفرعية الحاسبات المتوسطة حاسبات رئيسية وبشكل كبير بسبب تقنيـة التـوازي .ل انتشاراوتقديمها الدعم لمعظم نظم التشغي
:إصدارات األوراكل توالـــت ســـريعاوبعـــد أن القـــى رواجـــا 1979 تـــم بيـــع اإلصـــدار األول عـــام وقـــد
:الشركة بطرح اإلصدارات الجديدة والمتطورة على التوالي وهي كالتالي
)بـي دي بـي الرقميـة( فقد تم بنائـه مـن أجـل العمـل مـع حـوا سـيب الــ:اإلصدار الثانيدي ( والتي عملت فيما بعد على نظـام) أر إس إكس(م التشغيل والتي تعمل على نظا
.)اي سي فاكس
حيــث أجريــت عليــه الكثيــر مــن 1983ام عــطرحــه مــن النظــام تــم :اإلصــدار الثالــثوتـم كتابتـه بلغـة ) القياسـية االستفـساراتلغـة(التحسينات خاصة تلـك المتعلقـة بـصيغة
.لى مجموعة أوراكل إ ـأر إس أيـ وتم تغيير اسم الشركة من ) سي(
ولقــد دعــم هــذه اإلصــدار نظــامي 1984إنجــازه عــام مــن أوراكــل تــم :اإلصــدار الرابــعكـــان أول إصـــدار يـــدعم خاصـــية تناســـق كمـــا) أي بـــي أم فـــي أم(و) فـــاكس(التـــشغيل .القراءة
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
67
وقــدم هــذا اإلصــدار دعمــا1985 مــن أوراكــل فقــد تــم إنجــازه عــام :اإلصــدار الخــامسكمــا انــه أول منــتج يعمــل ) القياســيةاالستفــساراتلغــة (ادم باســتخدام الخــ/لتقنيــة الزبــون
كيلو بايت من نظـام التـشغيل 640ضمن نظام التشغيل والذي استطاع تجاوز حاجز DOS .
ولقــد أضــاف تقنيــة القفــل علــى 1988 مــن أوراكــل تــم إنجــازه عــام :اإلصــدار الــسادسظـائف والمنـصات كمـا أضـيف مستوى منخفض إضافة إلى العديد من التحسينات والو
1991وذلــك عــام ) دي اي ســي فــاكس(إليــه خيــار التــوازي والــذي يعمــل علــى نظــام . هذا الخيار متاحا ضمن العديد من المنصاتأصبحومن ثم
وتــــم عليــــه إجــــراء العديــــد مــــن التغييــــرات 1992 تــــم طرحــــه عــــام :اإلصــــدار الــــسابعة واســتخدام الــدخل والخــرج واحتــوى واإلضــافات مثــل منطقــة الــذاكرة والمعالجــة المركزيــ
أيضا على الكثير من األدوات الخاصة بمديري قواعد البيانات
والــذي يتــضمن مفهــوم األغــراض باإلضــافة إلــى العديــد مــن الميــزات :اإلصــدار الثــامن 4والتقنيـــــات وأدوات إدارة قواعـــــد البيانـــــات والـــــسماح لوجـــــود حقـــــول تتـــــسع إلـــــى حـــــد
. أقصىجيجابايت للحقل الواحد كحد
ــرا ــر مــن أوراكــل وهــوأخي ــم طــرح اإلصــدار األخي ــد ت ــا هــذا فق اإلصــدار وحتــى يومن .العاشر
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 ثم
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
69
ال تكون قاعدة البيانات والديفلوبر يمكن تغيير أسماء وموقع اإلعداد لكن أهم شي أنفــي جــزء ويمكــن أن يكونــوا االثنــان" أي فــي نفــس الملــف أو المجلــد" فــي مكــان واحــد األماكن االفتراضية اختيار ولكن هنا تم D: أو C:يسك مثل الجزء دواحد في الهارد
كمـــا يجـــب أن يـــتم إعـــداد , فهـــم المثـــال وتوصـــيله بطريقـــه واضـــحة للجميـــع لكـــي يـــتم .قبل قاعدة البيانات الديفلوبر
: 9iقم باختيار تنصيب قاعدة بيانات أوراكل ثم
: أوراكل الذي تريد تنصيبه في جهازكقم باختيار نوع قاعدة بيانات
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( قاعدة بيانات أوراكل أسموطبعا سيكون
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
71
.ال تغيير الموقعف Database fileيتم طلب تحديد موقع
:تحديد نوع األحرفل خيارات تظهر لنا اآلن ثالثة
ـنفس المستخدم في نظام التشغيلـ النوع االفتراضي تستخدم ألول مره فـي أوراكـل وهـي تـدعم تقنية وهي ) تقنية اليونيكود(استخدام
ـ يفضل اختيارهاـ كل اللغات االختيار من القائمة النوع الذي تريده.
.أدناهالشاشة حسب وذلك
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
72
Next على زر أضغطثم
نوع قاعدة بيانات أوراكل المراد تنصيبها واألدوات التي سوف يتم تنـصيبها نحدد اآلن :كما في الشكلمعها
لبدء التنصيب Installضغط ن
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
73
وبعـد االنتهـاء مـن عمليـة التنـصيب 3 ورقـم 2 رقم CDـ لاسيتم طلب أثناء التنصيب :بنجاح سوف تظهر هذه الشاشة
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
74
: ببعض اإلعداداتبعد االنتهاء من التنصيب علينا القيام
يمـين ومـن ثـم الالمـاوس نـضغط زر جهاز الكمبيوتر الموجودة فـي سـطح المكتـب من منهـــا اختـــارSystem properties وســـوف تظهـــر لـــك شاشـــة Properties اختـــار
Computer Name
Computer Name Changes ســتظهر شاشــة Changeضغط علــى زر نــثــم Moreضغط على زر ن
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.
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
Arab British Academy for Higher Education. Oracle – Part1
www.abahe.co.uk
77
Password: manager Host String Or Database: developer.oracle.us.com
.وسوف يتم االتصال بين الديفلوبر وقاعدة البيانات
مع متنياتنا لكم بالتوفيق والنجاح الدائمني
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
0
Oracle Part 2
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
1
:مقدمـــة
�رجـو أن تكـون عزيــزي الطالـب قـد كو�ــت فكـرة جيـدة عــن
ــزء األول ــل مــن خاللـــ اجل وســنتعرض يف هــذا اجلــزء إىل . األوراك
التعرف على األوراكل بشكل عام مـن خاللــ التعـرف علـى األوامـر
ل إىل علنـا �ـستطيع الـدخو ..... اخلاصة به وكيفية التعامل مـع اجلـداول و
.عامل األوراكل الواسع بكل ثقة ودراية
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 أن أنــه يمكننــايعنــي هــذا , مــن خاللـــ الفاصــلة معــاخاصــتين المــستخدم إعطــاء تــم لقــد
.نعطي عدد من الصالحيات بسطر واحد وباستخدام الفاصلة
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 أي نحدد نوع الحقل ثمللجدول
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يحتوي على
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 النـوع الثـاني فهـو أما
فــي الجــدول الثــانياألساســي تــابع للحقــل األولجــدول ال الحقــل الــذي بأنفقــط تحــدد رقـم الجنـسية فـي جـدول المـوظفين تـابع رقـم الجنـسية فـي جـدول كثـر مـثالألتوضيح لو
المـستخدم إلـزاموالهـدف مـن هـذا كلـه هـو أساسـي يكـون أنالفروض فـالجنسيات لذلك أقـوىبيانات غير موجود وتصبح بياناتـك إدخالـ أو بيانات محدده وتفادي بإدخالـ أرقام يكـون أن هـذا النـوع مـن المحـددات يجـب إنـشاءمع مالحظة انـه عنـد أقوى وبرنامجك
رقـــم الجنـــسية نريـــد ربـــط ما عنـــدمـــثالف .الجـــدول المنـــشأ موجـــود علـــى قاعـــدة البيانـــات يكــون جــدول الجنــسيات أنبجــدول المــوظفين بــرقم الجنــسية بجــدول الجنــسيات يجــب
كثر من حقـل فـي كـال الجـدولين أ إلىمنشأ قبل جدول الموظفين وهكذا ويمكن الرجوع . يكون من نفس النوعأنوكذلك يجب
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
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) ) /
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 الذي قمنا بتحديـده األساسي قيمة فارغة وهو المفتاحلال يقب انه أي
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)
وربط الجداول مع بعضهاإنشاء تم هكذاو
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= رقم الموظفواضافة
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);
.وأخرى نستخدم الفاصلة بين كل قيمة إنناالحظ هنا ون
:مثال
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;
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;
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'
سابقانا الحقول في الجداول كما ذكرأنواعمع مالحظة مراعاة
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>;
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 .....
:مثال
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الـ جملة أن أساسعلى
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 )'
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
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
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;
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: األرقام مجموع عدد من إيجادوهو:
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حيث يرجع اقل قيمة بين مجموعة من البيانات
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 مع أيضاويستخدم
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;
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;
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 إنها أساسعلى
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 )
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')
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حيث تحذف من جهة اليمين
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'
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: موقع الحرف في الكلمة وكذلك يستخدم للبحث عن حرف في إلرجاعيستخدم يــستغل فــي معالجــة أن يرجــع القيمــة صــفر ويمكــن واالموقعــه ل وجــده يرجــع فــإذاكلمــة
.ناتبعض البيا
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 وبـــــــــــدل ال
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'
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
35
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'.
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
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 ضمن جملة الـ اإلدارةتكون هذه
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
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;
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;
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 );
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;
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;
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
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 الـــ إنــشاءقاعــدة . الجدولإنشاء الجدول أو بعد إنشاء
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);
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
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'));
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;
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;
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
52
:األسئلة UNIQUE و PRIMARY KEYهو الفرق بين الـ ما ـ 1 PRIMARY ننشئ أن وأردنا لدينا جدول توجد به بيانات مكررة أنلنفرض ـ 2
KEYات الالزمة هي الخطو على هذا العمود الذي يحتوي على البيانات المكررة ما .لتطبيق ذلك
CONSTRAINTـ كيف نقوم بتفعيل ال ـ 3
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: في الدوال وتعني نوع الدوال هل هو رقم أو حرف أو إرجاعهاهنا نوع القيمة المراد
.غير ذلك
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[;
الدوالالسم يكون مطابق أنوهنا ننهي الدوال مع كتابة اسم الدوال ويجب
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];
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الـ ئنهيهنا
لكغير ذ
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;
ويمكن استدعائه عن جدول الطالبإلى يأخذ رقم الكورس ويضيفه اإلجراءهذا .طريق التريجر مثال
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ـ ال
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;
:مثال
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;
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
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;
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;
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
64
:األسئلة
؟ ما هي الفائدة من الدوال ـ1
؟ كان داخل أو خارجإذاكيف نستطيع تحديد نوع الباراميتر ـ 2
؟SELECT في جملة وارجاعهما فانكشن يقوم بجمع رقمين بإنشاءقم ـ 3
؟رالبروسيجما هي الفائدة من ـ 4
؟ كان داخل أو خارجإذاتحديد نوع الباراميتر كيف نستطيع ـ 5
.SELECT في جملة وارجاعهما بروسيجر يقوم بجمع رقمين بإنشاءقم ـ 6
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;
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;
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]
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;
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 الـ إنشاءسوف يتم
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
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;
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 );
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
73
معلومات تلخيصية
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
74
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
75
:تمرين حر
ــــد باســــم ــــستخدم جدي ــــشئ م ــــرور ABAHEأن ــــة الم ــــع DHID وكلم م .المناسبة له للعملالصالحيات
صــمم جــداول للطــالب ونتــائجهم ولــك حريــة اختيــار العمليــات والنتــائج التــيـــا ومـــن وجهـــة نظـــرك ـــر معن ـــا ســـبق وم ـــستفيدا بم ـــذلك م تراهـــا مناســـبة ل
...كمبرمج احفظ كل األكواد مع الشرح وأرسلها ألستاذك المشرف.
مع متنياتنا لكم بالتوفيق والنجاح الدائمني
Arab British Academy for Higher Education. Oracle – Part 2
www.abahe.co.uk
76