100% found this document useful (1 vote)
890 views155 pages

Oracle

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

Uploaded by

A-selam Ibra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
890 views155 pages

Oracle

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

Uploaded by

A-selam Ibra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 155

Arab British Academy for Higher Education.

Oracle – Part1

Oracle
Part 1

0
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺍﳉﺰء ﺍﻷﻭﻝ‬
‫ﺗﻌﺮﻳﻔﺎﺕ‬

‫ﻣﺎ ﻫﻲ ﺍﻷﻭﺭﻛﻞ‬

‫ﺍﳍﻴﻜﻞ ﺍﳌﺎﺩﻱ ﻟﻠﻤﻠﻔﺎﺕ ﰲ ﺃﻭﺭﺍﻛﻞ ‪Files Structure‬‬

‫ﻭﺣﺪﺍﺕ ﲣﺰﻳﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﰲ ﺃﻭﺭﺍﻛﻞ‬

‫ﺍﻟﻌﻤﻠﻴﺎﺕ ‪Processes‬‬

‫ﻫﻴﻜﻠﻴﺔ ﺍﻟﺬﺍﻛﺮﺓ ‪Memory Structure‬‬

‫ﺗﻨﻔﻴﺬ ﺍﳌﻌﺎﻣﻼﺕ ﰲ ﺃﻭﺭﺍﻛﻞ‬

‫ﻓﺘﺢ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪Database Startup‬‬

‫ﺇﻏﻼﻕ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪Database Startup‬‬

‫ﺍﻟﻜﺘﺎﻟﻮﻍ ‪The Data Dictionary‬‬

‫ﻣﻌﻠﻮﻣﺎﺕ ﻻﺑﺪ ﻣﻨﻬﺎ‬

‫ﺗﻨﺼﻴﺐ ﻗﺎﻋﺪﺓ ﺑﻴﺎﻧﺎﺕ ﺃﻭﺭﺍﻛﻞ‬

‫‪1‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫إن أردﻧ ـ ــﺎ ﺗﻌرﻳ ـ ــف اﻷو ارﻛ ـ ــﻝ ﻧﻘ ـ ــوﻝ إﻧ ـ ــﻪ ﺑرﻧ ـ ــﺎﻣﺞ ﻗﺎﻋ ـ ــدة ﺑﻳﺎﻧ ـ ــﺎت وﻫ ـ ــﻲ ﺷ ـ ــﺑﻳﻬﺔ إﻟ ـ ــﻰ‬
‫ﻣﺎﻳﻛروﺳــوﻓت أﻛــﺳس وأﻗــرب إﻟــﻰ ﻣﺎﻳﻛروﺳــوﻓت إس ﻛﻳــو إﻝ ﺳ ـرﻳﻔر ﻳﻌﻧــﻲ أﻧﻬــﺎ ﻗﺎﻋــدة‬
‫ﺑﻳﺎﻧــﺎت وﻟﻳــﺳت ﻟﻐــﺔ ﺑرﻣﺟــﺔ ﻣــﺳﺗﻘﻠﺔ ﺑﺣــد ذاﺗﻬــﺎ ﻓﻣــﺛﻼ ﻓﺑﺟـواﻝ ﺑﻳــﺳك ﺗﻌﺗﺑــر ﻟﻐــﺔ ﺑرﻣﺟــﺔ‬
‫ﻷﻧﻬــﺎ ﺗﻣﻛﻧــك ﻣــن ﻋﻣــﻝ ﺑ ـراﻣﺞ ذات أﻫــداف ﻣﺗﻌــددة وﻻ ﻳــﺷﺗرط أن ﺗﻛــون ﺑ ـراﻣﺞ ﻗواﻋــد‬
‫ﺑﻳﺎﻧﺎت ﻓﻳﻣﻛﻧك ﻋﻣـﻝ ﺑرﻧـﺎﻣﺞ رﺳـم ﻛﻣـﺎ ﺑرﻧـﺎﻣﺞ اﻟرﺳـﺎم ﻓـﻲ وﻳﻧـدوز وﻳﻣﻛﻧـك اﻟـﺗﺣﻛم ﺑﻬـﺎ‬
‫ﻋﻠﻰ ﺣد ﻛﺑﻳر ﻣن اﻟﻣروﻧﺔ واﻹﻣﻛﺎﻧﻳﺎت اﻟﺗﻲ ﺗـﺳﻣﺢ ﻟـك ﺣﺗـﻰ ﺑﺎﻻرﺗﺑـﺎط ﺑﻘواﻋـد ﺑﻳﺎﻧـﺎت‬
‫ﻣﺗﻌددة وﻟﻛن أوراﻛﻝ ﻫﻲ ﻗﺎﻋدة ﺑﻳﺎﻧﺎت ﻗوﻳﺔ و آﻣﻧﺔ وﻟﻛـن ﻳوﺟـد ﻟـدﻳﻬﺎ أدوات ﺗـﺳﺎﻋدﻫﺎ‬
‫ﻟﻠﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ ٕواظﻬﺎرﻫﺎ ﻓﻲ أﺷﻛﺎﻝ ﻣﺗﻌددة ﻣﺛﻝ اﻟدﻓﻠوﺑر ﺑﺣﻳـث ﻳﻣﻛﻧـك إدﺧـﺎﻝ اﻟﺑﻳﺎﻧـﺎت‬
‫واﺳــﺗﺧراﺟﻬﺎ ﻋ ــن طرﻳ ــق ﻧﻣ ــﺎذج وﺗﻘ ــﺎرﻳر ورﺳ ــوم ﺑﻳﺎﻧﻳ ــﺔ وﻟﻛ ــن ﻻ ﻳﻣﻛﻧﻬ ــﺎ اﻟﺗﻌﺎﻣ ــﻝ ﻣ ــﻊ‬
‫ﻗﺎﻋــدة ﺑﻳﺎﻧــﺎت ﻏﻳــر أو ارﻛــﻝ ﻛﻣــﺎ أﻧﻬــﺎ ﻻ ﺗﻣﻧــك ﻣــن ﻋﻣــﻝ ﺑـراﻣﺞ ﻣﺛــﻝ اﻟرﺳــﺎم دﻋﻧــﺎ ﻧﺄﺧــذ‬
‫أﻣﺛﻠــﺔ ﻟﻛــﻲ ﻳﺗﺑــﻳن اﻟﻔــرق ﻟــدﻳك‪ .‬وﻟﻧﻔﺗــرض ﻣــﺛﻼً ﺑــﺄن ﻣــدﻳرك طﻠــب ﻣﻧــك ﺛﻼﺛــﺔ ﻣــﺷﺎرﻳﻊ‬
‫وﻫﻲ‪:‬‬
‫اﻟﻣﺷروع اﻷوﻝ‬
‫ﺑرﻧ ــﺎﻣﺞ ﻳﻘ ــوم ﺑﻌﻣـــﻝ ﻣﻠ ــﺻﻘﺎت ﺧﺎﺻ ــﺔ ﺑﺎﻟرﺳـــﺎﺋﻝ ﻟﻛ ــﻲ ﻳ ــﺗم إﻟـــﺻﺎﻗﻬﺎ ﻋﻠ ــﻰ ﻣظـــﺎرﻳف‬
‫اﻟﻣراﺳﻼت ﻳﺳﺗﻧد إﻟﻰ ﻗﺎﻋدة ﺑﻳﺎﻧﺎت اﻟﻌﻣﻼء‪.‬‬
‫اﻟﺣﻝ‬
‫ﻳﻣﻛن ﻟﻠﺑرﻧﺎﻣﺞ اﻻﺳﺗﻧﺎد ﻋﻠﻰ ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ أو ﻋﻣﻝ ﻗﺎﻋدة ﺑﻳﺎﻧﺎت ﺻـﻐﻳرة ﻋﻠـﻰ‬
‫أﻛــﺳس وﻳﻣﻛــن ﻋﻣــﻝ اﻟﻣﻠــﺻﻘﺎت ﻛﺗﻘرﻳــر ﻣﺧــرج ﻣــن ﻧﻔــس أو ارﻛــﻝ وﻟﻛــن ﻓــﻲ اﻟﻔﻳﺟ ـواﻝ‬
‫ﺑﻳـ ــﺳك ﻳﻣﻛﻧـ ــك إﺿـ ــﺎﻓﺔ ﻟﻣـ ــﺳﺎت ﻓﻧﻳـ ــﺔ ٕواﺿـ ــﺎﻓﺔ ﻓﻼﺗـ ــر ﻣﻌﻳﻧـ ــﺔ ﺗﻌﻣـ ــﻝ ﻋﻠـ ــﻰ اﻟﻣﻠـ ــﺻﻘﺎت‬
‫ﻹظﻬﺎرﻫــﺎ ﺑﺄﺷــﻛﺎﻝ ﺟﻣﺎﻟﻳــﺔ أﻛﺛ ـر ﻓﻔــﻲ ﺣــﺎﻝ أو ارﻛــﻝ ﺗﺣﺗــﺎج إﻟــﻰ ﻧــﺳﺧﺔ ﻗﺎﻋــدة ﺑﻳﺎﻧــﺎت‬
‫أوراﻛﻝ ﻟﺗﺣﻣﻳﻠﻬﺎ ﻋﻠﻰ اﻟﺟﻬﺎز ﻛﻣﺎ ﺗﺣﺗﺎج ﻟﻠﻣﻠﻔﺎت اﻟﺗﺷﻐﻳﻠﻳﺔ اﻟﺧﺎﺻﺔ ﺑﺎﻟﻧﻣﺎذج واﻟﺗﻘﺎرﻳر‬
‫ﻛﻣــﺎ أن اﻟﺣﻣﺎﻳــﺎت ﻳﺟــب أن ﺗــوزع ﻟﻠﻣــﺳﺗﺧدﻣﻳن ﺑﺣﻳــث ﻻ ﻳــﺳﻣﺢ ﻟﻛــﻝ ﻣــﺳﺗﺧدم اﻟــدﺧوﻝ‬
‫ﻗﺑﻝ إﻋطﺎﺋﻪ ﻫـذﻩ اﻟـﺳﻣﺎﺣﻳﺎت ﻓﺑرﻧـﺎﻣﺞ ﻛﻬـذا ﻻ ﻳﺣﺗـﺎج إﻟـﻰ ﺣﻣﺎﻳـﺔ ﻷن أي ﻣوظـف ﻣـن‬
‫اﻟﻣﻣﻛن اﺳﺗﺧداﻣﻪ وﻟذﻟك ﻳﻔﺿﻝ ﻓﻳﺟواﻝ ﺑﻳﺳك‬
‫اﻟﻣﺷروع اﻟﺛﺎﻧﻲ‬

‫‪2‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺑرﻧﺎﻣﺞ ﻳﻘوم ﺑﻌﻣﻝ ﻣﻔﻛرة ﻟﻠﻬﺎﺗف اﻟﺷﺧﺻﻲ أو ﻟﻌﻧﺎوﻳن وﻫواﺗف اﻟﻌﻣﻼء‬


‫اﻟﺣﻝ‬
‫ﻫذا اﻟﺑرﻧﺎﻣﺞ ﻳﻧطﺑق ﻋﻠﻳﻪ ﻧﻔس ﻣﺎ ﻳﻧطﺑق ﻋﻠﻰ اﻟﻣﺷروع اﻷوﻝ‬
‫اﻟﻣﺷروع اﻟﺛﺎﻟث‬
‫ﺑرﻧﺎﻣﺞ ﺧـﺎص ﺑﺎﻟﺣـﺳﺎﺑﺎت ﻳـﺳﺗﻧد ﻋﻠـﻰ ﻗﺎﻋـدة ﺑﻳﺎﻧـﺎت ﺣـﺳﺎﺑﺎت اﻟـﺷرﻛﺔ ﻓـﻲ ﺛﻼﺛـﺔ ﻓـروع‬
‫ﻣوزﻋــﺔ ﺟﻐراﻓﻳــﺎً وﻫــذﻩ اﻟﻣؤﺳــﺳﺔ ﺗﺗﻌﺎﻣــﻝ أﻳــﺿﺎ ﺑﺎﻟﺗﺟــﺎرة اﻹﻟﻛﺗروﻧﻳــﺔ ﻋﻠــﻰ اﻹﻧﺗرﻧــت ﻛﻣــﺎ‬
‫ﺗﺣﺗــﺎج ﻟﺗﻘــﺎرﻳر ٕواﺣــﺻﺎءات دورﻳــﺔ ﺗــزود ﻟﻠﻌﻣــﻼء ﻣــن ﻗﺑــﻝ اﻟﺑرﻧــﺎﻣﺞ دون اﻟﺣﺎﺟــﺔ ﻟﻌﻣــﻝ‬
‫ﻳدوي‪.‬‬
‫اﻟﺣﻝ‬
‫ﻫــذا اﻟﺑرﻧــﺎﻣﺞ ﻳﻣﻛــن أن ﻳﺣــﻝ ﺑﻔﻳﺟ ـواﻝ ﺑﻳــﺳك وﻟﻛــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻻ ﻳﻣﻛــن أن ﺗﻛــون‬
‫أﻛــﺳس ﺑــﻝ ﻣــﺳﺗﺣﻳﻝ وذﻟــك ﻟﻛﺛـرة اﻟﺑﻳﺎﻧــﺎت وﻛﺛـرة اﻟﻌﻣﻠﻳــﺎت وﺗوزﻳــﻊ ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت ﺑــﻳن‬
‫ﻓروع اﻟﺷرﻛﺔ اﻟﻣﺧﺗﻠﻔﺔ ﻓﻳﻣﻛن أن ﻳرﺑط ﺑرﻧﺎﻣﺞ ﻓﻳﺟـواﻝ ﺑﻳـﺳك ﺑﻘﺎﻋـدة ﺑﻳﺎﻧـﺎت أو ارﻛـﻝ أو‬
‫أي ﻛﻳــو أﻝ ﺳــﻳرﻓر ﻣــن ﻣﺎﻳﻛروﺳــوﻓت وﻟﻛــن ﻛــﺎن ﻣــن اﻷﺣــرى اﺳــﺗﻌﻣﺎﻝ اﻟــدﻳﻔﻠوﺑر ﻟﻬــذا‬
‫اﻟﺗطﺑﻳق وذﻟك ﻟﻣروﻧﺔ اﻟﺑرﻧﺎﻣﺞ ﻣﻊ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت اﻟﺗﻲ وﺿﻊ اﻟدﻳﻔﻠوﺑر ﻷﺟﻠﻬﺎ ﻛﻣﺎ أن‬
‫ﻣـ ــن أدوات أو ارﻛـ ــﻝ إﻣﻛﺎﻧﻳـ ــﺔ اﻟﺗﻌﺎﻣـ ــﻝ ﻣـ ــﻊ اﻹﻧﺗرﻧـ ــت ٕواﻋطـ ــﺎء ﺣﻣﺎﻳـ ــﺔ وأﻣـ ــﺎن ﻟﻠﺑﻳﺎﻧـ ــﺎت‬
‫اﻟﻣوﺟــودة ﻛﻣــﺎ أن اﻟﺑرﻧــﺎﻣﺞ ﻻ ﻳﻣﻛــن أي ﻣــﺳﺗﺧدم ﻣــن اﻟــدﺧوﻝ إﻟﻳــﻪ واﻟﻌﺑــث ﺑﻣﺣﺗوﻳﺎﺗــﻪ‬
‫ﺳوى ﻣن ﻫم ﻣﺧﺗﺻﻳن ﺑذﻟك وﺑﺳﻣﺎﺣﻳﺎت ﻣﺗﻔﺎوﺗﺔ‪.‬‬

‫ﻳﺷﻳر اﻻﺳم اﻟﻳوﻧﺎﻧﻲ اﻟﻘدﻳم أو ارﻛـﻝ ‪ Oracle‬إﻟـﻰ اﻟﻛﺎﻫﻧـﺔ اﻟﻣﻘدﺳـﺔ اﻟﺗـﻲ ﻳطﻠﺑﻬـﺎ اﻟﻧـﺎس‬
‫ﻟﻠﺗﺑوء ﺑﺎﻟﻐﻳب وﻟﺗﻔﺳﻳر ﺣﻛﻣﺔ اﻹﻟﻬﺔ اﻟﻣﻘدﺳـﺔ إن ﻛـﻝ ﻣـﺎ ﺗﻘوﻟـﻪ ﻫـو ﺣﻛﻣـﺔ وﻟﻛﻧﻬـﺎ داﺋﻣـﺎً‬
‫ﺣﻛﻣــﺔ ﻣﻘدﺳــﺔ ﻣﻐﻠﻔــﺔ ﺑــﺎﻟﻐﻣوض‪ .‬وﻳــﺻف اﻟﻠﻔــظ أﻳــﺿﺎً ﻛــﻝ ﻣــﺎ ﻟدﻳــﻪ اﻟﻛﺛﻳــر ﻣــن اﻟﻌﻠــم‬
‫ﺑﻣوﺿوع ﻣﻌﻳن وﻳﺳﺗطﻳﻊ أن ﻳﻘدﻣﻪ ﻛﻧﺻﻳﺣﺔ ﻏﺎﻟﻳﺔ‪ .‬أﻣﺎ اﻟﺻﻔﺔ ﻓﻬـﻲ ‪ oracular‬وﻫـﻰ‬
‫ﺗ ــﺷﻳر إﻟ ــﻰ اﻟ ــﺻﻌوﺑﺔ ﻓ ــﻲ اﻟﻔﻬ ــم‪ٕ .‬واذا ﻛﺎﻧ ــت أو ارﻛ ــﻝ ﺟ ــدﻳرة ﺑ ــﺎن ﺗﺗﺗ ــوج أﻣﻳـ ـرة ﻟﻠ ــﺳﺣر‬
‫واﻟﻐﻣ ــوض إﻻ إﻧﻧ ــﺎ ﻧﻧ ــوي ﺑ ــﺈذن اﷲ أن ﻧﻧظ ــر ﻟﻧ ــرى ﻛﻳ ــف ﻳﻌﻣ ــﻝ ﻫ ــذا اﻟﺑﻧ ــﺎء اﻟ ــﺿﺧم‬
‫اﻟﻣﺳﻣﻰ ﺑﺄوراﻛﻝ ﻣن اﻟـداﺧﻝ وذﻟـك اﻷﻣـر ﻳﻌـد ﻣﻘدﻣـﺔ ﻻ ﻏﻧـﻰ ﻋﻧـﻪ ﻟﻣـن ﻳرﻳـد أن ﻳﻧﺗﻔـﻊ‬

‫‪3‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺑﻣزاﻳﺎ ﻧظﺎم ﻣن أﻗوى ﻧظم ﻗواﻋد اﻟﺑﻳﺎﻧﺎت وان ﻳﺗﻘدم ﻗﻠﻳﻼً ﻓﻲ دراﺳﺗﻪ ﻛـﻲ ﻳـﺻﺑﺢ ﺑﻌـون‬
‫اﷲ ﻣدﻳ اًر وﻣﺳﻳط اًر ﻋﻠﻰ أوراﻛﻝ اﻷﻣﻳرة اﻟﺳﺎﺣرة‪.‬‬

‫وﻗد ﺣﺎوﻟت ﻗدر اﻟﻣﺳﺗطﺎع أن أﻗدم أوراﻛﻝ ﺑﺄﺳﻠوب ﻣﺑﺳط وﻟم اﻟﺗزم ﺣرﻓﻳﺎً ﺑﺎﻟﺗﻘﺳﻳم‬
‫اﻟﻣوﺟود ﻓﻲ ﻛﺗﺎﺑﺎت أوراﻛﻝ اﻟﻣﻌﻘدة ﻛﻲ أﺣﺎوﻝ ﺑﻘدر اﻹﻣﻛﺎن ﺗﺑﺳﻳط اﻟﻣﻌﻠوﻣﺔ وﻣن َﺛم‬
‫ﻧدﺧﻝ إﻟﻰ اﻟﺗﻌﺎﻣﻝ ﻣﻊ إﺻداراﺗﻬﺎ‪.‬‬

‫‪4‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻣﺎ ﻫﻲ ﺍﻷﻭﺭﻛﻞ‬
‫ﺗ ــﺷﻳر ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت ‪Database‬إﻟ ــﻰ ﻣﺟﻣوﻋ ــﺔ ﻣﻧظﻣ ــﺔ ﻣ ــن اﻟﺑﻳﺎﻧ ــﺎت واﻟﺗ ــﻲ ﺗﺧ ــزن‬
‫ﺑطرﻳﻘﺔ ﻣﻌﻳﻧﺔ ﺑﺣﻳث ﻳﺳﻬﻝ اﻟوﺻوﻝ إﻟﻳﻬﺎ واﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ ﺑﻛﻔﺎءة‪ .‬وﻳﺗم اﻟﺗﻌﺎﻣﻝ ﻣﻊ ﺗﻠك‬
‫اﻟﺑﻳﺎﻧــﺎت ﺑواﺳــطﺔ ﻧظــم ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت ‪ RDBMS‬وﻫــﻰ ﺑ ـراﻣﺞ ﻣﻌﻘــدة وأدوات ﺗﻣﻛﻧﻧــﺎ‬
‫ﻣن اﻟوﺻوﻝ إﻟﻰ اﻟﺑﻳﺎﻧﺎت ﺑﺳﻬوﻟﺔ‪.‬‬

‫إن إدارة ﻗواﻋد اﻟﺑﻳﺎﻧﺎت ﺗﺗطﻠب اﻟﻌدﻳد ﻣن اﻟﻌﻣﻠﻳﺎت واﻹﺟراءات وﻣن أﻣﺛﻠﺗﻬﺎ‪:‬‬

‫إﻧــﺷﺎء ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت‪ :‬وﻫــﻲ اﻟﺣﺎوﻳــﺔ أو اﻟوﻋــﺎء اﻟﺗــﻲ ﺳــﺗﻧﺗظم ﻓﻳــﻪ اﻟﺑﻳﺎﻧــﺎت وﻛﻳﻔﻳــﺔ‬
‫ﺗﻧظ ــﻳم اﻟﺑﻳﺎﻧ ــﺎت ﻧﻔ ــﺳﻬﺎ داﺧ ــﻝ ﺗﻠ ــك اﻟﺣﺎوﻳ ــﺔ وط ــرق اﺳ ــﺗرﺟﺎﻋﻬﺎ ﻛﻣ ــﺎ ﺗﺗ ــﺿﻣن أﻳ ــﺿﺎً‬
‫إﺟراءات ﺗﺄﻣﻳن اﻟﺑﻳﺎﻧﺎت وطرق اﻻﺣﺗﻔﺎظ ﺑﺗﺎ ﺳﻠﻳﻣﺔ وﺣﻣﺎﻳﺗﻬﺎ ﻣن اﻟﺗﻠف‪.‬‬

‫إن أوراﻛﻝ ﻛﻧظﺎم ﻹدارة ﻟﻘواﻋد اﻟﺑﻳﺎﻧﺎت ﻗـد ﺗـم ﺗـﺻﻣﻳﻣﻪ ﺧﺻﻳـﺻﺎً ﻟﻛـﻲ ﻳﻌﻣـﻝ ﻓـﻲ ﺑﻳﺋـﺔ‬
‫ﻋﻣــﻝ ﺗﺣــوي اﻟﻌدﻳــد ﻣــن اﻟﻣــﺳﺗﺧدﻣﻳن اﻟــذﻳن ﻳرﻳــدون إﻧﺟــﺎز إﻋﻣــﺎﻟﻬم ﺑــﺳرﻋﺔ وﺳــﻬوﻟﺔ‬
‫وﺑﺎﻟﺗــﺎﻟﻲ ﺿــﻣﺎن اﻟوﺻــوﻝ ﻓــﻲ ﻧﻔــس اﻟوﻗــت ﺗﻘرﻳﺑــﺎً إﻟــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻻﺳــﺗﻔﺎدة ﻣــن‬
‫ﻣواردﻫﺎ اﻟﻣﺗﺎﺣﺔ وﺗﺗﻣﻳز ﺑﻳﺋﺔ اﻟﻌﻣﻝ ﺗﻠك ﺑﺎﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬ﻳﻌﻣ ــﻝ ﻧظ ــﺎم اﻟﺗ ــﺷﻐﻳﻝ ﻋﻠ ــﻰ ﺗﻧﻔﻳ ــذ اﻟﻌدﻳ ــد ﻣ ــن اﻟﻌﻣﻠﻳ ــﺎت ‪ Process‬ﻓ ــﻲ ﻧﻔ ــس‬
‫اﻟوﻗت‪.‬‬

‫‪ ‬ﻳﻘــوم ﻧظــﺎم اﻟﺗــﺷﻐﻳﻝ ﺑﺗﺣدﻳــد وﻗــت ﻣﻌــﻳن ﻟﻛــﻝ ﻋﻣﻠﻳــﺔ وطرﻳﻘــﺔ ﺗﻧﻔﻳــذﻫﺎ وأوﻟوﻳــﺔ‬
‫اﻟﺗﻧﻔﻳذ‪.‬‬

‫‪ ‬ﻳﻘــوم ﻧظــﺎم اﻟﺗــﺷﻐﻳﻝ ﺑﺗﻘــﺳﻳم اﻟــذاﻛرة ‪ Memory‬إﻟــﻰ ﻣﻧــﺎطق أو أﺟـزاء ﻣﺣﺟــوزة‬


‫ﻟﻠﻣﺳﺗﺧدﻣﻳن وﻣﻧﺎطق ﺗﺗﺷﺎرك ﻓﻳﻬﺎ ﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﻳﺎت‪.‬‬

‫ﻗﺑـﻝ أن ﻧــﺻور اﻟﻛﻳﻔﻳــﺔ اﻟﺗــﻲ ﻳﻌﻣــﻝ ﺑﻬــﺎ ﺳــﻳرﻓر اﻷورﻛــﻝ ﻳﻧﺑﻐــﻲ ﺗوﺿــﻳﺢ ﻣﻌﻧــﻰ اﻟــﺳﻳرﻓر‬
‫واﻟذي ﻫو ﺑﺑﺳﺎطﺔ ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑراﻣﺞ واﻟﺗﻲ ﺗﺷﻛﻝ ﻧظﺎﻣﺎً ﻣﺗﻛﺎﻣﻼً ﺗرﻛب ﻋﻠـﻰ ﺟﻬـﺎز‬

‫‪5‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻛﻣﺑﻳوﺗر ﺑﻣواﺻﻔﺎت ﺧﺎﺻﺔ ﻛﻲ ﻳﺳﺗطﻳﻊ ﺗﻘدﻳم ﺧدﻣﺎت ﻣﻌﻳﻧﺔ إﻟﻰ ﺑراﻣﺞ أﺧـرى أو إﻟـﻰ‬
‫ﻋدة ﻣﺳﺗﺧدﻣﻳن ﻓﻲ ﻧﻔس اﻟوﻗت ﺗﻘرﻳﺑﺎً‪.‬‬

‫إطﻼﻟﺔ ﻋﻠﻰ ﺳﻳرﻓر اﻷورﻛﻝ ‪:‬‬

‫ﺳـﻳرﻓر أو ارﻛـﻝ‪ Oracle Server‬ﻫـو ﻣﺟﻣوﻋـﺔ ﻣـن اﻟﺑـراﻣﺞ اﻟﺗـﻲ ﺗـﺷﻛﻝ ﻧظﺎﻣـﺎً ﺷـﺎﻣﻼً‬
‫ﻹدارة ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت‪ .‬ﻣــن ﺧــﻼﻝ ﺗﻠــك اﻟﺑ ـراﻣﺞ ﻳــﺗم إﺟ ـ ارء ﻋﻣﻠﻳــﺎت ﻋدﻳــدة ﻓــﻲ اﻟــذاﻛرة‬
‫واﻟﺗــﻲ ﺗﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ اﻷورﻛــﻝ ﺑــﺷﻛﻝ ﺧــﺎص ﺣﻳــث ﺗــﺳﻣﺢ ﺗﻠــك اﻟﻌﻣﻠﻳــﺎت ﺑﺎﻟوﺻــوﻝ إﻟــﻰ‬
‫اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ اﻟﺗﻲ ﺗﺷﻛﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت واﻟﺗﻌﺎﻣـﻝ ﻣﻌﻬـﺎ ﺑﻛﻔـﺎءة‪ .‬ﻳﻣﻛـن ﺗوﺿـﻳﺢ ﺗﻠـك‬
‫اﻟﻔﻛرة ﻋن طرﻳق اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ ‪:‬‬

‫ﻣن ﺧﻼﻝ اﻟﻌرض اﻟﺳﺎﺑق ﻳﻣﻛن ﺗﺻور ﻣﻌﻣﺎرﻳﺔ اﻟﺳﻳرﻓر ﻷوراﻛﻝ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ .1‬اﻟﻌﻣﻠﻳﺎت ‪Processes‬‬

‫‪ .2‬ﻣﻌﻣﺎرﻳﺔ اﻟذاﻛرة ‪Memory Structure‬‬

‫‪ .3‬اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ اﻟﻣﻛوﻧﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ‪Physical File Structure‬‬

‫ﻳﻧﺑﻐﻲ أن ﻧﻌﻲ اﻟﺗﻔرﻗﺔ ﺑـﻳن اﻷورﻛـﻝ ﻛـداﺗﺎﺑﻳز ‪ Database‬ﺣﻳـث ﻳـﺷﻳر اﻟﻣـﺻطﻠﺢ إﻟـﻰ‬
‫ﻣﺟﻣوﻋﺔ ﻣﻧظﻣﺔ ﻣن اﻟداﺗﺎ ﻣﺧزﻧﺔ ﻓﻲ ﻣﻠﻔﺎت أﻣﺎ اﻟﻣﺛـﺎﻝ ‪ Instance‬ﻓﻬـو ﻣﺟﻣوﻋـﺔ ﻣـن‬
‫‪6‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟﻌﻣﻠﻳــﺎت ‪ Processes‬واﻟﺗــﻲ ﺗــﺗم ﻓــﻲ ﻣﻧــﺎطق ﻣﻌﻳﻧــﺔ ﻣــن اﻟــذاﻛرة ﺗﺣــددﻫﺎ أو ارﻛــﻝ ﻛــﻲ‬
‫ﻧــﺗﻣﻛن ﻣــن اﻟوﺻــوﻝ إﻟــﻰ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ اﻟﺗــﻲ ﺗــﺷﻛﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ‪.‬‬
‫أي أن‪:‬‬

‫‪ ‬ﻣﻌﻣﺎرﻳﺔ اﻟذاﻛرة ‪ +‬اﻟﻌﻣﻠﻳﺎت اﻟﺗﻲ ﺗﺗم ﻓﻳﻬﺎ = ‪Oracle Instance‬‬

‫‪ ‬اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ اﻟﻣﻛوﻧﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻳﺷﺎر إﻟﻳﻬﺎ ﻋﺎدة ﺑـ ‪Database‬‬

‫‪ ‬اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ اﻟﻣﻛوﻧﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ‪ +‬ﻣﺛﺎﻝ اﻷورﻛﻝ = ‪Oracle Server‬‬


‫اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ ﻳﺑﻳن اﻛﺛر اﻟﻣﻘﺻود ﻣﻣﺎ ﻗﻠﻧﺎﻩ ‪:‬‬

‫وﻟﻛن ﻣﺎ اﻟذي ﻳﺣدث ﻋﻧدﻣﺎ ﻳﻘوم اﻟﻣﺳﺗﺧدم ﺑﺎﻻﺗﺻﺎﻝ ﺑﺄوراﻛﻝ ؟‬

‫ﻳﻣﻛﻧﻧﺎ ﺗوﺿﻳﺢ ذﻟك ﺑﺎﻟرﺳم اﻟﺗﺎﻟﻲ ‪:‬‬

‫‪7‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻋﻧدﻣﺎ ﻳﻘوم اﻟﻣﺳﺗﺧدم ﺑﺎﻻﺗﺻﺎﻝ ﺑﺄوراﻛﻝ ﻣن ﺧﻼﻝ ﺗطﺑﻳق ﺳﺗﻘوم أو ارﻛـﻝ ﺑﺗوﻟﻳـد ﻋﻣﻠﻳـﺔ‬
‫ﺟدﻳ ــدة ﻣﺧﺻ ــﺻﺔ ﺑﺎﻟﻛﺎﻣ ــﻝ ﻟ ــﻪ ‪ Dedicated Server Process‬وﺳ ــﺗظﻝ ﻣوﺟ ــودة‬
‫طـواﻝ ﻓﺗـرة اﻻﺗــﺻﺎﻝ وﻳﻛــون اﻟــﺷﺎﻏﻝ اﻷﺳﺎﺳــﻲ ﻟﺗﻠــك اﻟﻌﻣﻠﻳــﺔ ﻫــو ﺧدﻣــﺔ اﻟﻣــﺳﺗﺧدم ﻓــﺈذا‬
‫ﻗﻣﻧـﺎ ﺑﺗﻧﻔﻳـذ اﺳـﺗﻌﻼم ﻣـﺛﻼً ﻓﺈﻧﻬــﺎ ﺳـوف ﺗـﺳﺗﻘﺑﻝ ﺟﻣﻠـﺔ اﻻﺳــﺗﻌﻼم وﺗﻧﻔـذﻫﺎ ﺣﻳـث ﺗﺑـدأ ﻓــﻲ‬
‫إﻋطﺎء اﻷواﻣر ﻟﻠـﺳﻳرﻓر ﻟﻠﺑﺣـث ﻋـن اﻟـداﺗﺎ ﺳـواء ﻓـﻲ ذاﻛـرة اﻟﻛـﺎش أو اﻟﻣﻠﻔـﺎت ﺛـم ﺗﻘـوم‬
‫ﺑﺟﻠﺑﻬﺎ إﻟﻰ اﻟﺗطﺑﻳق اﻟذي طﻠﺑﻬﺎ‪ .‬أن اﻟﻐرض اﻷﺳﺎﺳﻲ ﻣﻧﻬﺎ ﻫو اﻻﺳﺗﺟﺎﺑﺔ إﻟﻰ طﻠﺑﺎت‬
‫‪ Sql‬اﻟﺧﺎﺻﺔ ﺑﺎﻟﻣﺳﺗﺧدم ‪.‬‬

‫إن أو ارﻛ ــﻝ ﺗﻘ ــدم ﺑ ــدﻳﻼً آﺧ ــر ﻟﻼﺗـ ـﺻﺎﻝ ﻳ ــﺳﻣﺢ ﻟﻣﺟﻣوﻋ ــﺎت ﺿ ــﺧﻣﺔ ﻣ ــن اﻟﻣ ــﺳﺗﺧدﻣﻳن‬
‫ﺑﺎﻟﻌﻣﻝ ﻓﻲ ﻧﻔس اﻟوﻗت ﺑﻛﻔـﺎءة وﻫـو ‪ Shared Server‬وﻫـو ﻣﻳﻛـﺎﻧﻳزم ﻟﻼﺗـﺻﺎﻝ ﻳﻣﻛـن‬
‫ﺗﺷﺑﻳﻪ ﺑﺟدوﻝ ﻛﺑﻳر ﻣن اﻟﻣﻳﺎﻩ اﻟﺗﻲ ﻳﺗم ﺗوزﻳﻌﻬﺎ ﻋﻠﻰ ﻋدد ﻛﺑﻳر ﻣن اﻷﻓـراد ﻓﻳﻛـون ﻟﻛـﻝ‬
‫واﺣد ﻣﻧﻬﺎ ﺣﺻﺗﻪ وﻫذا اﻷﺳـﻠوب ﻳﺗـﻳﺢ ﻟزﻳـﺎدة ﻋـدد اﻟﻣـﺳﺗﺧدﻣﻳن ﻟﻘﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت ﺗﻘرﻳﺑـﺎً‬
‫ﺑــﻼ ﺣــدود ﻓﺑــدﻻً ﻣــن ﺗﺧــﺻﻳص ﻋﻣﻠﻳــﺔ ﻟﻛــﻝ ﻣــﺳﺗﺧدم وﻟﻧﻔــرض أﻧﻬــم ‪10‬آﻻف ﻣــﺳﺗﺧدم‬
‫ﻳﻣﻛن ﺑذﻟك اﻟطرﻳﻘﺔ ﻓـﺗﺢ ‪100‬ﻋﻣﻠﻳـﺔ ﻣـن أو ارﻛـﻝ ﺗظـﻝ ﻣـﺳؤوﻟﺔ ﻋﻠـﻰ ﺧدﻣـﺔ ذﻟـك اﻟﻌـدد‬
‫اﻟﻛﺑﻳر ﻣن اﻟﻣﺳﺗﺧدﻣﻳن‪.‬‬

‫وطﺑﻘـ ــﺎ ﻟﻬـ ــذا اﻟﺑـ ــدﻳﻝ ﺗﻘـ ــوم أو ارﻛـ ــﻝ ﺑﻔـ ــﺗﺢ ﻣﺟﻣوﻋـ ــﺔ ﻣـ ــن اﻟﻌﻣﻠﻳـ ــﺎت ﺗـ ــﺳﻣﻰ ﻣـ ــﺳﺗﻘﺑﻼت‬
‫‪ dispatchers‬واﻟﺗــﻲ ﺳــﺗﻘوم ﺑوﺿــﻊ طﻠﺑــﺎت اﻟﻣــﺳﺗﺧدﻣﻳن ﻋﻠــﻰ ﻫﻳﺋــﺔ طــﺎﺑور ﺟــﺎﻫز‬
‫ﻟﻠﺗﻧﻔﻳــذ ﻓــﻲ ﻣﻧطﻘــﺔ ﻟﻠــذاﻛرة اﻟﻣؤﻗﺗــﺔ اﻟﺗــﻲ ﺗﻌﻳﻧﻬــﺎ أو ارﻛــﻝ وﺗــﺳﻣﻰ ﻣﻧطﻘــﺔ اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ‬
‫‪ (SGA)System Global Area‬وﻳـﺗم اﻻﻧﺗﻘـﺎء ﻣـن اﻟﻌﻣﻠﻳـﺎت اﻟﻐﻳـر ﺷـﺎﻏرة ﻟﺗﻧﻔﻳـذ‬

‫‪8‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ذﻟــك اﻟطــﺎﺑور‪ Quee‬ﻓﻠــو ﻛﺎﻧــت اﻟﻌﻣﻠﻳــﺔ اﻷوﻟــﻰ ﻏﻳــر ﻣــﺷﻐوﻟﺔ ﺑﺗﻧﻔﻳــذ طﻠــب آﺧــر ﻓﺈﻧﻬــﺎ‬
‫ﺳﺗﺗوﻟﻰ اﻻﻧﺗﻘﺎء ﻣن اﻟطﺎﺑور ﻟﺗﻧﻔﻳذﻩ وﻫﻛذا ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪.‬‬

‫ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺳﺎﺑق اﻟﺗﺎﻟﻲ ‪:‬‬

‫‪ ‬أن اﻟﻣ ــﺳﺗﺧدم ﺳ ــوف ﻳﻘ ــوم ﺑﺎﻻﺗ ــﺻﺎﻝ ﺑﺎﻟﻣ ــﺳﺗﻘﺑﻝ ‪ dispatcher‬وﻋﻧ ــدﻫﺎ ﻳﻘ ــوم‬
‫اﻟﻣـ ــﺳﺗﻘﺑﻝ ﺑوﺿـ ــﻊ أﻣـ ــر اﻟﻣـ ــﺳﺗﺧدم ﻓـ ــﻲ طـ ــﺎﺑور اﻻﻧﺗظـ ــﺎر ﻓـ ــﻲ ﻣﻧطﻘـ ــﺔ اﻟـ ــذاﻛرة‬
‫‪.SGA‬‬

‫‪ ‬أوﻝ ﻋﻣﻠﻳﺔ ﺗﻛون ﺟﺎﻫزة ﺳوف ﺗﻘوم ﺑﺄﺧذ اﻟطﻠب ﻣن اﻟطﺎﺑور ﻟﺗﻧﻔﻳذﻩ‪.‬‬

‫‪ ‬طﻠــب اﻟﻣــﺳﺗﺧدم ﺗــم ﺗﻧﻔﻳــذﻩ وﺗــم وﺿــﻊ ﻧﺗــﺎﺋﺞ اﻟﺗﻧﻔﻳــذ ﻓــﻲ طــﺎﺑور اﻻﻧﺗظــﺎر ﻣ ـرة‬
‫أﺧــرى ﺗﻣﻬﻳــداً ﻟﻌرﺿــﻪ ﻋﻠــﻰ اﻟﻣــﺳﺗﺧدم ﻳﻘــوم اﻟﻣــﺳﺗﻘﺑﻝ ﺑﺄﺧــذ ﻧﺗــﺎﺋﺞ اﻟطﻠــب ﻣــن‬
‫اﻟطﺎﺑور ﺛم ﻳﻘدﻣﻪ إﻟﻰ اﻟﻣﺳﺗﺧدم ﺛم ﻳﻐﻠق ﻗﻧﺎة اﻻﺗﺻﺎﻝ‪.‬‬

‫وﻟﻛن ﻛﻳف ﻳﻘوم اﻟﻣﺳﺗﺧدم ‪ Client‬ﺑﺎﻻﺗﺻﺎﻝ ﺑﺄوراﻛﻝ ‪:‬‬

‫‪9‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺗﻧﺎوﻟﻧــﺎ ﻓــﻲ اﻟﻔﻘ ـرة اﻟــﺳﺎﺑﻘﺔ ﻣــﺎ اﻟــذي ﻳﺣــدث ﻋﻧــدﻣﺎ ﻳﻘــوم اﻟﻣــﺳﺗﺧدم ﺑﺎﻻﺗــﺻﺎﻝ ﺑﺄو ارﻛــﻝ‬
‫ٕواﻋطــﺎء طﻠﺑﺎﺗــﻪ ﻟﻳــﺗم ﺗﻧﻔﻳــذﻫﺎ وﻟﻛــن ﻛﻳــف ﻳﻘــوم ﻓﻌﻠﻳــﺎ ﺑــﺈﺟراء ذﻟــك اﻻﺗــﺻﺎﻝ أو ﺑﻣﻌﻧــﻰ‬
‫آﺧر ﻣﺎ اﻟذي ﻳﻣﻛﻧﻪ ﻣن إﺟراء ﻣﺛﻝ ذﻟك اﻻﺗﺻﺎﻝ ؟‬

‫ﻳﻣﻛــن ﺗوﺿــﻳﺢ ذﻟــك ﻣــن اﻟــﺷﻛﻝ اﻟﺗــﺎﻟﻲ وﻫــو ﺣﺎﻟــﺔ ﺗﺧــﺻﻳص ﻋﻣﻠﻳــﺔ ﻟﻛــﻝ ﻣــﺳﺗﺧدم‬
‫‪Dedicated Server Process‬‬

‫ﻓــﻲ ﻣﻌظــم اﻟﺣــﺎﻻت ﻳــﺗم اﻻﺗــﺻﺎﻝ ﻣــن ﺧــﻼﻝ ﻋــن طرﻳــق ﺑرﺗوﻛــوﻻت اﻻﺗــﺻﺎﻝ اﻟــﺷﺑﻛﻲ‬
‫‪ TCP/IP‬ﺣﻳــث ﻳﻛــون اﻟﻣــﺳﺗﺧدم ﻋﻠــﻰ ﺟﻬــﺎز ﻳﻘــوم ﺑﺎﻻﺗــﺻﺎﻝ ﺑﺎﻟــﺳﻳرﻓر واﻟــذي ﻳﻛــون‬
‫ﻣرﻛﺑﺎً ﻋﻠﻰ ﺟﻬﺎز آﺧر ﻣن ﺧﻼﻝ ﺑرﺗوﻛوﻝ ‪ TCP/IP‬ﻳﻘوم اﻟﻣﺳﺗﺧدم ﺑﺎﺳﺗﺧدام ﺗطﺑﻳـق‬
‫ﻟﻼﺗﺻﺎﻝ ﺑﺄوراﻛﻝ‪.‬‬

‫ﻫﻧﺎ ﻳﻘـوم ﺑﻛﺗﺎﺑـﺔ اﺳـم اﻟﻣـﺳﺗﺧدم اﻟـذي ﻳرﻳـد اﻟـدﺧوﻝ إﻟﻳـﻪ ﻓـﻲ أو ارﻛـﻝ وﻛـذﻟك ﻛﻠﻣـﺔ اﻟـﺳر‬
‫ﻛﻣﺎ ﻳﻛﺗب اﺳم اﻟﺧدﻣﺔ اﻟﺷﺑﻛﻳﺔ اﻟﺗﻲ ﻳرﻳد اﻻﺗﺻﺎﻝ ﺑﻬﺎ ‪.TNS Names‬‬

‫أن ‪ TNS‬ﻫ ـ ــﻲ ﺑرﻧ ـ ــﺎﻣﺞ ﻟﻼﺗ ـ ــﺻﺎﻝ ﻣوﺟ ـ ــود ﻋﻠ ـ ــﻰ ﺟﻬ ـ ــﺎز اﻟﻣ ـ ــﺳﺗﺧدم وﻫ ـ ــو اﺧﺗ ـ ــﺻﺎر‬
‫ﻟ ـ‪ Transparent Network Substrate‬وﻳﻘـوم ﺑﺎﻟﺗﻌﺎﻣــﻝ ﻣـﻊ اﻻﺗــﺻﺎﻻت ﻋـن ﺑﻌــد‬
‫‪ Remote‬وﻛـذﻟك اﻻﺗـﺻﺎﻝ ﻣـن ﻧﻘطـﺔ ﻟﻧﻘطـﺔ ‪.Peer to peer communication‬‬

‫‪10‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ـﺎرت‬
‫إن اﺳم اﻟﺧدﻣﺔ اﻟﺷﺑﻛﻳﺔ ﻫو اﺧﺗﺻﺎر ‪ Connect String‬ﻳﺣـﻝ إﻟـﻰ ﻣﺟﻣوﻋـﺔ ﻋﺑ ا‬
‫ﺗﺧﺑــر ﻋــن ﻣﻛــﺎن اﻟــداﺗﺎﺑﻳز اﻟــذي ﻳـراد اﻻﺗــﺻﺎﻝ ﺑﻬــﺎ‪ .‬ﺑﻛﺗﺎﺑــﺔ اﺳــم اﻟﺧدﻣــﺔ اﻟــﺷﺑﻛﻳﺔ وﻫــو‬
‫وﻓﻘــﺎ ﻟﻠﻣﺛــﺎﻝ اﻟــﺳﺎﺑق ‪ ora816.us.oracle.com‬ﻳﻘــوم ﺑرﻧــﺎﻣﺞ اﻻﺗــﺻﺎﻝ ﺑﻣﺣﺎوﻟــﺔ ﺣــﻝ‬
‫اﺳــم اﻟﺧدﻣــﺔ اﻟــﺷﺑﻛﻳﺔ أو ﻣﻌرﻓــﺔ ﻣــﺎ ﻳﻘﺎﺑﻠﻬــﺎ ﻣــن ﻋﺑــﺎ ارت ﺗوﺿــﺢ ﻣﻛــﺎن وﻛﻳﻔﻳــﺔ اﻻﺗــﺻﺎﻝ‬
‫ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت وﻫﻧــﺎك اﻛﺛــر ﻣــن طرﻳﻘــﺔ ﻟﻣﻌرﻓــﺔ ﺗﻠــك اﻟﻣﻌﻠوﻣــﺎت وﻟﻧﺄﺧــذ أﺳــﻬﻠﻬﺎ وﻫــﻲ‬
‫اﻻﺳ ــﺗﻌﺎﻧﺔ ﺑﻣﻠ ــف ﻧ ــص ﻳ ــﺳﻣﻰ ‪ TNSNAMES.ORA‬وﻳﻛ ــون ﻋﻠ ــﻰ اﻟ ــﺷﻛﻝ اﻟﺗ ــﺎﻟﻲ‬
‫ﺣﻳث ﺗﺗم ﻗراءﺗﻪ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﺧدﻣﺔ اﻟﺳﺎﺑﻘﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‬

‫ﻫﻧﺎ ﻳﻘدم اﻟﻣﻠف اﻟﺳﺎﺑق ﻣﺟﻣوﻋﺔ ﻣن اﻟﻣﻌﻠوﻣﺎت اﻟﻣﻔﻳدة واﻟﺗﻲ ﺗﻌـﻳن ﻋﻠـﻰ ﺗﺣدﻳـد ﻣوﻗـﻊ‬
‫ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت اﻟﻣراد اﻻﺗﺻﺎﻝ ﺑﻬﺎ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬اﺳم اﻟﺟﻬﺎز اﻟﻣوﺟود ﺑﻪ أوراﻛﻝ ‪HostNmae‬‬

‫‪ ‬اﺳم اﻟﺑواﺑﺔ اﻟﻣﻔﺗوﺣﺔ ﻟﻼﺗﺻﺎﻝ ﺑﺄوراﻛﻝ ﻋﻠﻰ اﻟﺟﻬﺎز ‪Port‬‬

‫‪ ‬اﺳم اﻟداﺗﺎﺑﻳز ‪SID‬‬

‫اﻵن ُﻋــرف اﻟﺗطﺑﻳــق ﻓــﻲ ﺟﻬــﺎز اﻟﻣــﺳﺗﺧدم أﻳــن ﺳــوف ﻳﺗــﺻﻝ ﻓﻬــو ﻳــﺳﺗﺧدم ﺑروﺗوﻛــوﻝ‬
‫اﻻﺗــﺻﺎﻝ ‪ TCP/IP‬ﻓــﻲ ﻓــﺗﺢ ﻗﻧــﺎة اﺗــﺻﺎﻝ ﺑﻳﻧــﻪ وﺑــﻳن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت اﻟﻣوﺟــودة ﻋﻠــﻰ‬

‫‪11‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟﺟﻬ ــﺎز ‪ aria.us.oracle.com‬ﺑواﺳ ــطﺔ ﻓ ــﺗﺢ اﻟﺑواﺑ ــﺔ ‪ 1521‬اﻟﻣوﺟ ــود ﻋﻠ ــﻰ اﻟﺟﻬ ــﺎز‬
‫اﻟﻣذﻛور‪.‬‬

‫ﻓﻲ اﻟﺟﻬﺎز اﻟﻣوﺟود ﻋﻠﻳﻪ اﻟﺳﻳرﻓر ﺗوﺟد ﻋﻣﻠﻳﺔ ﺗﻌﻣﻝ ﻓﻲ اﻟﺧﻠﻔﻳـﺔ طـواﻝ اﻟوﻗـت ﻣﻬﻣﺗﻬـﺎ‬
‫اﺳـﺗﻘﺑﺎﻝ طﻠﺑـﺎت اﻻﺗـﺻﺎﻝ ﻣـن اﻟﻣـﺳﺗﺧدﻣﻳن وﺗـﺳﻣﻰ ‪ .TNS Listener‬ﻳﻣﻛـن ﺗـﺷﺑﻳﻪ‬
‫ﺗﻠــك اﻟﻌﻣﻠﻳــﺔ ﺑــﺄذن ﻛﺑﻳـرة ﻣﻬﻣﺗﻬــﺎ أن ﺗﺗﻧــﺻت ﻋﻠــﻰ اﻟــﺷﺑﻛﺔ ﻟﺗــرى ﻫــﻝ ﻫﻧــﺎك أﺣــد ﻳطﻠــب‬
‫اﻻﺗﺻﺎﻝ ﺑﺎﻟﺳﻳرﻓر أم ﻻ‪ .‬ﻓﺈذا ﻛﺎن ﻫﻧﺎك طﻠب ﻳﺑﺣث ﻓﻲ ﻣﺷروﻋﻳﺗﻪ أوﻻً ﻓﺈذا ﻛـﺎن ﻣـن‬
‫اﻟﺟﻬﺎت اﻟﻣﺳﻣوح ﻟﻬﺎ ﺑﺎﻟدﺧوﻝ ﻳﻘوم ﺑﺎﻣرار اﻻﺗﺻﺎﻝ‪.‬‬

‫ﻳﻘــوم اﻟﺑرﻧــﺎﻣﺞ اﻟــﺳﺎﺑق وﻫــو ‪ Listner‬ﻋﻠــﻰ ﺣــﺳب إﻋــدادﻩ ﺑﺎﻟــﺳﻣﺎح ﺑﻔــﺗﺢ ﻗﻧــﺎة اﺗــﺻﺎﻝ‬
‫ﺑــﻳن اﻟﻣــﺳﺗﺧدم وﺑــﻳن اﻟــﺳﻳرﻓر وطﺑﻘــﺎً ﻹﻋــدادات اﻟــﺳﻳرﻓر ﻓﻬــو ﻳﻘــوم ﺑﻔــﺗﺢ ﻋﻣﻠﻳــﺔ ﻣــن‬
‫ﻋﻣﻠﻳـﺎت اﻟـﺳﻳرﻓر ﻟﺧدﻣـﺔ طﻠـب اﻟﻌﻣﻳـﻝ ‪ Didicated Server Process‬أو ﺑﺗوﺻـﻳﻠﻪ‬
‫ﺑﺎﻟﻣـﺳﺗﻘﺑﻝ ‪ Dispatcher‬ﻓـﻲ ﺣﺎﻟــﺔ ‪ .Shared Server‬وﻓــﻰ ﺣﺎﻟـﺔ ﻧﺟﺎﺣــﻪ ﻓـﻲ ﺗﻠــك‬
‫اﻟﻌﻣﻠﻳﺔ ﺗﻛون ﻣﻬﻣﺔ ‪ Listener‬ﻗد اﻧﺗﻬت ﺑﻔﺗﺢ ﺗﻠك اﻟﻘﻧـﺎة وﻳﺑﻘـﻰ ﻓـﻲ ﺣﺎﻟـﺔ ﺗـﺳﻣﻊ آﺧـر‬
‫ﺑﻳﻧﻣــﺎ ﻳﻛــون اﻟﻣــﺳﺗﺧدم ﻗــد اﺗــﺻﻝ ﻣﺑﺎﺷ ـرة ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت وﻳﻛــون ﺑﺧدﻣﺗــﻪ ﻋﻣﻠﻳــﺔ ﻣــن‬
‫ﻋﻣﻠﻳﺎت اﻟﺳﻳرﻓر ﻛﻣﺎ أوﺿﺣﻧﺎ ﻣن ﻗﺑﻝ‪.‬‬

‫‪12‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫دور اﻟﻠﻳﺳﻧر ‪ Listner‬ﻓﻲ ﺣﺎﻟﺔ ‪Shared Server‬‬

‫ﻳﻌﻠم اﻟﻠﻳﺳﻧر ﺑﺎﻟـﺿﺑط اﻟﻣـﺳﺗﻘﺑﻼت اﻟﺗـﻲ ﺗﻌﻣـﻝ ﻋﻠـﻰ اﻟـداﺗﺎﺑﻳز وﻋﻧـدﻣﺎ ﻳطﻠـب اﻟﻣـﺳﺗﺧدم‬
‫اﻻﺗﺻﺎﻝ ﻳﻘوم اﻟﻠﻳﺳﻧر ﺑﺎﺧﺗﻳﺎر ﻣﺳﺗﻘﺑﻝ ﻣن ﺗﻠك اﻟﻣﺳﺗﻘﺑﻼت اﻟﺗـﻲ ﺗﻌﻣـﻝ ﺛـم ﻳﻌـود ﻟﻳﻘـدم‬
‫ﻟﻠﻣــﺳﺗﺧدم ﻣﻌﻠوﻣــﺎت ﻋــن ﻛﻳﻔﻳــﺔ اﻻﺗــﺻﺎﻝ ﺑﺎﻟﻣــﺳﺗﻘﺑﻝ وﻣﻧﻬــﺎ رﻗــم اﻟﺑواﺑــﺔ اﻟﻣﻔﺗوﺣــﺔ ٕواﻟــﻰ‬
‫ﻫﻧﺎ ﻳﻧﺗﻬﻲ دور اﻟﻠﻳﺳﻧر ﻓﻳﻧﻘطﻊ اﻻﺗﺻﺎﻝ ﺑﻳﻧﻪ وﺑﻳن اﻟﻣﺳﺗﺧدم ﻟﻳﺑدأ اﻟﻣﺳﺗﺧدم اﻻﺗﺻﺎﻝ‬
‫ﻣﺑﺎﺷرة ﺑﺎﻟﻣﺳﺗﻘﺑﻝ ﻛﻣﺎ ﻳﺗﺑﻳن ذﻟك ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪.‬‬

‫‪13‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫واﻟــﺷﻛﻝ اﻟﺗــﺎﻟﻲ ﻫــو ﺗوﺿــﻳﺢ ﻟﻣــﺎ ﺗــم ذﻛـرﻩ ﻗﺑــﻝ اﻵن وﻫــو ﻳوﺿــﺢ اﻟﺗﻔﺎﻋــﻝ اﻟــذي ﻳــﺗم ﺑــﻳن‬
‫اﻟﻣﺳﺗﺧدم وﺑﻳن ﻋﻣﻠﻳﺎت اﻟﺳﻳرﻓر‬

‫‪14‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺍﳍﻴﻜﻞ ﺍﳌﺎﺩﻱ ﻟﻠﻤﻠﻔﺎﺕ ﰲ ﺃﻭﺭﺍﻛﻞ ‪Files Structure‬‬

‫ﺑﺑــﺳﺎطﺔ ﻳﻣﻛــن اﻟﻧظــر إﻟــﻰ أو ارﻛــﻝ ﺳــﻳرﻓر ﻋﻠــﻰ أﻧــﻪ ﻋﺑــﺎرة ﻋــن ﻣﺛــﺎﻝ ﻣرﺑــوط ﺑﻣﻠﻔــﺎت‬
‫ﻣﺎدﻳـﺔ ‪ Physical Files‬ﺗـﺷﻛﻝ اﻟﺟـزء اﻟﻣـﺎدي ﻣـن ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت ﻓﺎﻟﻣﺛـﺎﻝ ﻛﻣـﺎ ذﻛرﻧـﺎ‬
‫ﻣن ﻗﺑﻝ ﻫو ﻣﻌﻣﺎرﻳﺔ ﻣﻌﻳﻧـﺔ ﻟﻠـذاﻛرة )ﺗﻘـﺳﻳم واﺳـﺗﺧدام ﻣﻌـﻳن ﺗـﺳﺗﺧدﻣﻪ أو ارﻛـﻝ ﻓـﻲ إدارة‬
‫اﻟــذاﻛرة( ﻳــﺗم ﻓﻳــﻪ ﻋﻣﻠﻳــﺎت ﺗﻬــدف إﻟــﻰ ﺿــﻣﺎن اﻟوﺻــوﻝ ٕوادارة اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ اﻟﻣﻛوﻧــﺔ‬
‫ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪ .‬وﻫﻧﺎ ﺳـﻧﺗﻛﻠم ﻋـن ﻣﺟﻣوﻋـﺔ اﻟﻣﻠﻔـﺎت اﻟﺗـﻲ ﺗـﺷﻛﻝ اﻟﺟـزء اﻟﻣـﺎدي ﻟﻘﺎﻋـدة‬
‫اﻟﺑﻳﺎﻧﺎت وﺗـﺗﺣﻛم ﻓـﻲ ﻓـﺗﺢ اﻟﻣﺛـﺎﻝ ﻧﻔـﺳﻪ‪ .‬ﺣﻳـث ﺗـﺳﺗﺧدم ﻣﻠﻔـﺎت اﻟـداﺗﺎ ‪ Data Files‬ﻓـﻲ‬
‫اﻟﺗﺧزﻳن اﻟﻣﺎدي ﻟﻠﺟداوﻝ واﻟﻔﻬﺎرس ﺑﻣﺎ ﺗﺣﺗوﻳـﻪ ﻣـن ﺳـﺟﻼت ﻣﻧظﻣـﺔ ﻛﻣـﺎ ﻳﻣﻛﻧﻬـﺎ أﻳـﺿﺎً‬
‫ﺗﺧ ـ ـزﻳن اﻟﻣﻧـ ــﺎظﻳر‪ Views‬واﻹﺟ ـ ـراءات ‪ ..procedures‬اﻟـ ــﺦ وﻳﺗـ ــوﻟﻰ ﻛﺎﺗـ ــب اﻟﺑﻠـ ــوك‬
‫‪ .DBWR‬وﻫو ﻋﻣﻠﻳﺔ ﺗﺗم ﻓﻲ اﻟﺧﻠﻔﻳﺔ ﻛﻣﺎ ﺳﻧرى ﺑﻌد ﻧﻘﻝ اﻟﻣﻌﺎﻣﻼت اﻟﺗﻲ ﺗم ﺗﺄﻛﻳـدﻫﺎ‬
‫ﻣن ﻣﻛﺎﻧﻬﺎ اﻟﻣؤﻗت ﺑﺎﻟذاﻛرة إﻟﻰ اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫ﺗﺣوى ﻣﻠﻔـﺎت اﻟﺗ ارﺟـﻊ واﻹﻋـﺎدة ﻋﻠـﻰ ﺳـﺟﻼت ﻣـﺳﺟﻝ ﻋﻠﻳﻬـﺎ ﻣﻌﻠوﻣـﺎت ﻛﺎﻓﻳـﺔ ﻋـن أﻳـﺔ‬
‫ﻣﻌﺎﻣﻠـﺔ ‪ Transaction‬ﺗـﺗم ﻋﻠــﻰ اﻟـداﺗﺎﺑﻳز واﻟﻣﻧطــق ﻓـﻲ ذﻟــك ﺑـﺳﻳط وﻫــو ﺗـﺳﺟﻳﻝ ﺗﻠــك‬
‫اﻟﻣﻌ ــﺎﻣﻼت ﺑ ــﺻورة ﻣ ــﺳﺗﻘﻠﺔ ﻋ ــن اﻟﻣﻠﻔ ــﺎت اﻷﺳﺎﺳ ــﻳﺔ ﺑﺣﻳ ــث ﻟ ــو ﺣ ــدث ﺗﻠ ــف ﻓ ــﻲ ﺗﻠ ــك‬
‫اﻟﻣﻠﻔﺎت ﻳﻣﻛن اﺳﺗرﺟﺎع اﻟﺗﻐﻳرات اﻟﺗﻲ ﺣدﺛت ﻣن ﻣﻠﻔﺎت اﻟ ـ ‪ Redo Log‬ﻳﺗوﻟﻰ ﻛﺎﺗـب‬
‫اﻟﻠــوغ ‪ LGWR‬وﻫــو ﻋﻣﻠﻳــﺔ ﺗــﺗم ﻓــﻲ اﻟﺧﻠﻔﻳــﺔ ﻛﺗﺎﺑــﺔ اﻟﺗﻐﻳ ـرات اﻟﺗــﻲ ﺣــدﺛت ﺣﻳــث ﻳﻘــوم‬
‫ﺑﻧﻘــﻝ اﻟــﺳﺟﻼت اﻟﻣﻌﺑ ـرة ﻋــن ﺗﻠــك اﻟﺗﻐﻳــرات ﻣــن اﻟــذاﻛرة اﻟﻛــﺎش واﻟﺗــﻲ ﺗﻌﻳﻧﻬــﺎ أو ارﻛــﻝ‬
‫ﻟﻣﻌﻠوﻣــﺎت اﻹﻋــﺎدة )اﻟــوج ‪ (Redo‬وﺗــﺳﻣﻰ ‪ Redo Log Buffer‬إﻟــﻰ ﻣﻠﻔــﺎت اﻟﻠــوغ‬
‫‪ Redo Log Files‬ﺑـﺻورة ﻣـﺳﺗﻣرة وﻳوﺟـد ﻋـﺎدةً ﻣﺟﻣـوﻋﺗﻳن ﻣـن ﺗﻠـك اﻟﻣﻠﻔـﺎت وﻳﺑـدأ‬
‫اﻟﻛﺗﺎﺑﺔ ﻓﻲ أﺣد اﻟﻣﻠﻔﺎت ﻓﺈذا اﻣﺗﻠﺊ ﺗﻣﺎﻣﺎً ﻳﺗم اﻟﺗﺣوﻳﻝ ‪ Switching‬إﻟﻰ اﻟﻣﻠـف اﻵﺧـر‬
‫وﻫﻛـذا ﻓـﺈذا اﻣﺗﻠـﺊ اﻟﻣﻠــف اﻵﺧـر ﻳـﺗم اﻟﺗﺑـدﻳﻝ ٕواﻋــﺎدة اﻟﻛﺗﺎﺑـﺔ ﻋﻠـﻰ اﻟﻣﻠـف اﻷوﻝ ﺑطرﻳﻘــﺔ‬
‫داﺋرﻳﺔ واﻟﺳؤاﻝ ﻫﻧﺎ ﻣﺎذا ﻟو ﺣدث ﺗﻠف ﺑﺗﻠك اﻟﻣﻠﻔﺎت؟ أوراﻛﻝ ﺗﺗﻳﺢ وﺳـﻳﻠﺔ ﺣﻣﺎﻳـﺔ أﻳـﺿﺎً‬
‫ﻋــن طرﻳــق أرﺷــﻔﺔ ﺗﻠــك اﻟﻣﻠﻔــﺎت ﻗﺑــﻝ إﻋــﺎدة اﻟﻛﺗﺎﺑــﺔ ﻋﻠﻳﻬــﺎ ﺣﻳــث ﺗﻘــوم ﻋﻣﻠﻳــﺔ ‪ARCH‬‬

‫‪15‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺑﻌﻣــﻝ ﻧــﺳﺦ اﺣﺗﻳﺎطﻳــﺔ ﻟﻣﻠﻔــﺎت اﻟرﻳــدو ﻟــوغ وﻻ ﺗــﺳﻣﺢ ﺑﺈﻋــﺎدة اﻟﻛﺗﺎﺑــﺔ ﻋﻠــﻰ أﻳــﺔ ﻣـن ﺗﻠــك‬
‫اﻟﻣﻠﻔﺎت إﻻ ﺑﻌد إﺗﻣﺎم أرﺷﻔﺔ اﻟﻣﻠف‪.‬‬

‫ﺗﻌــﺎدﻝ ﻣﻠﻔــﺎت اﻟﺑــﺎرﻣﺗر ﻣﻠﻔــﺎت اﻷواﻣــر ﻓــﻲ ﻧظــﺎم اﻟــدوس وﻫــﻰ ﻣﻠﻔــﺎت ﺗــﺳﻣﺢ‬
‫ﺑﺈﻋطــﺎء ﻗــﻳم ﺗﺣــدد اﻟطرﻳﻘــﺔ اﻟﺗــﻲ ﺳــﻳﻌﻣﻝ ﺑﻬــﺎ ﻣﺛــﺎﻝ اﻷورﻛــﻝ ﺑﻳﻧﻣــﺎ ﻳﻠــزم ﻣﻠــف اﻟــﺗﺣﻛم‬
‫‪ Control File‬ﻟﻔﺗﺢ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت واﻟﺗﻌﺎﻣـﻝ ﻣﻌﻬـﺎ‪ .‬وﺗﻘـوم أو ارﻛـﻝ ﺑﺗـﺳﺟﻳﻝ اﻷﺧطـﺎء‬
‫اﻟﺗﻲ ﺗﺣدث أﺛﻧﺎء اﻟﺗﺷﻐﻳﻝ وﻛذﻟك ﻣﻌﻠوﻣﺎت اﻟﺗﺷﻐﻳﻝ ﺑﺻورة ﺗﻔﺻﻳﻠﻳﺔ ﻓﻲ ﻣﻠﻔﺎت ‪Log‬‬
‫‪ & Alert . Files‬واﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ ﻳوﺿﺢ اﻟﻬﻳﻛﻝ اﻟﻣﺎدي ﻷوراﻛﻝ وﻋﻼﻗﺗﻪ ﺑﺎﻟﻌﻣﻠﻳﺎت‪.‬‬

‫واﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ ﻳوﺿﺢ أﻧواع اﻟﻣﻠﻔﺎت اﻟﻣﺧﺗﻠﻔﺔ اﻟﺗﻲ ﺗﺷﻛﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪:‬‬

‫ﺣﻳث ﻳﻣﻛن ﺗﺻور ﻫﻳﻛﻝ اﻟﻣﻠﻔﺎت اﻟﻣﺎدي ﻷوراﻛﻝ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ‪:‬‬

‫‪16‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ھيكل الملفات ‪Physical‬‬


‫‪Structure‬‬

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

‫ملفات الداتا ‪Files Data‬‬ ‫ملف البارمتر ‪Parameter File‬‬

‫ملف التحكم ‪Control File‬‬ ‫ملف كلمة السر ‪Password file‬‬

‫ملف اللوغ ‪Redo Log Files‬‬ ‫‪Oracle Net‬‬

‫‪ ‬ﻣﻠﻔﺎت اﻟﺑﺎرﻣﺗر ‪Parameter files‬‬

‫ﻳﺗﺣﻛم ﻣﻠف اﻟﺑﺎرﻣﺗر ﻓﻲ ﻓﺗﺢ اﻟﻣﺛﺎﻝ ﺣﻳث ﻳﻌطﻰ اﻟﺗﻌرﻳﻔـﺎت اﻟﺧﺎﺻـﺔ ﺑ ـ ‪SGA‬‬
‫وﺗﻌﻳﻳن ﻣﺳﺎﺣﺗﻬﺎ ﻛﻣﺎ ﻳﺗﺿﻣن اﺳم ﻣﻠف اﻟﺗﺣﻛم اﻟﺧﺎص ﺑﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت وأﻳﺿﺎً‬
‫ﻓﻲ وﺿـﻊ ﺗﻌرﻳﻔـﺎت اﻟﻌﻣﻠﻳـﺎت اﻟﺧﺎﺻـﺔ ﺑﺄو ارﻛـﻝ ﻓـﻲ اﻟﺧﻠﻔﻳـﺔ‪ .‬وﻳوﺟـد ﻧـوﻋﻳن ﻣـن‬
‫اﻟﻣﻠﻔــﺎت اﻷوﻝ ﻳــﺳﻣﻰ ﻣﻠــف اﻟﺑــﺎرﻣﺗر ‪ PFILE‬وﻣﻠــف ‪Server ) SPFILE‬‬
‫‪.(Paramater file‬‬

‫ﻳﻣﻛن ﺗﺣدﻳد اﻛﺛر ﻣن ‪ 250‬ﻗﻳﻣﺔ ﻓﻲ ﻛـﻼً ﻣـن اﻟﻣﻠﻔـﻳن وﻓـﻲ أو ارﻛـﻝ ‪ g10‬ﺗﻘـﺳم‬
‫اﻟﻘـﻳم إﻟـﻰ ﻧــوﻋﻳن أوﻟﻬﻣـﺎ أﺳﺎﺳــﻲ وﻳﺣﺗـوى ﻋﻠــﻰ ‪ 30‬ﻗﻳﻣـﺔ ﻳﻧﺑﻐــﻲ ﺗﺣدﻳـدﻫﺎ وﺑﻘﻳــﺔ‬
‫اﻟﻘﻳم ﻟﻼﺧﺗﻳﺎرات اﻟﻣﺗﻘدﻣﺔ‪.‬‬

‫‪ ‬ﻣﻠف اﻟﺗﺣﻛم ‪Control File‬‬

‫اﻟﻣﻠف اﻟرﺋﻳﺳﻲ ﻟﻠﺗﺣﻛم ﻓﻲ ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺣﻳث ﻳﺣدد ذﻟـك اﻟﻣﻠـف ﻣواﺿـﻊ‬
‫اﻟﻣﻠﻔ ــﺎت اﻟﻣﺎدﻳ ــﺔ ﻟﻘﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت واﺳ ــم ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت وﻟﻐ ــﺔ ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت‬
‫وﺣﺟــم اﻟﺑﻠــوك اﻟﻣــﺳﺗﺧدم ﻓــﻲ ﺗﺧـزﻳن اﻟﻣﻠﻔــﺎت ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ ﻣﻌﻠوﻣــﺎت ﻻ ﻏﻧــﻰ‬
‫ﻋﻧﻬ ــﺎ ﻟﻌﻣﻠﻳ ــﺎت اﻹﺻ ــﻼح ٕواﻋ ــﺎدة اﺳـــﺗرﺟﺎع اﻟﺑﻳﺎﻧ ــﺎت ﻓ ــﻲ ﺣﺎﻟ ــﺔ ﻓ ــﺷﻝ ﻗﺎﻋـــدة‬
‫اﻟﺑﻳﺎﻧﺎت‪ .‬وﺗﻌﺗﺑر ﻣﻠﻔﺎت اﻟﺗﺣﻛم ﻣن اﻷﺟزاء اﻟﺗﻲ ﻻ ﻳﻣﻛن اﻻﺳﺗﻐﻧﺎء ﻓـﻲ ﻗﺎﻋـدة‬
‫اﻟﺑﻳﺎﻧﺎت ﺣﻳث ﺗﻘوم ﺑﺗﺧزﻳن ﻣﻌﻠوﻣﺎت ﺣﻳوﻳﺔ ﻋن اﻟداﺗﺎﺑﻳز وﻣﻧﻬﺎ ‪:‬‬

‫‪17‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬اﺳم ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‬

‫‪ ‬أﺳﻣﺎء وﻣواﻗﻊ وﺣﺟم ﻣﻠﻔﺎت اﻟداﺗﺎ واﻟﻠوغ‬

‫‪ ‬ﻣﻌﻠوﻣﺎت ﻻﺳﺗﻌﺎدة ٕواﺻﻼح ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺣﺎﻟﺔ وﻗوع أﺧطﺎء‬

‫ﻣﻠﻔ ــﺎت اﻟ ــﺗﺣﻛم ﻳ ــﺗم إﻧ ــﺷﺎءﻫﺎ أﺛﻧ ــﺎء ﻋﻣ ــﻝ ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت وﻓ ــﻰ اﻟﻣﻛ ــﺎن اﻟ ــذي ﻳﺣ ــددﻩ‬
‫اﻟﺑﺎرﻣﺗر ‪ Control Files‬ﻓﻲ ﻣﻠف اﻟﺑﺎرﻣﺗر‪ .‬وﻣن أﺟﻝ أﻫﻣﻳﺔ اﻟﻣﻠف ﻳراﻋﻰ وﺟود ﻣﺎ‬
‫ﻳﺳﻣﻰ ازدواج ﻣﻠف اﻟﺗﺣﻛم ‪ Multiplex‬ﺣﻳث ﻳﺗم إﻧـﺷﺎء ﻧـﺳﺦ ﻣـن ﻣﻠﻔـﺎت اﻟـﺗﺣﻛم ﻓـﻲ‬
‫أﻣﺎﻛن ﻣﺧﺗﻠﻔﺔ وﻳﺗم ﺗﺣدﻳﺛﻬﺎ أﺗوﻣﺎﺗﻳﻛﻳﺎ ﺑﺂﺧر اﻟﺗﻌدﻳﻼت واﻟذي ﺗﻘوم ﺑﻪ ﺧﺻﻳﺻﺎً ﻋﻣﻠﻳـﺔ‬
‫ﺑﺄو ارﻛــﻝ ﺗــﺗم ﻓــﻲ اﻟﺧﻠﻘﻳــﺔ ﺗــﺳﻣﻰ ‪ .CHKP‬ﻳﻣﻛــن ﻣــن ﺧــﻼﻝ ‪ View‬اﻻﺳــﺗﻌﻼم ﻋــن‬
‫ﻣﻠﻔﺎت اﻟﺗﺣﻛم وﻫﻲ‬
‫;‪SQL> select name from v$controlfile‬‬

‫‪ ‬ﻣﻠﻔﺎت اﻟداﺗﺎ اﻟﻣﻛوﻧﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ‪Data Files‬‬

‫ﺗﻌﺗﺑــر ﻣﻠﻔــﺎت اﻟــداﺗﺎ ﻫــﻲ أﻫــم ﻣﻛــون ﻣــن ﻣﻛوﻧــﺎت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺣﻳــث ﺗﺣــوى‬
‫ﺟﻣﻳــﻊ اﻟﺟــداوﻝ واﻟﻔﻬــﺎرس واﻟﺗــﻲ ﺗﺧــزن ﺑﻬــﺎ اﻟﺑﻳﺎﻧــﺎت ﻋﻠــﻰ ﻫﻳﺋــﺔ ﺻــﻔوف‪ .‬ﺗﻠــك‬
‫اﻟﻣﻠﻔــﺎت ﻻ ﻳﻣﻛــن ﻗراءﺗﻬــﺎ ﻣﺑﺎﺷ ـرة ﺑواﺳــطﺔ أﻳــﺔ وﺳــﻳﻠﺔ ﻣــن ﻣﺣــررات اﻟﻧــﺻوص‬
‫اﻟﻌﺎدﻳﺔ ٕواﻧﻣﺎ ﻳﺗم اﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ ﺑواﺳطﺔ أوراﻛﻝ ﻋـن طرﻳـق ﺗﻧﻔﻳـذ ﺟﻣـﻝ اﺳـﺗﻌﻼم‬
‫ﻣﻌﻳﻧﺔ‪ .‬إن ﺗﻠك اﻟﻣﻌﻠوﻣﺔ ﻫﺎﻣﺔ ﻟﻠﻐﺎﻳﺔ ﻓﺈﻧﻧﺎ ﻻ ﻧﻣﻠك اﻟﺳﻳطرة ﻋﻠﻰ ﻛﻳﻔﻳـﺔ ﺗﺧـزﻳن‬
‫اﻟــداﺗﺎ ﻓــﻲ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ ﻓﻬــذا دور أو ارﻛــﻝ وﻟﻛﻧﻧــﺎ ﻓﻘــط ﻧــﺳﺗطﻳﻊ اﻟﺗﻌﺎﻣــﻝ ﻣــﻊ‬
‫اﻟﺑﻳﺎﻧـ ــﺎت ﻣـ ــن ﺧـ ــﻼﻝ ﺗﻧﻔﻳـ ــذ ﺟﻣـ ــﻝ ‪ SQL‬ﻋﻠـ ــﻰ ﻫﻳﻛـ ــﻝ اﻓﺗ ارﺿـ ــﻲ ﻣﻛـ ــون ﻣـ ــن‬
‫اﻟﻣ ـ ــﺳﺎﺣﺎت اﻟﺟدوﻟﻳ ـ ــﺔ ‪ TableSpaces‬واﻟﺗ ـ ــﻲ ﺗﻧ ـ ــﺷﺄ ﻓﻳﻬ ـ ــﺎ ﺟـ ـ ـداوﻝ ‪Tables‬‬
‫وﻓﻬﺎرس ‪ Indexes‬ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬

‫‪18‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺳﺎﺑق ﻣﺎ ﻳﻠﻲ‪:‬‬

‫‪ ‬اﻟﻬﻳﻛﻝ اﻟﻣﺎدي ﻟﻠﻣﻠﻔﺎت ﻣﻛون ﻣن ﻋدة ﻣﻠﻔﺎت ‪ Data Files‬وﻫﻰ ﻣﻠﻔـﺎت ﺗوﺟـد‬
‫ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ ﺗﺷﻛﻝ اﻟوﻋﺎء اﻟﻣﺎدي ﻟﻠﺑﻳﺎﻧﺎت‪.‬‬

‫‪ ‬ﻻ ﻳﻣﻛــن إدارة ﺗﻠــك اﻟﻣﻠﻔــﺎت ﺑــﺻورة ﻣﺑﺎﺷ ـرة ﺑــﻝ ﺗــﺗم ﻣــن ﺧــﻼﻝ أو ارﻛــﻝ ﺣﻳــث‬
‫ﺗﻧــﺷﺊ ﻫﻳﻛ ــﻝ اﻓﺗ ارﺿ ــﻲ ﻟﻠﻣﻠﻔــﺎت ﻣﻛوﻧ ــﺎً ﺑ ــﺻﻔﺔ أﺳﺎﺳــﻳﺔ ﻣ ــن ﻣ ــﺳﺎﺣﺎت ﺟدوﻟﻳ ــﺔ‬
‫‪.TableSpaces‬‬

‫‪ ‬اﻟﻣﺳﺎﺣﺎت اﻟﺟدوﻟﻳﺔ ﺗﺣوى ﻋﻠﻰ اﻟﺟداوﻝ واﻟﻔﻬﺎرس واﻟﻣﻧﺎظﻳر ‪.Views‬‬

‫‪ ‬ﻣ ــن ﺧ ــﻼﻝ ﺗﻠ ــك اﻟﺟ ــداوﻝ واﻟﻣﻧ ــﺎظﻳر وﺑواﺳ ــطﺔ ﺗﻧﻔﻳ ــذ ﺟﻣ ــﻝ ‪ SQL‬ﻳ ــﺗم ﺗﻧظ ــﻳم‬
‫اﻟﺑﻳﺎﻧﺎت اﻟﻔﻌﻠﻳﺔ ٕوادارﺗﻬﺎ‪.‬‬

‫‪ ‬ﻛﻝ ﻣﺳﺎﺣﺔ ﺟدوﻟﻳﺔ ﺗﻧظم واﺣد أو اﻛﺛر ﻣن اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ ‪.DataFiles‬‬

‫‪ ‬ﻛﻝ ﻣﻠف داﺗـﺎ ‪ DataFile‬ﻳـرﺗﺑط ﺑﻣـﺳﺎﺣﺔ ﺟدوﻟﻳـﺔ واﺣـدة ﻓﻘـط ﺑﻳﻧﻣـﺎ اﻟﻣـﺳﺎﺣﺎت‬
‫اﻟﺟدوﻟﻳﺔ ﻧﻔﺳﻬﺎ ﻳﻣﻛن أن ﺗﻛون ﻣرﺗﺑطﺔ ﺑﺄﻛﺛر ﻣن ﻣﻠف داﺗﺎ‪.‬‬

‫‪ ‬ﻻﺣ ــظ أﻧﻧ ــﺎ ﻻ ﻳﻣﻛﻧ ــﺎ اﻟ ــﺳﻳطرة ﻋﻠ ــﻰ ﻣﻛ ــﺎن وﺿ ــﻊ اﻟﺟ ــداوﻝ أو اﻟﻔﻬ ــﺎرس ﻋﻠ ــﻰ‬
‫ﻣﻠﻔﺎت اﻟداﺗﺎ اﻟﻣﺎدﻳﺔ ‪.DataFiles‬‬

‫‪19‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫أﻣﺎ ﻋن ﻣﻠﻔﺎت اﻟداﺗﺎ ﻧﻔﺳﻬﺎ ﻓـﺄﻫم ﻣـﺎ ﻳﻣﻛـن أن ﻳﻘـﺎﻝ ﻋﻧﻬـﺎ ﻫـو أن ﻛـﻝ ﻣﻠـف داﺗـﺎ ﻳﺧـزن‬
‫ﺑﻪ رﻗم ﻣوﻟد ﺑواﺳطﺔ أوراﻛﻝ )‪ System Change Number (SCN‬ﻳدﻝ ﻋﻠﻰ آﺧر‬
‫ﻋﻣﻠﻳـﺔ ﺗﻐﻳﻳــر ﺣــدﺛت وﺗﻣــت ﻋﻠــﻰ ﻣــﺳﺗوى ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت وﻫــذا اﻟـرﻗم ﻟــﻪ أﻫﻣﻳﺗــﻪ اﻟﻛﺑﻳـرة‬
‫ﻓﻌ ــن طرﻳﻘ ــﻪ ﻳﻣﻛ ــن ﻷو ارﻛ ــﻝ أن ﺗﻌ ــرف أﻳ ــﺔ ﺗﻐﻳﻳـ ـرات ﻳﻧﺑﻐ ــﻲ ﺗﺄﻛﻳ ــدﻫﺎ وﺗﺧزﻳﻧﻬ ــﺎ ﻋﻠ ــﻰ‬
‫اﻟﻣﻠﻔــﺎت وﺑﺎﻟﺗــﺎﻟﻲ ﻓــﺎن ذﻟــك اﻟـرﻗم ﻻ ﻳﻣﻛــن اﻻﺳــﺗﻐﻧﺎء ﻋﻧــﻪ ﻓــﻲ ﺣﺎﻟــﺔ اﻟﻧــﺳﺦ اﻻﺣﺗﻳــﺎطﻲ‬
‫ﻟﻠﻣﻠﻔﺎت ٕواﺻﻼح واﺳﺗﻌﺎدة ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺣﺎﻟﺔ ﺣدوث أﺧطﺎء‪.‬‬

‫ﺑﻘــﻲ أن ﻧﻌــرف أن ﻣﻠﻔــﺎت اﻟــداﺗﺎ ﻳــﺗم ﺗﺣدﻳ ــدﻫﺎ وﺣﺟزﻫــﺎ ﻋﻠــﻰ ﻧظــﺎم اﻟﺗــﺷﻐﻳﻝ ﺑ ــﺎﻟﺣﺟم‬
‫اﻟﻛﻠﻰ واﻟذي ﺗم ﺗﺣدﻳـدﻩ ﻓـﻲ أﻣـر إﻧـﺷﺎءﻫﺎ ﻓﻠـو ﺣـددﻧﺎ ﻣـﺛﻼً أن ﺣﺟـم اﻟﻣـﺳﺎﺣﺔ اﻟﺟدوﻟﻳـﺔ‬
‫‪ Tablespace‬ﺳﻳﻛون ‪ M100‬ﻓﺎﻧﻪ ﺳﻳﺗم إﻧﺷﺎء وﺣﺟز ﻣﻠف داﺗﺎ ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ‬
‫ﺑﻧﻔس اﻟﻘﻳﻣﺔ ﺣﺗﻰ وﻟو ﻛﺎن اﻟﻣﻠف ﻻ ﻳوﺟد ﺑﻪ أﻳﺔ ﺑﻳﺎﻧﺎت ﺑﻌد‪.‬‬

‫‪ ‬ﻣﻠﻔﺎت اﻟرﻳدو ﻟوغ ‪Redo Log Files‬‬

‫ﺗﺧــزن ﻓﻳﻬــﺎ أﻳــﺔ ﺗﻐﻳ ـرات ﺗﺣــدث ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﻣــﺛﻼً إدﺧــﺎﻝ ﻣﻌﺎﻣﻠــﺔ ﺟدﻳــدة‬
‫‪ New transaction‬أو اﻟﺗﻌــدﻳﻝ ﻓﻳﻬــﺎ أو إﻟﻐﺎءﻫــﺎ وﻫــذﻩ اﻟﻣﻠﻔــﺎت أﺳﺎﺳــﻳﺔ ﻓــﻲ‬
‫ﺣﺎﻟــﺔ ﻓــﺷﻝ اﻟوﺻــوﻝ إﻟــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﺗــﺳﺗﺧدم ﺗﻠــك اﻟﻣﻠﻔــﺎت ﻓــﻲ اﻹﺻــﻼح‬
‫ٕواﻋﺎدة اﻟوﺿﻊ إﻟﻰ ﻣﺎ ﻛﺎن ﻋﻠﻳﻪ‪.‬‬

‫‪ ‬ﻣﻠف اﻟﺗﺣﻛم ﻓﻲ ﻛﻠﻣﺔ اﻟﺳر ‪Password File‬‬

‫ﻳــﺳﺗﺧدم ﻟﺗــﺳﺟﻳﻝ أﺳــﻣﺎء اﻟﻣــﺳﺗﺧدﻣﻳن واﻟــذﻳن ﻟﻬــم ﺻــﻼﺣﻳﺎت ‪ SYSDBA‬و‬


‫‪ SYSOPR‬ﻹدارة ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪20‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻭﺣﺪﺍﺕ ﲣﺰﻳﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﰲ ﺃﻭﺭﺍﻛﻞ‬


‫أن أو ارﻛـ ــﻝ ﺗـ ــﺳﺗﺧدم وﺣـ ــدات ﺧﺎﺻـ ــﺔ اﻓﺗ ارﺿـ ــﻳﺔ ﺑﻬـ ــﺎ ‪ Logical‬ﻟﺣﺟـ ــز وﺗﺧـ ــﺻﻳص‬
‫ﻣﺳﺎﺣﺎت اﻟﺗﺧزﻳن ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬

‫اﻟﻘطﺎع ‪Segment:‬‬

‫ﻳﻣﻛـ ــن ﺗﻣﺛﻳـ ــﻝ اﻟﻘطـ ــﺎع ‪ Segment‬ﺑﺎﻟوﻋـ ــﺎء اﻟـ ــذي ﻳـ ــﺷﻐﻝ ﺣﻳ ـ ـ اًز ﻣﻌﻳﻧـ ــﺎً ﻟﺗﺧ ـ ـزﻳن‬
‫اﻟﺑﻳﺎﻧﺎت‪ .‬وﻛﻣﺎ أﻧﻧﺎ ﻳﻣﻛﻧﻧﺎ ﻧﺧزن ﻣﺎءاً ﻓﻲ وﻋﺎء ﻣﻌﻳن ﻓﻳﻛـون وﻋـﺎء ﻳﺣﺗـوى ﻋﻠـﻰ اﻟﻣـﺎء‬
‫ورﺑﻣــﺎ اﺣﺗﺟﻧــﺎ آﺧــر ﻟﺗﺧ ـزﻳن ﺳــﺎﺋﻼً آﺧــر ﻓﻳــﻪ ﻓﻳﻛــون أﻳــﺿﺎً وﻋــﺎءاً ﻟﺗﺧ ـزﻳن اﻟزﻳــت ﻣــﺛﻼً‬
‫ﻛذﻟك ﻛﻝ ﻛﺎﺋن ﻳﺗطﻠب ﺗﺧزﻳﻧﻪ ﻓﻲ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت اﻟوﻋـﺎء اﻟﺧـﺎص ﺑـﻪ ﻓﺎﻟﺟـداوﻝ ﺗﻛـون‬
‫ﻣﻛوﻧﺔ ﻣن اﻟﻌدﻳد ﻣـن اﻻﻣﺗـدادات اﻟﻘطﺎﻋﻳـﺔ ﻓﻳﻛـون ﻟـدﻳﻧﺎ ﻣـﺎ ﻳـﺳﻣﻰ ‪Table Sgment‬‬
‫واﻟﻔﻬــﺎرس ﺗﺣﺗــﺎج إﻟــﻰ اﻣﺗــدادات ﻣﺧﺗﻠﻔــﺔ أﺧــرى ﻓﺗﻣــﺳﻰ اﻣﺗــدادﻫﺎ ‪Index Sgments‬‬
‫وﻣﻌﻠوﻣﺎت اﻟﺗراﺟﻊ ﺗﺳﺟﻝ ﻋﻠﻰ اﻣﺗدادات ﺗﺳﻣﻰ ‪ Rollback Sgments‬وﻫﻛذا‪.‬‬

‫اﻻﻣﺗداد ‪Extents‬‬

‫اﻟﻘطﺎﻋــﺎت ﻧﻔــﺳﻬﺎ ﻣؤﻟﻔــﺔ ﻣــن اﻣﺗــدادات ‪ Extents‬وﻫــﻰ ﻋﺑــﺎرة ﻋــن ﻣــﺳﺎﺣﺎت ﺗﺧزﻳﻧﻳــﺔ‬
‫ﻣﺗﺟﺎورة‪ .‬أن ﻛﻝ ﻗطﺎع ﻳﺗـﺄﻟف ﻋﻠـﻰ اﻷﻗـﻝ ﻣـن واﺣـد اﻣﺗـداد وﺑﻌـض اﻟﻘطﺎﻋـﺎت ﺗﺗطﻠـب‬
‫‪.rollback Segment‬‬ ‫أن ﻳﻛ ــون ﻫﻧ ــﺎك أﻛﺛ ــر ﻣ ــن اﻣﺗ ــداد ﻣﺛ ــﻝ ﻗط ــﺎع اﻟﺗ ارﺟ ــﻊ‬
‫اﻻﻣﺗدادات ﻗد ﺗﺗﻔﺎوت ﻓﻲ اﻟﺣﺟم ﻣن ‪ 1‬ﺑﻠوك وﺣﺗﻰ ‪ 2‬ﺟﻳﺟﺎ ‪.‬‬

‫اﻟﺑﻠوك ‪Block‬‬

‫اﻻﻣﺗــدادات ﺗﺗﻛــون ﻣــن ﺑﻠوﻛــﺎت ‪ Bloack‬وﻫــﻰ أﺻــﻐر وﺣــدة ﺗﺧزﻳﻧﻳــﺔ ﻳﻣﻛــن ﺣﺟزﻫــﺎ‬
‫وﺗﺧﺻﻳــﺻﻬﺎ ﻓــﻲ أو ارﻛــﻝ‪ .‬أن اﻟﺑﻠوﻛــﺎت ﻫــﻲ ﻣــﺎ ﺳــوف ﺗﺧــزن ﺑــﻪ أو ارﻛــﻝ اﻟــداﺗﺎ ﻓﻌﻠﻳــﺎً‬
‫‪ Physical‬ﻓﻲ ﻣﻠﻔﺎت ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ‪ .‬أن اﻟﺑﻠوك ﻫو أﺻـﻐر وﺣـدة ﻳﻣﻛـن ﻗراءﺗﻬـﺎ‬
‫أو ﻛﺗﺎﺑﺗﻬــﺎ ﻣــن اﻟدﻳــﺳك وﻳﻼﺣــظ أن اﻟﺑﻠــوك ﻓــﻲ أو ارﻛــﻝ ﻳﺧﺗﻠــف ﻋــن اﻟﺑﻠــوك ﻓــﻲ ﻧظــﺎم‬
‫اﻟﺗ ــﺷﻐﻳﻝ ﻣ ــﺛﻼً ﻓﻬ ــو ﻳﺗـ ـراوح ﺑ ــﻳن )‪2‬او ‪ 4‬أو ‪ 8‬أو ﺣﺗ ــﻰ ‪ 16‬ﻛﻳﻠ ــو ﺑﺎﻳ ــت أو ‪ 32‬ﻛﻳﻠ ــو‬
‫ﺑﺎﻳت(‬

‫‪21‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬ﻛﻣــﺎ ﻳﻌﺑــر اﻟــﺷﻛﻝ ﻓــﺎن اﻟﻘطــﺎع ﻳﻛــون ﻣــن واﺣــد أو اﻛﺛــر ﻣــن اﻣﺗــداد ‪ Extents‬و‬
‫ﻳﺗﺷﻛﻝ ﻛﻝ اﻣﺗداد ﻣن ﺑﻠوﻛﺎت ﻣﺗﺟﺎورة‪.‬‬

‫‪ ‬ﻛﻝ ﺑﻠوك ﻓﻲ اﻟداﺗﺎﺑﻳز ﻳﻛون ﺣﺟﻣـﺎ ﺛﺎﺑﺗـﺎ ﻛﻣـﺎ أن اﻟﺑﻠوﻛـﺎت ﻟﻬـﺎ ﻧﻔـس اﻟﺗﻛـوﻳن اﻟﻌـﺎم‬
‫ﺣﻳث ﻳﺗﻛون اﻟﺑﻠوك ﻛﻣﺎ ﻳوﺿﺢ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬رأس اﻟﺑﻠوك ‪Bloch Header‬‬

‫‪ o‬ﻳﺣﺗــوى رأس اﻟﺑﻠــوك ‪ Header‬ﻋﻠــﻰ ﻣﻌﻠوﻣــﺎت ﺗوﺿــﺢ ﻧــوع اﻟﺑﻠــوك ﺳ ـواء ﻛــﺎن‬
‫ﺑﻠوك ﺟداوﻝ ‪ Table Block‬أو ﺑﻠوك ﻓﻬرس ‪.Index Block‬‬

‫‪22‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ o‬ﻣﻌﻠوﻣﺎت ﻋن اﻟﻣﻌﺎﻣﻠﺔ اﻟﺣﺎﻟﻳﺔ ‪ Active transaction‬واﻟﺗﻲ ﺗﺗم ﻋﻠـﻰ اﻟﺑﻠـوك‬


‫أﺧر واﺣدة ﺗﻣت ﻋﻠﻰ ذﻟك اﻟﺑﻠوك‪.‬‬

‫‪ o‬ﻣﻌﻠوﻣﺎت ﻋن ﻋﻧوان اﻟﺑﻠوك ﻋﻠﻰ اﻟدﻳﺳك‪.‬‬

‫‪ ‬دﻟﻳﻝ اﻟﺟداوﻝ ‪Table Directory‬‬

‫‪ o‬ﻳﺣﺗــوى اﻟــدﻟﻳﻝ إن وﺟــد ﻋﻠــﻰ ﻣﻌﻠوﻣــﺎت ﻋــن اﻟﺟــداوﻝ واﻟﺗــﻲ ﺗﺧــزن ﺻــﻔوف ﻓــﻲ‬
‫ذﻟ ــك اﻟﺑﻠ ــوك أو ﻣﺟﻣوﻋ ــﺔ اﻟﺟ ــداوﻝ إذا ﻛﺎﻧ ــت أﻛﺛ ــر ﻣ ــن ﺟ ــداوﻝ ﺗﺧ ــزن ﻋﻠ ــﻰ‬
‫ﺻﻔوف ﻋﻠﻰ ﻫذا اﻟﺑﻠوك‪.‬‬

‫‪ ‬دﻟﻳﻝ اﻟﺻﻔوف ‪Table Directory‬‬

‫‪ o‬ﻳﺣﺗ ــوى ﻋﻠ ــﻰ ﻣﻌﻠوﻣ ــﺎت ﺗ ــﺷﻳر إﻟ ــﻰ أﻣ ــﺎﻛن وﺟ ــود اﻟ ــﺻﻔوف ﻓ ــﻲ اﻟﺑﻠ ــوك ﻋ ــن‬
‫اﻟﺻﻔوف اﻟﻣوﺟودة ﻓﻲ اﻟﺑﻠوك‪.‬‬

‫ﺗــﺳﻣﻰ اﻟﻌﻧﺎﺻــر اﻟــﺳﺎﺑﻘﺔ ﺑــﺳﻘف اﻟﺑﻠــوك ‪ Block Overhead‬وﻫــﻰ ﻣــﺳﺎﺣﺔ ﻣــن‬


‫اﻟﺑﻠــوك ﻣﺧﺻــﺻﺔ ﻓﻘــط ﻟﻛــﻲ ﺗــﺳﺗﺧدﻣﻬﺎ أو ارﻛــﻝ ﻓــﻲ إدارة اﻟﺑﻠــوك ﻧﻔــﺳﻪ واﻟﺑــﺎﻗﻲ ﻣــن‬
‫ﻣﺳﺎﺣﺔ اﻟﺑﻠوك أﻣﺎ أن ﻳﺣﺗوى ﻋﻠﻰ اﻟداﺗﺎ ﻧﻔﺳﻬﺎ أو ﺟزء ﻓﺎرغ ﻳﻣﻛن ﻣﻠﺋﻪ ‪.‬‬

‫اﻟﻣﺳﺎﺣﺔ اﻟﺟدوﻟﻳﺔ ‪: TableSpace‬‬

‫‪ ‬ﻳﻣﻛ ــن ﺗ ــﺷﺑﻳﻬﻬﺎ ﺑوﻋ ــﺎء ﻛﺑﻳ ــر ﺣ ــﺎوي ﻟﺟﻣﻳ ــﻊ اﻟﻘطﺎﻋ ــﺎت ﻓﻛ ــﻝ ﻗط ــﺎع ‪Segment‬‬
‫ﻳﺟ ـ ــب أن ﻳﻧﺗﻣ ـ ــﻲ إﻟ ـ ــﻰ ﻣ ـ ــﺳﺎﺣﺔ ﺟدوﻟﻳ ـ ــﺔ ﺧﺎﺻ ـ ــﺔ ﺑ ـ ــﻪ اﻟﺗ ـ ــﻲ ﺗﺣ ـ ــوى اﻻﻣﺗ ـ ــدادات‬
‫‪ Extents‬واﻟﺗﻲ ﺗﺣوى اﻟﺑﻠوﻛﺎت ‪.Block‬‬

‫‪ ‬ﻛــﻝ ﻣــﺳﺎﺣﺔ ﺟدوﻟﻳــﺔ ﻋﻠــﻰ اﻟﻣــﺳﺗوى اﻟﻣــﺎدي ‪ Phiscal‬ﻣﻛوﻧــﺔ ﻣــن واﺣــد أو أﻛﺛــر‬
‫ﻣن ﻣﻠﻔﺎت اﻟداﺗﺎ ‪ Data Files‬اﻟﻣرﺗﺑطﺔ ﺑﻬـﺎ‪ .‬اﻟـﺷﻛﻝ اﻟﺗـﺎﻟﻲ ﻳوﺿـﺢ اﻟﻌﻼﻗـﺔ ﺑـﻳن‬
‫اﻟﻣـ ــﺳﺎﺣﺎت اﻟﺟدوﻟﻳـ ــﺔ وﻣﻠﻔـ ــﺎت اﻟـ ــداﺗﺎ وأﻧ ـ ـواع اﻟﻛﺎﺋﻧـ ــﺎت اﻟﺗـ ــﻲ ﺗﺣﺗوﻳﻬـ ــﺎ اﻟﻣـ ــﺳﺎﺣﺔ‬
‫اﻟﺟدوﻟﻳﺔ‪.‬‬

‫‪23‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ ﻧﺗﻌﻠم ﺑﻌض اﻟﺣﻘﺎﺋق اﻟﻬﺎﻣﺔ‪:‬‬

‫‪ ‬ﻣ ـ ـ ــن اﻟـ ـ ـ ـﺷﻛﻝ ﻳﺗ ـ ـ ــﺿﺢ ﻟﻧ ـ ـ ــﺎ وﺟ ـ ـ ــود ﻣ ـ ـ ــﺳﺎﺣﺔ ﺟدوﻟﻳ ـ ـ ــﺔ ‪ TableSpace‬ﺗ ـ ـ ــﺳﻣﻰ‬
‫‪ USER_DATA‬ﺗﺗﻛون ﻣن اﻟﻧﺎﺣﻳﺔ اﻟﻣﺎدﻳﺔ ﻣن ﻋدد )‪ (2‬ﻣﻠف داﺗﺎ ‪Data‬‬
‫‪ Files‬وﻫﻣﺎ )‪ user_data01.dbf‬و ‪.( user_data02.db‬‬

‫‪ ‬اﻟﻣـﺳﺎﺣﺔ اﻟﺟدوﻟﻳـﺔ اﻟــﺳﺎﺑﻘﺔ ﺗﺣﺗـوى ﻋﻠـﻰ ﺛﻼﺛــﺔ ﻗطﺎﻋـﺎت وﻫـﻰ )‪( T1, T2,I1‬‬
‫ﻣن اﻟﻣﺣﺗﻣﻝ اﻧﻬﻣـﺎ ﻳﻛوﻧـﺎن ﻋـدد )‪ (2‬ﺟـداوﻝ وﻫﻣـﺎ ‪ T1, T2‬وﻋـدد )‪ (1‬ﻓﻬـرس‬
‫وﻫو اﻟﻣﻌﺑر ﻋﻧﻪ ﺑـ ‪I1‬‬

‫‪ ‬اﻟﻣــﺳﺎﺣﺔ اﻟﺟدوﻟﻳــﺔ ﻣﺧــﺻص ﻟﻬــﺎ ﻋــدد )‪ (4‬اﻣﺗــدادات ‪ Extents‬وﻛــﻝ اﻣﺗــداد‬


‫ﻋﺑﺎرة ﻋن ﻣﺟﻣوﻋﺔ ﻣﺗﺟﺎورة ﻣن اﻟﺑﻠوﻛﺎت‪.‬‬

‫‪24‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬اﻟﻘطﺎع ‪( T1) Segment‬ﻳﺗﻛون ﻣن ﻋدد )‪ (2‬اﻣﺗداد ﺑﺣﻳـث ﻳﻛـون ﻛـﻝ اﻣﺗـداد‬


‫‪ Extent‬ﻳوﺟد ﻣﺎدﻳﺎً ﻋﻠﻰ ﻣﻠف داﺗﺎ ﺧﺎص ﺑﻪ‪.‬‬

‫‪ ‬اﻟﻘطﺎع )‪ ( T2, I1‬ﻛﻼ ﻣﻧﻬﻣﺎ ﻣﻛون ﻣن اﻣﺗداد وﺣﻳد‪.‬‬

‫‪ ‬ﺑﻔرض أﻧﻧﺎ ﻧﺣﺗﺎج إﻟﻰ زﻳﺎدة ﻣﺳﺎﺣﺔ إﺿﺎﻓﻳﺔ ﻓﻳﻛون أﻣﺎﻣﻧﺎ أﺣد أﻣرﻳن ‪:‬‬

‫‪ o‬ﺗﻛﺑﻳر ﻣﻠﻔﺎت اﻟداﺗﺎ اﻟﻣوﺟودﻳن ﺑﺎﻟﻔﻌﻝ‪.‬‬

‫‪ o‬إﺿﺎﻓﺔ ﻣﻠف داﺗﺎ ﺟدﻳد إﻟﻰ اﻟﻣﺳﺎﺣﺔ اﻟﺟدوﻟﻳﺔ‪.‬‬

‫إدارة أروا ﻛﻝ ﻟﻠﻣﺳﺎﺣﺎت اﻟﺟدوﻟﻳﺔ‪:‬‬

‫ﻗﺑﻝ أوراﻛﻝ ‪ 8.1.5‬ﻟم ﻳﻛن ﻫﻧﺎك أﺳﻠوﺑﺎ ﻹدارة اﻻﻣﺗدادات داﺧﻝ اﻟﻣﺳﺎﺣﺔ اﻟﺟدوﻟﻳـﺔ إﻻ‬
‫ﺑﻣــﺎ ﻳﻌــرف اﻹدارة ﻋــن طرﻳــق اﻟﻛــﺎﺗﻠوغ ‪dictionary‐managed tablespace‬‬
‫وﻳﻣﻛﻧﻧﺎ ﺗﺻور ﺗﻠك اﻟطرﻳﻘﺔ ﻛﻣﺎ ﻓﻲ إدارة ﺣﺳﺎب ﻟك ﻓـﻲ اﻟﺑﻧـك ﺣﻳـث ﻳﺣﺗـوى اﻟﺣـﺳﺎب‬
‫ﻋﻠﻰ ﺟﺎﻧﺑﻳن ﺟﺎﻧب ﻣدﻳن وﺟﺎﻧب داﺋن ﻛﻣﺎ ﻓﻲ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬

‫اﻟﺟﺎﻧب اﻟداﺋن‬ ‫اﻟﺟﺎﻧب اﻟﻣدﻳن‬

‫ﻳـ ــﺗم وﺿـ ــﻊ ﺟﻣﻳـ ــﻊ اﻻﻣﺗـ ــدادات ‪ Extents‬ﺟﻣﻳﻊ اﻻﻣﺗدادات اﻟﻣﺗﺎﺣﺔ ﻣن اﻟﻧظﺎم‬
‫اﻟﻣﺧﺻﺻﺔ ﻟﻠﻛﺎﺋن ﻛﺟداوﻝ ﻣﺛﻼً‬

‫ﻋﻧــدﻣﺎ ﻳﺣﺗــﺎج اﻟﻛــﺎﺋن ﻟﻣــﺳﺎﺣﺔ إﺿــﺎﻓﻳﺔ ﻳــﺗم طﻠــب ذﻟــك ﻣــن أو ارﻛــﻝ واﻟﺗــﻲ ﺗــﺻدر أﻣــر‬
‫ﺑﺣث ﻋن اﻟﻣﺳﺎﺣﺎت اﻟﻣﺗﺎﺣﺔ واﻟﺗﻲ ﻳﻣﻛن إﻋطﺎءﻫﺎ ﻟﻠﻛﺎﺋن وذﻟك ﻋن طرﻳق ﺗﻧﻔﻳذ ﻋـدة‬
‫ﺟﻣــﻝ ‪ SQL‬ﻋﻠــﻰ اﻟﻛــﺎﺗﻠوغ ‪ Dictionary tables‬وﻓــﻰ ﻫــذﻩ اﻟﺣﺎﻟــﺔ ﺗﻌــدﻝ اﻟﺟــداوﻝ‬
‫اﻟﺧﺎﺻــﺔ ﺑﺎﻟﻛﺗــﺎﻟوغ ﺑﻧﺗــﺎﺋﺞ اﻟﺑﺣــث ﻋــن اﻟﻣــﺳﺎﺣﺎت اﻟﺧﺎﻟﻳــﺔ ورﺑﻣــﺎ ﺗــﺿﺎف أو ﺗﻠﻐــﻰ أو‬
‫ﺗﺣدث ﺻﻔوف إﻟﻰ ﺑﻌض اﻟﺟداوﻝ اﻟﻣوﺟودة ﻓﻲ اﻟﻛﺗﺎﻟوغ اﻟﺧﺎص ﺑﺄوراﻛﻝ‪ .‬ﻳـؤدى أداء‬
‫ذﻟــك ﺑــﺻﻔﺔ ﻣــﺳﺗﻣرة إﻟــﻰ وﺟــود ﻋــبء ﻋﻠــﻰ اﻟﻧظــﺎم ﻣﻣــﺎ ﻛــﺎن ﻳ ـؤﺛر ﺗــﺄﺛﻳ اًر ﻛﺑﻳ ـ اًر ﻋﻠــﻰ‬
‫اﻋﺗﺑ ــﺎرات اﻟﻛﻔ ــﺎءة ‪ .‬ﻓ ــﻲ اﻹﺻ ــدار ‪ 7.3‬ﻣ ــن أو ارﻛ ــﻝ ﻗ ــدﻣت أو ارﻛ ــﻝ أوﻝ ﻣـ ـرة ﻣﻔﻬ ــوم‬
‫‪25‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟﻣــﺳﺎﺣﺔ اﻟﺟدوﻟﻳــﺔ اﻟﻣؤﻗﺗــﺔ ‪ Temporary TableSpace‬واﻟﺗــﻲ ﻻ ﻳﻣﻛــن ﻋﻣــﻝ أﻳــﺔ‬


‫ﻛﺎﺋﻧﺎت ﺑﺻورة داﺋﻣﺔ ﻋﻠﻳﻬﺎ وﻫﻧﺎ ﺧﺻﺻت أو ارﻛـﻝ ﻛـﻝ اﻻﻣﺗـدادات ‪ Extents‬اﻟﻣﺗﺎﺣـﺔ‬
‫إﻟﻰ ﺗﻠك اﻟﻣﺳﺎﺣﺔ اﻟﻣؤﻗﺗﺔ وﻋﻧدﻣﺎ ﻳطﻠب أي ﻛﺎﺋن ﻣﺳﺎﺣﺔ إﺿﺎﻓﻳﺔ ﺗﻘـوم أروا ﻛـﻝ ﺑﺗﻧﻔﻳـذ‬
‫ﺟﻣــﻝ ﻓــﻲ اﻟﻛــﺎﺗﻠوغ وﻳــﺗم اﻟﺑﺣــث ﻋــن اﻟﻣــﺳﺎﺣﺎت اﻟﺧﺎﻟﻳــﺔ وﺗــﺿﺎف إﻟــﻰ ﺗﻠــك اﻟﻣــﺳﺎﺣﺔ‬
‫اﻟﺟدوﻟﻳــﺔ اﻟﻣؤﻗﺗــﺔ وﺗظــﻝ ﻓﻳﻬــﺎ ﻓــﺈذا ﻣــﺎ اﺣﺗــﺎج اﻟﻛــﺎﺋن أو ﻏﻳـرﻩ إﻟــﻰ ﻣــﺳﺎﺣﺔ إﺿــﺎﻓﻳﺔ ﺗﺑــدأ‬
‫أوراﻛﻝ ﺑﺎﻟﺑﺣث ﻓﻲ اﻟذاﻛرة ﻋن ﻣﺳﺎﺣﺎت ﺧﺎﻟﻳﺔ ﻣن اﻻﻣﺗدادات ﻓﻲ اﻟذاﻛرة ﻓـﺈذا وﺟـدﺗﻬﺎ‬
‫ﺗﻘوم ﺑﺎﺳﺗﻐﻼﻟﻬﺎ ٕواذا ﻟم ﺗﺟدﻫﺎ ﻓﺈﻧﻬﺎ ﺗرﺟﻊ ﻻﺳﺗﺧدام اﻷﺳﻠوب اﻟﻘدﻳم‪ .‬وﻳﻌﻳـب اﻷﺳـﻠوب‬
‫اﻟ ــﺳﺎﺑق ﺑ ــﺎن اﻟﻣ ــﺳﺎﺣﺔ اﻟﺟدوﻟﻳ ــﺔ اﻟﻣؤﻗﺗ ــﺔ ﺳ ــرﻋﺎن ﻣ ــﺎ ﺗ ــﺷﻐﻝ وﺑﺎﻟﺗ ــﺎﻟﻲ ﺗ ــؤﺛر ﻋﻠ ــﻰ أداء‬
‫اﻟﻧظﺎم‪.‬‬

‫ﻗدﻣت أوراﻛﻝ ﻣﻔﻬوم ﺟدﻳد اﺑﺗداء ﻣـن اﻹﺻـدار ‪ 8.1.5‬وﻫـو اﻹدارة اﻟﻣﺣﻠﻳـﺔ ‪locally‬‬
‫‪ managed tablespace‬ﻓــﻲ ﻣﻘﺎﺑــﻝ إدارة اﻟﻣــﺳﺎﺣﺎت اﻟﺟدوﻟﻳــﺔ ﻋــن طرﻳــق اﻟﻛــﺎﺗﻠوغ‬
‫‪ dictionary managed‬اﻟـﺳﺎﺑق ﻓﻳﻘـوم اﻷﺳـﻠوب اﻟﺟدﻳـد ﻋﻠـﻰ أن اﻟﻣـﺳﺎﺣﺔ اﻟﺟدوﻟﻳـﺔ‬
‫‪ TableSpace‬ﺗﻘ ــوم ﺑ ــﺈدارة اﻻﻣﺗ ــدادات ‪ extents‬اﻟﺧﺎﺻ ــﺔ ﺑﻬ ــﺎ ﺣﻳ ــث ﻳ ــﺗم اﻻﺣﺗﻔ ــﺎظ‬
‫ﺑﻘﻳﻣــﺔ ‪ Bitmap‬ﻋﻠــﻰ ﻛــﻝ ﻣﻠــف داﺗــﺎ ﻟﺗــدﻝ ﻋﻠــﻰ ﺣﺎﻟــﺔ اﻟﺑﻠوﻛــﺎت اﻟﻣﺧزﻧــﺔ ﻋﻠــﻰ ﺗﻠــك‬
‫اﻟﻣﻠﻔﺎت ﻫﻝ ﻫـﻲ ﺧﺎﻟﻳـﺔ أم ﺷـﺎﻏرة ﻓـﺈذا ﻛﺎﻧـت ﺧﺎﻟﻳـﺔ ﻓﺎﻧـﻪ ﻳـﺗم اﺳـﺗﻐﻼﻟﻬﺎ ﻣـرة أﺧـرى‪ .‬أن‬
‫أوراﻛﻝ ﺗﻘوم ﺑﺎﺳﺗﻣرار ﺑﺗﺣدﻳث ﺗﻠك اﻟﻘﻳﻣﺔ دون اﻻﺳﺗﻌﺎﻧﺔ ﺑﺎﻟﻛﺗﺎﻟوج‪.‬‬

‫ﻣﻠﻔﺎت اﻟﺗراﺟﻊ أو اﻹﻋﺎدة ‪Redo Log Files‬‬

‫ﺗﻌﺗﺑر ﺗﻠك اﻟﻣﻠﻔﺎت ﺣﻳوﻳﺔ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧـﺎت ﻓﻬـﻲ ﺗﺣـوي ﺳـﺟﻼت اﻟﻌﻣﻠﻳـﺎت اﻟﺗـﻲ‬
‫ﺗﻣت ﻋﻠﻰ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻻ ﺗـﺳﺗﺧدم ﺗﻠـك اﻟﻣﻠﻔـﺎت إﻻ ﻓـﻲ ﻋﻣﻠﻳـﺎت إﺻـﻼح واﺳـﺗﻌﺎدة‬
‫أﻳــﺔ أﺧطــﺎء ﻓــﻲ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﻌﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ ﻟــو ﺣــدث اﻧﻘطــﺎع اﻟﺗﻳــﺎر اﻟﻛﻬرﺑــﺎﺋﻲ‬
‫ﻋن اﻟﺟﻬﺎز اﻟﻣوﺟود ﺑﻪ اﻟﺳﻳرﻓر ﻓﺎن ذﻟك ﺳﻳﺳﺑب ﻓﻲ اﻷﻏﻠـب ﻓـﻲ ﺣـدوث أﺧطـﺎء ﻓـﻲ‬
‫اﻟﻣﺛـﺎﻝ ‪ Instance Failure‬وﻫﻧـﺎ ﺗـﺳﺗﺧدم أو ارﻛـﻝ ﻣﻠـف اﻟﺗ ارﺟـﻊ ‪OnLine Redo‬‬
‫‪ Log‬ﻹﻋــﺎدة اﺳــﺗرﺟﺎع اﻟﻧظــﺎم إﻟــﻰ اﻟﻧﻘطــﺔ اﻟﺗــﻲ ﻛﺎﻧــت ﻗﺑــﻝ اﻧﻘطــﺎع اﻟﺗﻳــﺎر اﻟﻛﻬرﺑــﺎﺋﻲ‪.‬‬
‫ٕواذا ﺣــدث ﻋﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ أن ﻗﻣﻧــﺎ ﺑﺗﺄﻛﻳــد إﻟﻐــﺎء ﺟــداوﻝ ﻓﺎﻧــﻪ ﻳﻣﻛــن ﻣــﻊ اﺳــﺗﺧدام‬

‫‪26‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻧــﺳﺧﺔ اﺣﺗﻳﺎطﻳــﺔ ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ ﻣﻠﻔــﺎت اﻟﺗ ارﺟــﻊ أن ﻧﻌﻳــد ﻣــﺎ ﻓﻘــد ﻣــن‬
‫ﺑﻳﺎﻧﺎت‪.‬‬

‫ﻛـﻝ ﻋﻣﻠﻳـﺔ ﺗﻘرﻳﺑـﺎً ﺗـﺗم ﻓـﻲ أو ارﻛـﻝ ﻳـﺗم ﺗـﺳﺟﻳﻠﻬﺎ ﻓـﻲ ﻣﻠﻔـﺎت اﻟرﻳـدو ‪ONLINE Redo‬‬
‫ﻓﻌﻠﻰ ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﻋﻧدﻣﺎ ﻧدﺧﻝ ﺻﻔﺎً ﺟدﻳداً أو ﻋﻧدﻣﺎ ﻧﻠﻐﻲ ﺻـﻔﺎً ﻓـﺈن ذﻟـك ﻳـﺳﺟﻝ ﻓـﻲ‬
‫ﻣﻠﻔﺎت اﻟرﻳدو‪ .‬ﻳوﺟد ﻧوﻋﻳن ﻣن ﻣﻠﻔﺎت اﻟرﻳدو وﻫﻣﺎ‬

‫‪ ‬ﻣﻠﻔﺎت اﻟﺗراﺟﻊ ‪Online Redo Log‬‬

‫ﺗﺣﺗــوى ﻗﺎﻋــدة ﺑﻳﺎﻧــﺎت أروا ﻛـﻝ ﻋﻠــﻰ اﺛﻧــﻳن ﻣــن ﻣﻠﻔــﺎت اﻟرﻳــدو ﻋﻠــﻰ اﻷﻗــﻝ وﻫــﻲ‬
‫ﻣﻠﻔــﺎت ذات ﺣﺟــم ﺛﺎﺑــت وﻳــﺗم اﻟﺗــﺳﺟﻳﻝ ﻋﻠﻳﻬــﺎ ﺑطرﻳﻘــﺔ داﺋرﻳــﺔ ﺑﻣﻌﻧــﻰ أن ﻗﺎﻋــدة‬
‫اﻟﺑﻳﺎﻧ ــﺎت ﺳ ــوف ﺗ ــﺳﺟﻝ ﻓ ــﻲ اﻟﻣﻠ ــف اﻷوﻝ ﺣﺗ ــﻰ اﻣﺗﻼﺋ ــﻪ ﺛ ــم ﻳ ــﺗم اﻟﺗﺣوﻳ ــﻝ إﻟ ــﻰ‬
‫اﻟﻣﻠــف اﻟﺛــﺎﻧﻲ وﻓــﻰ ﺣﺎﻟــﺔ اﻣﺗﻼﺋــﻪ ﻳــﺗم إﻋــﺎدة اﻟﻛﺗﺎﺑــﺔ ﻋﻠــﻰ اﻟﻣﻠــف اﻷوﻝ وﻫﻛــذا‪.‬‬
‫ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬

‫‪27‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺗ ــﺳﻣﻰ ﻋﻣﻠﻳ ــﺔ اﻻﻧﺗﻘ ــﺎﻝ ﻣ ــن اﻟﻠ ــوغ إﻟ ــﻰ اﻟﻠ ــوغ اﻵﺧ ــر ﺑﺎﻟﺗﺑ ــدﻳﻝ أو اﻟﺗﺣوﻳ ــﻝ ‪Switch‬‬
‫‪ 0Log‬وﻟﻔﻬم ﻛﻳﻔﻳﺔ ﻋﻣﻝ ﻣﻠﻔـﺎت اﻟرﻳـدو ﻓﺈﻧـﻪ ﻳﺗﻌـﻳن ﻋﻠﻳﻧـﺎ ﻓﻬـم ﻋﻣﻠﻳـﺔ اﻟﺗﺄﻛـد ‪Check‬‬
‫)‪ pointing (CHKP‬وﻛﺎﺗب اﻟﺑﻠوك )‪.Database Block Writer (DBWn‬‬

‫ﺗﺑ ـدأ ﻗــﺻﺗﻧﺎ ﺑﺟــزء ﻣﻌــﻳن ﻣــن اﻟــذاﻛرة اﻟﻛــﺎش ﺗــﺳﻣﻰ اﻟــذاﻛرة اﻟﻣؤﻗﺗــﺔ ﻟﺗﺧ ـزﻳن ﺑﻠوﻛــﺎت‬
‫‪ Database‬واﻟﺗ ــﻲ ﺗﻣﺛ ــﻝ ﻣﻧطﻘ ــﺔ ﻣﻌﻳﻧ ــﺔ ﻣ ــن اﻟ ــذاﻛرة‬ ‫‪buffer‬‬ ‫اﻟ ــداﺗﺎﺑﻳز ‪cache‬‬
‫ﺗــﺳﺗﺧدﻣﻬﺎ أو ارﻛــﻝ ﻓــﻲ ﺗﺧ ـزﻳن ﺑﻠوﻛــﺎت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت اﻟﻣ ـراد اﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ ﺣﻳــث ﻳــﺗم‬
‫اﺳــﺗدﻋﺎء ﺑﻠوﻛــﺎت اﻟــداﺗﺎ ﻣــن اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ ﻟﻳــﺗم اﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ ﻓــﻲ ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻣــن‬
‫اﻟ ــذاﻛرة ﺳـ ـواء ﺑ ــﺎﻟﻘراءة أو اﻟﺗﻌ ــدﻳﻝ‪ .‬وﻳ ــﺗم ﺑ ــﺎﻟﺗوازي ﺗ ــﺳﺟﻳﻝ ﻣﻌﻠوﻣ ــﺎت ﻛﺎﻓﻳ ــﺔ ﻋ ــن ﺗﻠ ــك‬
‫اﻟﺗﻌ ــدﻳﻼت ﻓ ــﻲ ﻣﻧطﻘ ــﺔ أﺧ ــرى ﻣ ــن اﻟ ــذاﻛرة ‪ SGA‬ﺗ ــﺳﻣﻰ اﻟ ــذاﻛرة اﻟﻣؤﻗﺗ ــﺔ ﻟﻠرﻳ ــدو ﻟ ــوغ‬
‫‪ redo log buffe‬وﻋﻧ ــدﻣﺎ ﺗ ــﺗم اﻟﺗﻌ ــدﻳﻼت وﻳـ ـراد ﺗﺄﻛﻳ ــدﻫﺎ وذﻟ ــك ﺑﺈﺻ ــدار اﻷﻣ ــر‬
‫‪ Commit‬ﻓ ــﺎن أو ارﻛ ــﻝ ﻻ ﺗﺑ ــدأ ﻓ ــﻲ اﻟﺣ ــﺎﻝ ﺑﻛﺗﺎﺑ ــﺔ اﻟﺑﻠوﻛ ــﺎت اﻟﻣﻌدﻟ ــﺔ ﻋﻠ ــﻰ اﻟﻣﻠﻔ ــﺎت‬
‫اﻟﻣﺎدﻳﺔ ‪ Data files‬ﻣرة أﺧرى ﺑﻝ ﺗﻧﺗظر ﻗﻠﻳﻼ ﺣﻳث ﻳﺗم أوﻻ ﻧﻘﻝ اﻟﻣﻌﻠوﻣﺎت اﻟﺧﺎﺻـﺔ‬
‫ﺑﺎﻟﺗﻌــدﻳﻼت ﻣــن ذاﻛـرة اﻟرﻳــدو ‪ Redo Log Buffer‬إﻟــﻰ ﻣﻠــف اﻟرﻳــدو ‪ONLine‬‬
‫‪ Redo Log‬ﺑواﺳــطﺔ ﻋﻣﻠﻳــﺔ ﻷو ارﻛــﻝ ﺗــﺗم ﻓــﻲ اﻟﺧﻠﻔﻳــﺔ ﺗــﺳﻣﻰ ﻛﺎﺗــب اﻟﻠــوغ ‪LGRW‬‬
‫ﻛﻣﺎ ﻳوﺿﺣﻪ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‬

‫‪28‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫وﺑﻌد إﺗﻣﺎم ﺗﻠك اﻟﻌﻣﻠﻳﺔ ﺑﻧﺟـﺎح ﻳـﺗم ﻧﻘـﻝ اﻟﺗﻌـدﻳﻼت ﻣـن اﻟـذاﻛرة اﻟﻣؤﻗﺗـﺔ ﻟﺗﺧـزﻳن ﺑﻠوﻛـﺎت‬
‫اﻟـداﺗﺎﺑﻳز ‪ Database buffer cache‬إﻟــﻰ ﻣﻠﻔــﺎت اﻟــداﺗﺎ ﺣﻳــث ﺗﺗــوﻟﻰ ﻣــﺳؤوﻟﻳﺔ ذﻟــك‬
‫ﻋﻣﻠﻳﺔ أﺧرى ﺗﻌﻣﻝ ﻓﻲ اﻟﺧﻠﻔﻳﺔ ﺗﺳﻣﻰ ‪.DBWR‬‬

‫واﻟﻣﻧطــق ﻓــﻲ ﻫــذا اﻟﺗــﺻرف ﺑــﺳﻳط ﻫــو ﺗﺟﻧــب اﻵﺛــﺎر اﻟﻧﺎﺗﺟــﺔ ﻋــن ﻓــﺷﻝ اﻟﻣﺛــﺎﻝ ﻓﺟــﺄة‬
‫ﻛﺣﺎﻟﺔ اﻧﻘطﺎع اﻟﺗﻳﺎر اﻟﻛﻬرﺑﺎﺋﻲ ﻋن اﻟـﺳﻳرﻓر ﻓﺑوﺟـود ﻣﻠـف اﻟرﻳـدو ﻓﺈﻧـﻪ ﻓـﻲ ﺗﻠـك اﻟﺣﺎﻟـﺔ‬
‫ﻳ ــﺗم اﻻﺳ ــﺗﻌﺎﻧﺔ ﺑﻣﻌﻠوﻣ ــﺎت اﻟﺗ ارﺟ ــﻊ اﻟﻣوﺟ ــودة ﺑ ــﻪ ﺣﻳ ــث ﺳ ــﺗﻘوم أو ارﻛ ــﻝ ﺑ ــﺷﻛﻝ ﺗﻠﻘ ــﺎﺋﻲ‬
‫ﺑﺈرﺟــﺎع اﻟﻣﻌــﺎﻣﻼت ‪ Transactions‬اﻟﺗــﻲ ﻟــم ﺗــﺗم ﺑــﺷﻛﻝ ﺻــﺣﻳﺢ ﺑﺎﻻﺳــﺗﻌﺎﻧﺔ ﺑﻣﻠﻔــﺎت‬
‫اﻟرﻳــدو ﺛــم ﺗﻘــوم ﻣ ـرة أﺧــرى ﺑﻣﺣﺎوﻟــﺔ اﻟﺗﻌــدﻳﻝ ﻓــﻲ اﻟﺑﻠوﻛــﺎت ﺛــم ﺗــﺗم اﻟﻌﻣﻠﻳــﺔ ﺑﻧﻘــﻝ ﺗﻠــك‬
‫اﻟﺗﻌدﻳﻼت إﻟﻰ اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ ﻓﺗﺗم ﺑذﻟك ﺗﺄﻛﻳد اﻟﺗﻌـدﻳﻼت ‪ .‬وﻟﻛـن ﻣـﺎ اﻟﻌﻣـﻝ ﻓـﻲ ﺣﺎﻟـﺔ‬
‫اﻣﺗﻼء ذاﻛرة اﻟﻛﺎش ‪ Database buffer cache‬ﺑﺎﻟﺑﻠوﻛﺎت اﻟﻣﻌدﻟـﺔ وﺗـﺳﻣﻰ ‪Dirty‬‬
‫‪ .Buffer‬ﻫﻧﺎ ﻳﺄﺗﻲ دور ﻟﻌﻣﻠﻳﺔ ﻫﺎﻣﺔ ﻟﻠﻐﺎﻳﺔ ﺗﺗم ﻓﻲ اﻟﺧﻠﻔﻳﺔ ﺑدون أن ﻳـﺷﻌر اﻟﻣـﺳﺗﺧدم‬
‫ﺑوﺟودﻫ ــﺎ وﻫ ــﻰ ﻋﻣﻠﻳ ــﺔ اﻟﺗﺣﻘ ــق ) ‪ Checkpoints (CHKP‬واﻟﺗ ــﻲ ﺗﺗﺄﻛ ــد ﻣ ــن ﻣ ــدى‬
‫اﻣــﺗﻼء ذاﻛ ـرة اﻟﻛــﺎش ﻓــﺈذا وﺻــﻠت إﻟــﻰ ﺣــد ﻣﻌــﻳن وﺟــب ﺗﻔرﻳــﻎ ﺗﻠــك اﻟــذاﻛرة ﻻﺳــﺗﻘﺑﺎﻝ‬
‫ﺑﻠوﻛــﺎت ﺟدﻳــدة وﻳــﺗم ﺗﻔرﻳــﻎ ذاﻛ ـرة اﻟﻛــﺎش ﺑﻧﻘــﻝ اﻟﺑﻠوﻛــﺎت اﻟﻣﻌدﻟــﺔ إﻟــﻰ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ‬
‫وﻫـو دور ﻛﺎﺗـب اﻟﺑﻠـوك )‪ (DBWR‬ﺛـم ﺑﻌــد إﺗﻣـﺎم اﻟﻧﻘـﻝ ﺗﻘـوم ﻋﻣﻠﻳـﺔ اﻟﺗﺣﻘــق ‪CHKP‬‬
‫ﺑﺈﺗﻣﺎم ﺗﻔرﻳﻎ اﻟذاﻛرة‪ .‬ﻳوﺟـد ﺣـدث ‪ Event‬ﻳـؤدى إﻟـﻰ ﺗﻧـﺷﻳط ﻋﻣﻠﻳـﺔ اﻟﺗﺣﻘـق وﻫـو ﻋـﺎدةً‬
‫ﻣــﺎ ﻳﺗﺣﻘــق ﻋﻧــدﻣﺎ ﻳﺣــدث ﺗﺑــدﻳﻝ ﻟﻣﻠــف اﻟﻠــوغ‪ .‬وﺣﺗــﻰ ﻳــﺗم ﻛﺎﺗــب اﻟﺑﻠــوك ﻋﻣﻠــﻪ ﻓــﻲ إﻋــﺎدة‬
‫اﻟﺑﻠوﻛــﺎت اﻟﻣﻌدﻟــﺔ ﻣ ـرة أﺧــرى إﻟــﻰ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ ﺗﻛــون اﻟﺑﻠوﻛــﺎت ﻣﺣﻣﻳــﺔ ﻣــن إﻋــﺎدة‬
‫اﻻﺳــﺗﺧدام ﺑواﺳــطﺔ ﻣﻌﻠوﻣــﺎت اﻟﺗ ارﺟــﻊ اﻟﻣــﺳﺟﻠﺔ ﻓــﻲ ﻣﻠــف اﻟرﻳــدو ﻟــوغ ﻓــﺈذا ﻣــﺎ ﺣﺎوﻟﻧــﺎ‬
‫إﻋﺎدة اﺳﺗﺧداﻣﻬﺎ ﻓﺎن رﺳﺎﻟﺔ ﺗظﻬر ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬

‫‪29‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫وﻫــذا ﻳﻌﻧــﻰ أن ﻛﺎﺗــب اﻟﻠــوغ ﻟــم ﻳﻧﺗــﻪ ﻣــن ﻋﻣﻠــﻪ ﺑﻌــد وﻗــد اﻣﺗﻠــﺊ ﻣﻠــف اﻟﻠــوغ ﻓــﻼ ﻳــﺳﺗطﻳﻊ‬
‫اﺳﺗﻘﺑﺎﻝ ﺳﺟﻼت ﺟدﻳدة وﻫﻧﺎ ﻳﻛون ﻋﻠﻰ ﻣدﻳر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت أن ﻳزﻳد ﺑﻘـدر اﻟﻣـﺳﺗطﺎع‬
‫ﻣن ﺳﻌﺔ ﻣﻠﻔﺎت اﻟرﻳدو ﻟوج‪.‬‬

‫ﻣﻠﻔﺎت اﻟﻠوغ اﻻﺣﺗﻳﺎطﻳﺔ ‪:Archived Redo Log‬‬

‫ﻳﻣﻛــن أن ﺗﻌﻣــﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑﺈﺣــدى أﺳــﻠوﺑﻳن وﻫﻣــﺎ إﻣــﺎ ﻋــدم اﻟــﺳﻣﺎح ﺑﺗﻛــوﻳن ﻧــﺳﺦ‬
‫اﺣﺗﻳﺎطﻳـﺔ ﻋﻠـﻰ اﻟدﻳـﺳك ﻣـن ﻣﻠﻔـﺎت اﻹﻋـﺎدة واﻟﺗ ارﺟـﻊ ‪ Online Redo Log‬وﻳـﺳﻣﻰ‬
‫ذﻟك اﻟوﺿﻊ ﺑـ ‪ NOARCHIVELOG‬أو ﺑﺎﻟﺳﻣﺎح ﺑﺗﺧزﻳن وأرﺷﻔﺔ اﻟﻣﻠﻔـﺎت اﻟـﺳﺎﺑﻘﺔ‬
‫ﻗﺑﻝ إﻋﺎدة اﻟﻛﺗﺎﺑﺔ ﻋﻠﻳﻬﺎ ﻣن ﺟدﻳد ‪ ARCHIVELOG‬وﻫو اﻟوﺿﻊ اﻟﻣﺣﺑذ ﻟﺗﺧﻔﻳض‬
‫اﺣﺗﻣﺎﻻت ﻓﻘد اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫إن أوراﻛﻝ ﻻ ﻳﻣﻛﻧﻬﺎ اﻟﺳﻣﺎح ﺑﺗﻛﺑﻳر ﺣﺟم ﻣﻠف اﻟﻠوغ ‪ Online Redo‬إﻻ ﻣﺎ ﻻ ﻧﻬﺎﻳـﺔ‬
‫ﻓﻼﺑد وان ﺗﻌﻳد اﻟﻛﺗﺎﺑﺔ ﻋﻠﻳﻪ ﺑﻌد اﻣﺗﻼﺋﻪ وﻗﻠﻧﺎ ﻣﻣﺎ ﺳﺑق أن ﻣﻠﻔـﺎت اﻟﻠـوغ ﻻ ﻏﻧـﻰ ﻋﻧﻬـﺎ‬
‫ﻓﻲ ﺣﺎﻟﺔ اﻹﺻﻼح ﻓﻣﺎ اﻟﻌﻣﻝ ﻓﻲ ﺣﺎﻟﺔ ﺗﻠف ﻣﻠـف اﻟﻠـوغ ﻧﻔـﺳﻪ‪ .‬إذا ﻟـم ﻳﻛـن ﻣﻠـف اﻟﻠـوغ‬
‫ﻣوﺟــوداً ﻓﺎﻧــﻪ ﻻ ﻣﻔــر ﺳــوف ﺗﻔﻘــد اﻟﻛﺛﻳــر ﻣــن اﻟــداﺗﺎ وﻟــذﻟك ﺗﻌﻣــﻝ أروا ﻛ ـﻝ ﻓــﻲ ﺣﺎﻟــﺔ‬
‫‪ Archivelog‬أن ﺗﻛــون ﻧــﺳﺦ اﺣﺗﻳﺎطﻳــﺔ ﻣــن ﻣﻠﻔــﺎت اﻟﺗ ارﺟــﻊ وﺗﺣــرص ﻋﻠــﻰ ﺗﺟدﻳــدﻫﺎ‬
‫ﺑﺎﺳــﺗﻣرار ﺗﺣــﺳﺑﺎً ﻟﺗﻠــف ﻣﻠﻔــﺎت اﻟﻠــوغ ‪ Online Redo log‬ﻛﻣــﺎ ﻳﺗــﺿﺢ ﻣــن اﻟــﺷﻛﻝ‬
‫اﻟﺗﺎﻟﻲ‪:‬‬

‫‪30‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺍﻟﻌﻤﻠﻴﺎﺕ ‪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‬‬

‫ﺗﻘ ـ ـ ـ ـ ـ ـ ـ ـ ــوم‬

‫‪31‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟﻣﺟﻣوﻋﺔ اﻷوﻟﻰ ﻣن اﻟﻌﻣﻠﻳﺎت ﺗﻘوم ﺑﺗﻠﺑﻳﺔ طﻠﺑﺎت اﻟﻣـﺳﺗﺧدم ﺣﻳـث ﻳﻣﻛـن اﻟﻧظـر إﻟﻳﻬـﺎ‬
‫ﻛراﺑطــﺔ أو ﺣﺑــﻝ ﻳــﺷدك إﻟــﻰ أو ارﻛــﻝ ﻓﻌﻧــدﻣﺎ ﺗﺣﺗــﺎج إﻟــﻰ ﻣﻌﻠوﻣــﺎت ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت‬
‫ﺳوف ﺗﺄﻣر ﺗﻠك اﻟﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﻳﺎت ﻛـﻲ ﺗﻘـوم ﺑرﺑطـك ﺑﻘﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت ﺛـم ﺗﺣـﺿر‬
‫ﻣــﺎ طﻠﺑﺗــﻪ ﻣــن ﻣﻌﻠوﻣــﺎت ٕواذا ﻣــﺎ ﻗﻣــت ﺑﺗﻌــدﻳﻼت أو ﺗﺣــدﻳﺛﺎت ﻓﺈﻧﻬــﺎ ﺗــﺄﻣر ﺑﺎﺳــﺗدﻋﺎء‬
‫ﻋﻣﻠﻳﺎت أﺧرى ﻟﺗﺳﺟﻝ ﺗﻠك اﻟﺗﻌدﻳﻼت ﻓﻲ ﻣﻧﺎطق ﺧﺎﺻـﺔ ﻓـﻲ اﻟـذاﻛرة ﺗﻣﻬﻳـداً ﻟﻧﻘـﻝ ﺗﻠـك‬
‫اﻟﺗﺣدﻳﺛﺎت ﻓﻳﻣﺎ ﺑﻌد إﻟﻰ اﻟﻣﻠﻔﺎت اﻟﺧﺎﺻﺔ ﺑﺎﻟداﺗﺎﺑﻳز‪.‬‬

‫أﻣــﺎ اﻟﻣﺟﻣوﻋــﺔ اﻟﺛﺎﻧﻳـــﺔ ﻣــن ﺗﻠــك اﻟﻌﻠﻣﻳــﺎت ﻓﻬــﻲ ﺗﻌﻧــﻰ ﺑوﺿــﻊ وﻛﺗﺎﺑــﺔ اﻟﺑﻳﺎﻧــﺎت ﻋﻠــﻰ‬
‫اﻟﻣﻠﻔــﺎت اﻟﻣﻛوﻧــﺔ ﻟﻠــداﺗﺎﺑﻳز ‪ Data Files‬ﻓﻛﻣــﺎ ﻗﻠﻧــﺎ ﻣــن ﻗﺑــﻝ ﻓــﺎن اﻟﻣﻌﻠوﻣــﺎت ﺗﺧــزن‬
‫ﻣﺑدﺋﻳﺎً ﻓﻲ ﻣﻧﺎطق ﺗﺣددﻫﺎ اﻷورﻛﻝ ﻓﻲ اﻟذاﻛرة ِ ‪ Shared Memory‬ﺛم ﺗﻧﻘـﻝ ﺑواﺳـطﺔ‬
‫ﺗﻠك اﻟﻌﻣﻠﻳﺎت ﺑﻌد وﻗت ﻣﻌـﻳن إﻟـﻰ اﻟﻣﻠﻔـﺎت وﻳـﺗم إﺧـﻼء اﻟﻣﻧطﻘـﺔ ﻟﺗـوﻓﻳر ﻗـدر اﻛﺑـر ﻣـن‬
‫ﻣﺳﺎﺣﺔ اﻟذاﻛرة‪.‬‬

‫وﺗﺧــﺗص اﻟﻣﺟﻣوﻋــﺔ اﻟﺛﺎﻟﺛــﺔ ﺑﻛﺗﺎﺑــﺔ ﻣــﺎ ﻳﺣــدث ﻋﻠــﻰ اﻟﺑﻳﺎﻧــﺎت ﻣــن ﺗﻌــدﻳﻼت ﻓــﻲ ﻣﻠﻔــﺎت‬
‫اﻟﻠــوغ ﺣﻳــث ﺗــﺳﻣﺢ ﺗﻠــك اﻟﻣﻠﻔــﺎت ﺑﺎﺳــﺗﻌﺎدة آﺧــر ﻣــﺎ ﺗــم ﻋﻠــﻰ اﻟﺑﻳﺎﻧــﺎت ﻣــن ﺗﻌــدﻳﻼت ﻓــﻲ‬
‫ﺣﺎﻟﺔ ﻓﺷﻝ اﻟوﺻوﻝ إﻟﻰ اﻟداﺗﺎﺑﻳز واﻟذي ﻳﺣدث ﻧﺗﻳﺟـﺔ اﻟﻌدﻳـد ﻣـن اﻷﺳـﺑﺎب وﻣﻧﻬـﺎ ﺗﻠـف‬
‫وﺣدات اﻟﺗﺧزﻳن‪.‬‬

‫وﻋﻠﻳﻪ ﻓﺈن أوراﻛﻝ ﺗﺳﺟﻝ ﻛﻝ ﻣﻌﺎﻣﻠﺔ ‪) Transaction‬أﻳﺔ إدﺧﺎﻝ ﺟدﻳد ﻟﺑﻳﺎﻧﺎت‬


‫أو اﻟﺗﻌــدﻳﻝ ﻓــﻲ ﺑﻳﺎﻧــﺎت ﻣوﺟــودة ﺳـواء ﺑﺎﻹﺿــﺎﻓﺔ أو ﺑﺎﻹﻟﻐــﺎء( ﻓــﻲ ﻣﻠﻔــﺎت اﻟﻠــوغ ‪Log‬‬
‫‪ Files‬وﻫــﻰ ﻣﻠﻔــﺎت ﻣــﺳﺗﻘﻠﺔ ﻋــن ﻣﻠﻔــﺎت اﻟــداﺗﺎ وﻓــﻰ ﺣﺎﻟــﺔ ﻓﻘــدان أﻳــﺔ ﻣــن ﻣﻠﻔــﺎت اﻟــداﺗﺎ‬
‫اﻟﻣﻛوﻧ ــﺔ ﻟﻠ ــداﺗﺎﺑﻳز أو ﻓ ــﺷﻝ اﻟﺗﻌﺎﻣ ــﻝ ﻣﻌ ــﻪ ﻓ ــﻳﻣﻛن اﺳ ــﺗدﻋﺎء ﻣﻠ ــف اﻟﻠ ــوغ ﻟﻠﻣ ــﺳﺎﻋدة ﻓ ــﻲ‬
‫ﻋﻣﻠﻳــﺎت اﻹﺻــﻼح ﺣﻳــث ﻳﻣﻛــن اﺳــﺗدﻋﺎء ﻧــﺳﺧﺔ اﺣﺗﻳﺎطﻳــﺔ ﻣــن ﻣﻠــف اﻟــداﺗﺎ وﺗطﺑﻳــق ﻣــﺎ‬
‫ﻫو ﻣوﺟود ﻓﻲ ﻣﻠف اﻟﻠوغ ﻣن آﺧر ﻣﻌﺎﻣﻼت ﺣﺗﻰ ﻳﻣﻛـن اﺳـﺗﻌﺎدة اﻟوﺿـﻊ إﻟـﻰ ﻣـﺎ ﻫـو‬
‫ﻋﻠﻳﻪ‪.‬‬

‫وﺗﺧﺗص آﺧر ﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﻳﺎت ﺑﻣراﻗﺑﺔ أداء اﻟداﺗﺎﺑﻳز‪.‬‬

‫‪32‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ُﺗﻘــﺳم اﻟﻌﻣﻠﻳــﺎت اﻟﺗــﻲ ﺗﻘــوم ﺑﻬــﺎ أوراﻛــﻝ إﻟــﻰ ﻧــوﻋﻳن أﺳﺎﺳــﻳن ﻣــن وﺟﻬــﺔ اﻟﻣــﺳﺗﺧدم‬
‫اﻟذي ﻳرﻳد اﻻﺗﺻﺎﻝ ﺑﺄوراﻛﻝ‪:‬‬

‫‪Processes‬‬

‫‪User Process‬‬ ‫‪Server Process‬‬

‫ٕواذا ﻧظرﻧــﺎ إﻟــﻰ اﻟﻣــﺳﺗﺧدم اﻟــذي ﻳرﻳــد اﻻﺗــﺻﺎﻝ ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻧﺟــد أن ﻫﻧــﺎك ﻧــوﻋﻳن‬
‫ﻣن اﻟﻌﻣﻠﻳﺎت ﻣﺧﺻﺻﻳن ﻟﺿﻣﺎن اﺗﺻﺎﻝ اﻟﻣﺳﺗﺧدم ﺑﻣﺛـﺎﻝ اﻷورﻛـﻝ وﺑﺎﻟﺗـﺎﻟﻲ ﻟﻼﺗـﺻﺎﻝ‬
‫ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ‪ .‬ﻳﻘــوم اﻟﻣــﺳﺗﺧدم ﺑﺗــﺷﻐﻳﻝ ﺗطﺑﻳــق وﻟــﻳﻛن ﻣــﺛﻼً ﺑرﻧــﺎﻣﺞ‬
‫ﻟــﺷؤون اﻷﻓ ـراد واﻟــذي ﻳﺗطﻠــب اﻟﺣــﺻوﻝ ﻋﻠــﻰ داﺗــﺎ ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﺗﻘــوم اﻷورﻛــﻝ‬
‫ﺑﺗــﺷﻐﻳﻝ ﻋﻣﻠﻳــﺎت ﺧﺎﺻــﺔ ﻟﺧدﻣــﺔ ﻫــذا اﻟﻣــﺳﺗﺧدم ‪ User Process‬ﺣﻳــث ﺗﻘــوم ﺗﻠــك‬
‫اﻟﻌﻠﻣﻳﺎت ﺑﻌﻣﻝ ﻗﻧﺎة اﺗﺻﺎﻝ ﺗﺳﻣﺢ ﺑرﺑط اﻟﻣﺳﺗﺧدم ﺑﻣﺛﺎﻝ اﻷورﻛﻝ وﻋﻧدﻣﺎ ﻳـﺗم ﻓـﺗﺢ ﺗﻠـك‬
‫اﻟﻘﻧﺎة ﺗﻘوم أوراﻛﻝ ﺑﺗـﺷﻐﻳﻝ ﻋﻣﻠﻳـﺎت إﺿـﺎﻓﻳﺔ ‪ Server Process‬ﻋﻠـﻰ ﺳـﻳرﻓر اﻷورﻛـﻝ‬
‫ﻧﻔﺳﻪ واﻟﺗﻲ ﺗﻛون ﻣﺳؤوﻟﺔ ﻓﻌﻠﻳﺎً ﻋن ﺗﻌﺎﻣﻝ اﻟﻣﺳﺗﺧدم ﻣـﻊ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻳﺗـﺿﺢ ذﻟـك‬
‫ﻣن اﻟرﺳم اﻟﺗﺎﻟﻲ‪:‬‬

‫‪33‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺳﺎﺑق اﻵﺗﻲ‪:‬‬

‫‪ ‬اﻟﻣــﺳﺗﺧدم ﻳﺑــدأ ﻓــﻲ ﺗــﺷﻐﻳﻝ ﺗطﺑﻳــق ﻳﺣﺗــﺎج إﻟــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﺗﺑــدأ ﻋﻣﻠﻳــﺎت‬
‫اﻟﻣﺳﺗﺧدم ﻓﻲ اﻟﺗﺷﻐﻳﻝ ‪.User Process‬‬

‫‪ ‬ﺗﻘــوم ﻋﻣﻠﻳــﺎت اﻟﻣــﺳﺗﺧدم ‪ User Process‬ﺑﺎﻻﺗــﺻﺎﻝ ﺑﻌﻣﻠﻳــﺎت اﻟــﺳﻳرﻓر ﻋﻠــﻰ‬


‫اﻟــﺳﻳرﻓر ﻟﻔــﺗﺢ ﻗﻧــﺎة اﺗــﺻﺎﻝ وﺗــﺳﺟﻝ ﻣﻧطﻘــﺔ ﺧﺎﺻــﺔ ﻓــﻲ اﻟــذاﻛرة ‪ PGA‬ﺑﻳﺎﻧــﺎت‬
‫اﻻﺗﺻﺎﻝ وﻣﻌﻠوﻣﺎت اﻟﻣﺳﺗﺧدم‪.‬‬

‫‪ ‬ﺑﻣﺟرد ﺗﺄﻛﻳد اﻻﺗﺻﺎﻝ ﻳﺗم اﻟﺗﻌﺎﻣﻝ اﻟﻣﺑﺎﺷر ﺑﻳن اﻟﻣﺳﺗﺧدم وﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت ﻋـن‬
‫طرﻳق ﻋﻣﻠﻳﺎت اﻟﺳﻳرﻓر ‪ Server Process‬واﻟﺗﻲ ﺗﺗﻌﺎﻣﻝ ﻣﻊ اﻟﻣﺛﺎﻝ ‪Oracle‬‬
‫‪ Instance‬و ﺗﻛون ﻓﻲ ﺧدﻣﺗﻪ‪.‬‬

‫اﻟﻌﻣﻠﻳﺎت اﻟﺗﻲ ﺗﻌﻣﻝ ﺑﻬدوء ﻓﻲ اﻟﺧﻠﻔﻳﺔ‪:‬‬


‫‪Oracle Processes In Background‬‬
‫ﺗﻘوم أوراﻛﻝ ﺑﺗﺷﻐﻳﻝ ﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﻳﺎت ﻓﻲ اﻟﺧﻠﻔﻳـﺔ وذﻟـك ﻟﺧدﻣـﺔ ﻛـﻝ ﻣﺛـﺎﻝ‪ .‬ﺗـؤدى‬
‫ﺗﻠك اﻟﻌﻣﻠﻳﺎت وظﺎﺋف ﻫﺎﻣﺔ ﻟﻠﻐﺎﻳﺔ ﻓﻬـﻲ ﺗﺗـوﻟﻰ إرﺳـﺎﻝ اﻟﺑﻳﺎﻧـﺎت ﻣـن اﻟـذاﻛرة إﻟـﻰ ﻣﻠﻔـﺎت‬
‫اﻟــداﺗﺎﺑﻳز واﻟﻌﻛــس ‪ I/o‬ﻛﻣــﺎ ﺗ ارﻗــب أداء اﻟوظــﺎﺋف واﻟﻌﻣﻠﻳــﺎت اﻷﺧــرى ﻣــن أﺟــﻝ ﺗﺣــﺳﻳن‬
‫اﻷداء وﻳوﺟــد ﻣﻧﻬ ـﺎ ﺧﻣــﺳﺔ ﻋﻣﻠﻳــﺎت ﻻ ﻏﻧــﻰ ﻋﻧﻬــﺎ واﻟﺑــﺎﻗﻲ ﻳﻌﺗﻣــد ﻋﻠــﻰ ﺧﻳــﺎرات إﻋــداد‬
‫أوراﻛﻝ ﻟﻠﻌﻣﻝ وﻫﻲ‪:‬‬

‫‪34‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ .1‬وظﻳﻔﺔ ﻛﺗﺎﺑﺔ اﻟداﺗﺎ إﻟﻰ اﻟﻣﻠﻔﺎت‪:‬‬

‫ﻳوﺟد ﻧوﻋﻳن رﺋﻳﺳﻳن ﻣن اﻟﻌﻣﻠﻳﺎت اﻟﺗﻲ ﺗﺧﺗص ﺑﺗﻠك اﻟوظﻳﻔﺔ اﻟﻬﺎﻣﺔ أوﻟﻬﻣﺎ‪:‬‬

‫‪ ‬ﻛﺎﺗب اﻟداﺗﺎ ‪(DBWRn) Database Writer‬‬

‫ﺣﻳــث ﺗﻘــوم ﺗﻠــك اﻟﻌﻣﻠﻳــﺔ ﺑﻛﺗﺎﺑــﺔ ﺑﻠوﻛــﺎت اﻟﺑﻳﺎﻧــﺎت اﻟﻣﻌدﻟــﺔ ﻣــن اﻟــذاﻛرة إﻟــﻰ‬
‫اﻟﻣﻠﻔﺎت اﻟﻣﻛوﻧﺔ ﻟﻠداﺗﺎﺑﻳز ﻛﻣﺎ ﻳظﻬر ﻓﻲ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ واﻟذي ﻳوﺿـﺢ اﻧﺗﻘـﺎﻝ‬
‫اﻟﺑﻳﺎﻧــﺎت ﻣــن اﻟــذاﻛرة اﻟﻣؤﻗﺗــﺔ ‪ Database Buffer cache‬إﻟــﻰ اﻟﻣﻠﻔــﺎت‬
‫‪ 0Data‬وﻳﻼﺣ ــظ أﻧ ــﻪ ﺑﺎﻟﻧ ــﺳﺑﺔ‬ ‫اﻟﻣﺎدﻳ ــﺔ اﻟﻣﻛوﻧ ــﺔ ﻟﻘﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت ‪files‬‬
‫ﻟﻠﻣـﺳﺗﺧدم ﻳﻣﻛـن أن ﻳﻛـون ﻫﻧـﺎك اﻛﺛـر ﻣـن ﻛﺎﺗـب ﻳﻌﻣـﻝ ﻓـﻲ اﻟﺧﻠﻔﻳـﺔ ﻟﺗﻔــﺎدي‬
‫اﻹﺧﺗﻧﺎﻗﺎت اﻟﺗﻲ ﻣﻣﻛن أن ﺗﺣدث أﺛﻧﺎء اﻧﺗﻘﺎﻝ اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪ ‬وظﻳﻔﺔ اﻟﺗﺣﻘق )‪Checkpoint (CKPT‬‬

‫ﺗﻘــوم ﺗﻠــك اﻟوظﻳﻔــﺔ ﺑﺗﺣــدﻳث ﻣﻠــف اﻟــﺗﺣﻛم ‪ Control File‬ورأس ﻣﻠﻔــﺎت اﻟــداﺗﺎ‬
‫‪ Data files‬واﻟﻣﻛوﻧــﺔ ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑ ـرﻗم ﻳــﺳﻣﻰ ‪System Change‬‬
‫)‪ Number (SCN‬وﻫــو رﻗــم ﻳــﺗم ﺗوﻟﻳــدﻩ ﻣــن اﻟﻧظــﺎم ﻟﻳــدﻝ ﻋﻠــﻰ آﺧــر ﻣﻌﺎﻣﻠــﺔ‬
‫ـﺎء ﻋﻠــﻰ‬
‫ﺗﻣــت ﺑﻧﺟــﺎح ﻋﻠــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت‪ .‬إن ﻫــذﻩ اﻟوظﻳﻔــﺔ ﺗﻔَُﻌــﻝ ﺗﻠﻘﺎﺋﻳــﺎً ﺑﻧـ ً‬
‫ﺣــدث ﻳــﺳﻣﻰ اﻟﺗﺣﻘــق ‪ Checkpoint‬واﻟــذي ﻳﺣــدث ﻛﻠﻣــﺎ ﺣــدث ﺗﺑــدﻳﻝ ﻟﻠﻛﺗﺎﺑــﺔ‬
‫ﺑﻳن ﻣﻠف ﻟوغ إﻟﻰ ﻣﻠف ﻟوغ آﺧر‪.‬‬

‫‪ ‬ﻛﺎﺗب اﻟﻠوغ ‪Log Writer (LGWR)/‬‬

‫‪35‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫وﻫـو اﻟﻣـﺳﺋوﻝ ﻋـن ﻧﻘـﻝ اﻟﻣﻌـﺎﻣﻼت ‪ Transactions‬اﻟﺗـﻲ ﺣـدﺛت ﻣـن اﻟﻣﻧطﻘــﺔ‬


‫اﻟﻣؤﻗﺗــﺔ ﺑﺎﻟــذاﻛرة اﻟﺧﺎﺻــﺔ ﺑﺗــﺳﺟﻳﻝ اﻟﺗﻐﻳ ـرات اﻟﺗــﻲ ﺗﻣــت ‪ Log Buffer‬إﻟــﻰ‬
‫ﻣﻠﻔ ــﺎت اﻟﻠ ــوغ وﻳﺗﺑ ــﻊ ذﻟ ــك اﻧ ــﻪ ﻣﻌﻧ ــﻲ ﺑﺗﺣدﻳ ــد أي ﻣ ــن ﻣﻠﻔ ــﺎت اﻟﻠ ــوغ اﻟﻣ ــﺳﺗﻌدة‬
‫ﻻﺳﺗﻘﺑﺎﻝ ﺗﻠك اﻟﺗﻐﻳـرات ﻛﻣـﺎ ﻳﻛـون ﻣـﺳؤوﻻ ﻋـن اﻟﺗﺄﻛـد ﻣـن ﻧﻘـﻝ ﻧـﺳﺦ اﻟﺗﻌـدﻳﻼت‬
‫ﻣــن ﻣﻠــف اﻟﻠــوغ إﻟــﻰ ﻣﻠﻔــﺎت اﻷرﺷــﻳف ﻗﺑــﻝ إﻋــﺎدة اﻟﻛﺗﺎﺑــﺔ ﻋﻠــﻰ ﻣﻠــف اﻟﻠــوغ ﻣــن‬
‫ﺟدﻳــد‪ٕ .‬واذا ﻟــم ﺗﻛــن ﻫﻧــﺎك ﻋﻣﻠﻳــﺎت ‪ CHKP‬إﺿــﺎﻓﻳﺔ ﻟﺗوﻟﻳــد آﺧــر رﻗــم ﺗﻐﻳﻳــر‬
‫ﺣــدث ‪ SCN‬ﻓــﺎن ﻛﺎﺗــب اﻟﻠــوغ ﻓــﻲ ﻫــذﻩ اﻟﺣﺎﻟــﺔ ﻳﺣﻣــﻝ ﺑﺟﻬــد إﺿــﺎﻓﻲ ﻓــﻲ ﺗوﻟﻳــد‬
‫اﻟرﻗم وﺗﻌدﻳﻝ رأس ﻣﻠﻔﺎت اﻟداﺗﺎ‪.‬‬

‫‪ ‬ﻛﺎﺗب اﻷرﺷﻳف ) ‪( ARCH‬‬

‫ﻣﻬﻣﺗــﻪ اﻷﺳﺎﺳــﻳﺔ ﺗﺗرﻛــز ﻓــﻲ ﻋﻣــﻝ ﻧــﺳﺦ اﺣﺗﻳﺎطﻳـﺔ ﻣــن ﻣﻠﻔــﺎت اﻟﻠــوغ إﻟــﻰ ﻣﻠﻔــﺎت‬
‫اﻷرﺷــﻳف واﻟﺗــﻲ ﺗﺣﻔــظ ﻋﻠــﻰ ﺷ ـرﻳط أو دﻳــﺳك آﺧــر‪ .‬ﺗﺑــدأ ﺗﻠــك اﻟوظﻳﻔــﺔ ﻋﻧــدﻣﺎ‬
‫ﺗﻛــون اﻟــداﺗﺎﺑﻳز ﻓــﻲ وﺿــﻌﻳﺔ اﻷرﺷــﻳف وذﻟــك ﻋــن طرﻳــق اﻷﻣــر ‪Alter log‬‬
‫‪ System Archive‬أو أﺗوﻣﺎﺗﻳﻛﻳﺎً ﻋﻧدﻣﺎ ﻳﺗم ﻓﺗﺢ ﻣﺛﺎﻝ اﻷورﻛﻝ ﺑواﺳطﺔ ﻣﻠـف‬
‫اﻟﺑﺎرﻣﺗر واﻟذي ﻳﻛون ﻣوﺟوداً ﻓﻳﻪ اﻟﺑﺎرﻣﺗر ‪log_archive_start = true‬‬

‫‪36‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ .2‬وظﺎﺋف اﻟرﻗﺎﺑﺔ وﻣﺗﺎﺑﻌﺔ اﻷداء ‪:Monitoring Processes‬‬

‫ﺗوﺟــد ﺛﻼﺛــﺔ ﻋﻣﻠﻳــﺎت رﺋﻳــﺳﻳﺔ ﻓــﻲ ﺗﻠــك اﻟﻣﺟﻣوﻋــﺔ ﻓﺂﻣــﺎ اﻷوﻟــﻰ ﻓﻬــﻲ ) ‪(SMON‬‬
‫ودورﻫﺎ ﺗﺣرﻳر ﻣﺛﺎﻝ اﻷورﻛﻝ ﻣن أﻳـﺔ اﺧﺗﻧﺎﻗـﺎت وأﺧطـﺎء أﺛﻧـﺎء ﺑـدء ﺗـﺷﻐﻳﻝ اﻟﻣﺛـﺎﻝ‬
‫أو ﻓﻲ أي وﻗت ﻳﺗطﻠب ذﻟك أﻣـﺎ اﻟوظﻳﻔـﺔ اﻟﺛﺎﻧﻳـﺔ )‪ (PMON‬ﻓﻬـﻲ اﻟوظﻳﻔـﺔ اﻟﺗـﻲ‬
‫دورﻫﺎ ﺗﺣرﻳر وﻣﺳﺢ ﻣﺎ ﻳﻧﺟم ﻋن ﻓﺷﻝ أﻳﺔ ﻋﻣﻠﻳﺔ ﻣن ﻋﻣﻠﻳﺎت اﻟﻣﺳﺗﺧدم‬

‫‪ ‬ﻣراﻗﺑﺔ اﻟﻧظﺎم ‪(SMON ) System Monitor‬‬

‫وظﻳﻔﺔ اﻟﻌﻣﻠﻳـﺔ ﻣراﻗﺑـﺔ ﻣﺛـﺎﻝ اﻷورﻛـﻝ واﻟﺗﻌﺎﻣـﻝ ﻣـﻊ أﻳـﺔ أﺧطـﺎء ﺗﺣـدث ﻧﺗﻳﺟـﺔ ﻓـﺗﺢ‬
‫اﻟﻣﺛــﺎﻝ ﻓﻬــﻲ ﻋﻠــﻰ ﺗﻘــوم ﻋﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ ﺑﺎﻟﺗﺄﻛــد ﻣــن ﻓــﺗﺢ اﻟﻣﺛــﺎﻝ ﻗــد ﺗــم ﺑــﺻورة‬
‫طﺑﻳﻌﻳﺔ ٕواذا ﻟم ﻳﻛن ﺗﺣﺎوﻝ إﺟـراء إﺻـﻼح واﺳـﺗﻌﺎدة اﻟوﺿـﻊ ﻋﻣـﺎ ﻛـﺎن ﻋﻠﻳـﻪ ﻗﺑـﻝ‬
‫ﺣدوث اﻟﺧطﺄ ﻓﺈذا ﻟم ﻳﻛن اﻟﻣﺛﺎﻝ ﻗـد ﺗـم إﻏﻼﻗـﻪ ﺑـﺻورة طﺑﻳﻌﻳـﺔ ‪ShutDown‬‬
‫‪ normal‬ﻓﺈﻧﻪ ﻗـد ﻳﻛـون ﻫﻧـﺎك ﺑﻌـض اﻟﻣﻌـﺎﻣﻼت واﻟﺗـﻲ ﺗـﺳﺟﻝ ﺑﻌـد ﻋﻠـﻰ ﻣﻠﻔـﺎت‬
‫اﻟــداﺗﺎ وﺑﺎﻟﺗــﺎﻟﻲ ﺗﺗطﻠــب إﻋــﺎدة اﻻﺳــﺗرﺟﺎع وﺗﺣرﻳــر ﻋﻣﻠﻳــﺎت اﻟﻔﻬرﺳــﺔ وﻧﻘــﻝ ﺗﻠــك‬

‫‪37‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟﻣﻌــﺎﻣﻼت ﻛﻣــﺎ ﻳﻧﺑﻐــﻲ ﺗﺣرﻳــر اﻟﻘطﺎﻋــﺎت اﻟﻣؤﻗﺗــﺔ ‪Temporary Segments‬‬


‫وﻧﻘﻝ ﻣﺎ ﻋﻠﻳﻬﺎ إﻟﻰ ﻣﻠﻔﺎت اﻟداﺗﺎ وﻫﻛذا‪.‬‬

‫ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ ﻓﺎﻟوظﻳﻔﺔ اﻟﺳﺎﺑﻘﺔ ﻣﻌدة ﻟﻛـﻲ ﺗﻌﻣـﻝ ﻓـﻲ ﺣﺎﻟـﺔ إذا ﻣـﺎ ﻛـﺎن‬
‫اﻟﻣﺛﺎﻝ ﻓﻲ ﺣﺎﺟﺔ إﻟﻰ ﺑﻌض اﻟﺗﺣرﻳر واﻹﺧﻼء ﻓﻣﺛﻼً ﺗﻘوم اﻟوظﻳﻔﺔ ﺑـﺎﻟﺗﺣﻘق ﻣـن‬
‫وﺟـــود ﻗطﺎﻋـ ــﺎت ﻣؤﻗﺗـ ــﺔ ﻏﻳـ ــر ﻣـ ــﺳﺗﻐﻠﺔ ﻓﺗﻘـ ــوم ﺑﺗﺣرﻳـ ــر ﺗﻠـ ــك اﻟﻣـ ــﺳﺎﺣﺎت ودﻣـ ــﺞ‬
‫اﻟﻣﺳﺎﺣﺎت ﻛﻣﺎ ﺗﻌﻣﻝ اﻟوظﻳﻔﺔ أﻳﺿﺎ ﻓﻲ ﺣﺎﻟﺔ اﺣﺗﻳﺎج ﻛﺎﺗب اﻟداﺗﺎ ‪Database‬‬
‫‪ Tempory‬ﻓﻬـ ــو ﻳطﻠـ ــب ﻣـ ــن‬ ‫‪ Writer‬إﻟـ ــﻰ ﻣـ ــﺳﺎﺣﺎت ﻣؤﻗﺗـ ــﺔ ‪Sgments‬‬
‫اﻟوظﻳﻔﺔ ﺗﺣرﻳر ٕواﺧﻼء ﺑﻌض اﻟﻣﺳﺎﺣﺎت اﻟﻣﺳﺗﻐﻠﺔ اﻟﻼزﻣﺔ ﻷداء ﻋﻣﻠﻪ ﺑﻛﻔﺎءة‪.‬‬

‫‪38‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬ﻣراﻗب اﻟﻌﻣﻠﻳﺎت ‪( PMON) Process Monitor‬‬

‫ﻳﺧـ ــﺻص وﻗﺗـ ــﻪ ﻛﻠـ ــﻪ ﻟﻌﻣﻠﻳـ ــﺔ اﻹﺧـ ــﻼء واﻟﺗﺣرﻳـ ــر ﺑﻌـ ــد إﺗﻣـ ــﺎم ﻋﻣـ ــﻝ ﻋﻣﻠﻳـ ــﺎت‬
‫اﻟﻣﺳﺗﺧدم ‪ User Processes‬ﻓﻬﻲ ﻋﻠﻰ ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﺗﻘوم ﺑﺎﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬إزاﻟﺔ أرﻗﺎم اﻟﻌﻣﻠﻳﺎت اﻟﺗﻲ اﻧﺗﻬت‪.‬‬

‫‪ ‬إﺧﻼء ٕوازاﻟﺔ أﻳﺔ أﻗﻔﺎﻝ ‪ Locks‬ﺗﻛون ﻗد ﻋﻣﻠﺗﻬﺎ ﺗﻠك اﻟﻌﻣﻠﻳﺎت‪.‬‬

‫‪ ‬إ ازﻟــﺔ ٕواﺧــﻼء أﻳــﺔ ﻋﻧﺎﺻــر ﻣــن ذاﻛ ـرة اﻟﻛــﺎش ﺗﻛــون ﻧﺎﺗﺟــﺔ ﻋــن ﻋﻣﻠﻳــﺎت‬
‫ﺳﺎﺑﻘﺔ‪.‬‬

‫‪39‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻫﻴﻜﻠﻴﺔ ﺍﻟﺬﺍﻛﺮﺓ ‪Memory Structure‬‬


‫ﺗــﺳﺗﺧدم أو ارﻛــﻝ ﻣﻌﻣﺎرﻳــﺔ وﺗﻘــﺳﻳﻣﺎً ﻣﻌﻳﻧــﺎً ﻟﻠــذاﻛرة ﻓــﻲ اﻟــﺳﻳرﻓر اﻟــذي ﻳﺣﺗــوى ﻋﻠــﻰ ﻗﺎﻋــدة‬
‫اﻟﺑﻳﺎﻧﺎت وﺗﻣﻛـن ﺗﻠـك اﻟﻣﻌﻣﺎرﻳـﺔ ﻣـن أن ﺗﻌﻣـﻝ ﻣﺟﻣوﻋـﺔ ﻣـن اﻟﻌﻣﻠﻳـﺎت ﻓـﻲ اﻟـذاﻛرة ﻋﻠـﻰ‬
‫ﺗﺄﻣﻳن وﺻوﻝ اﻟﻌدﻳد ﻣن اﻟﻣﺳﺗﺧدﻣﻳن إﻟﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت واﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ ﺑﺷﻛﻝ ﻓﻌﺎﻝ‪.‬‬

‫ﺗﺗﻛون ﻣﻌﻣﺎرﻳﺔ اﻟذاﻛرة ﻷوراﻛﻝ ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬ﻣﻧطﻘﺔ اﻟﻧظﺎم اﻟﺷﺎﻣﻠﺔ )‪ System Global Area (SGA‬وﺗﺗﻛون ﻣن‪:‬‬

‫‪ o‬اﻟذاﻛرة اﻟﻣؤﻗﺗﺔ ﻟﺗﺧزﻳن ﺑﻠوﻛﺎت اﻟداﺗﺎﺑﻳز ‪Database buffer cache‬‬

‫‪ o‬اﻟذاﻛرة اﻟﻣؤﻗﺗﺔ ﻟﺗﺧزﻳن اﻟرﻳﻳدو ﻟوغ ‪Redo Log buffer‬‬

‫‪ o‬اﻟﻣﻧطﻘﺔ اﻟﻣﺷﺗرﻛﺔ ‪Shared pool‬‬

‫‪ o‬اﻟﻣﻧطﻘﺔ ‪Large pool‬‬

‫‪ ‬ﻣﻧطﻘﺔ اﻟﺑراﻣﺞ اﻟﺷﺎﻣﻠﺔ )‪ Program Global Areas (PGA‬وﺗﺗﻛون ﻣن‪:‬‬


‫‪Stack areas o‬‬
‫‪Data areas o‬‬
‫وﺗﺗﺿﺢ ﻣﻌﻣﺎرﻳﺔ اﻟذاﻛرة وﻋﻼﻗﺗﻬﺎ ﺑﺎﻟﻌﻣﻠﻳﺎت ﻓﻲ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ ‪:‬‬

‫ﻣﻧطﻘﺔ اﻟﻧظﺎم اﻟﺷﺎﻣﻠﺔ ‪:( System Global Area◌ٍ ) SGA‬‬


‫‪40‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻛــﻝ ﻣﺛــﺎﻝ ﻣــن أو ارﻛــﻝ ﻳﺗﻛــون ﻣــن ﺟــزء ﺿــﺧم ﻣــن اﻟــذاﻛرة ﺗﻌﻳﻧــﻪ أو ارﻛــﻝ ﻳــﺳﻣﻰ ﻣﻧطﻘــﺔ‬
‫اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ ‪ System global Area‬وﻳــﺗم إﺟ ـراء ﻋﻣﻠﻳــﺎت أروا ﻛ ـﻝ ﻓﻳــﻪ ﻛــﻲ‬
‫ﻳﺳﺗطﻳﻊ اﻟﻌدﻳد ﻣن اﻟﻣﺳﺗﺧدﻣﻳن اﻟﺗﻌﺎﻣﻝ ﻣﻊ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت‪ .‬وﺗﺄﺧـذ ﺗﻠـك اﻟﻣﻧطﻘـﺔ ﺣﻳـ اًز‬
‫ﻣن اﻟذاﻛرة ﻳﺗراوح ﺑﻳن ﻋدد ﻣﺣدود ﻣن اﻟﻣﻳﺟﺎ ﺑﺎﻳت ﻓﻲ ﺣﺎﻟﺔ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت ﻷﻏـراض‬
‫اﻻﺧﺗﺑﺎر ﺑﻳﻧﻣﺎ ﻳﺑﻠﻎ ﻓـﻲ اﻷﻧظﻣـﺔ اﻟﻛﺑﻳـرة اﻟﻣﻌﻘـدة ﻣـﺳﺎﺣﺎت ﺗﻘـدر ﺑﺎﻟﺟﻳﺟـﺎ ﺑﺎﻳـت‪ .‬ﺗﺗﻛـون‬
‫ﻣﻧطﻘــﺔ اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ ﻣــن ﻣﺟﻣوﻋــﺔ ﻣــن ﻣﻧــﺎطق اﻟــذاﻛرة واﻟﺗــﻲ ﻳــﺗم ﻣــﺷﺎرﻛﺗﻬﺎ ﻣــن ﻗﺑــﻝ‬
‫اﻟﻣﺳﺗﺧدﻣﻳن واﻟرﺳم اﻟﺗﺎﻟﻲ ﻳوﺿﺢ ذﻟك‪:‬‬

‫‪ o‬ﻣﻧطﻘﺔ اﻟﺟﺎﻓﺎ ‪: Java Pool‬‬

‫ﻣﻘد اًر ﺛﺎﺑت ﻣن اﻟذاﻛرة ﻳﺧﺻص ﻟﻠﺟﺎﻓﺎ اﻟﺗﻲ ﺗﻌﻣﻝ ﻋﻠﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ‪JVM‬‬

‫‪ o‬ﻣﻧطﻘﺔ ‪Large Pool:‬‬

‫ﺗﺧﺻص ﺗﻠك اﻟﻣﻧطﻘـﺔ ﻟﻌﻣﻠﻳـﺎت دﺧـوﻝ اﻟﻌدﻳـد ﻣـن اﻟﻣـﺳﺗﺧدﻣﻳن ‪ Session‬ﻋﻠـﻰ‬


‫ﻗﺎﻋ ـ ــدة اﻟﺑﻳﺎﻧ ـ ــﺎت ﻛﻣ ـ ــﺎ ﻳ ـ ــﺳﺗﺧدﻣﻬﺎ ﺑرﻧ ـ ــﺎﻣﺞ ‪ RMAN‬ﻓ ـ ــﻲ ﻋﻣﻠﻳ ـ ــﺔ اﺧ ـ ــذ اﻟﻧ ـ ــﺳﺦ‬
‫اﻻﺣﺗﻳﺎطﻳﺔ‪.‬‬

‫‪ o‬ﻣﻧطﻘﺔ ‪: Shared Pool‬‬

‫ﺗﺣﺗوى ﺗﻠك اﻟﻣﻧطﻘﺔ ﻋﻠﻰ اﻹﺟراءات اﻟﺗﻲ ﻳﺗﺷﺎرك ﻓﻳﻬﺎ اﻟﻌدﻳد ﻣن اﻟﻣـﺳﺗﺧدﻣﻳن‬
‫‪ Shared Procedures‬و ﻣﻌﻠوﻣ ــﺎت اﻟﻛ ــﺎﺗﻠوغ ‪ dictionary caches‬و‬
‫اﻟﻛﻳرﺳور‪ ....‬اﻟﺦ‬
‫‪41‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫واﻟﺟدوﻝ اﻟﺗﺎﻟﻲ ﻳوﺿﺢ أﻫم اﻟﺑﺎرﻣﺗر اﻟﺗﻲ ﺗؤﺛر ﻋﻠﻰ ﺗﺣدﻳد ﺷﻛﻝ ‪: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‬‬

‫‪42‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟذاﻛرة اﻟﻣؤﻗﺗﺔ ﻟﺗﺧزﻳن ﺑﻠوﻛﺎت اﻟداﺗﺎﺑﻳز ‪Database buffer cache‬‬

‫ﻧﺣن اﻵن ﻧزور أﻛﺑر وأﻫم ﻗﺳم إﻧﻬـﺎ ﻏرﻓﺔ اﻟﻛـﺎش اﻟﻣﺧﺻـﺻﺔ ﻟﺗﺧـزﻳن ﺑﻠوﻛـﺎت ﻗﺎﻋـدة‬
‫اﻟﺑﻳﺎﻧﺎت ‪ Database buffer cache‬ﻣؤﻗﺗﺎً‪ .‬ﻳﻣﻛﻧﻧﺎ ﺗﺻور ﻋﻣﻠﻬـﺎ ﻛـﺳﺎﺣﺔ اﻧﺗظـﺎر أو‬
‫ﻧــزﻝ ﺑــﻳن اﻟﻣــﺳﺗﺧدم وﺑــﻳن ﻣﻠﻔــﺎت اﻟــداﺗﺎ اﻟﻣﻛوﻧــﺔ ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﻔﻳﻬــﺎ ﺗﻧﺗظــر ﺑــﺻورة‬
‫ﻣؤﻗﺗﺔ ﺑﻠوﻛﺎت اﻟداﺗﺎ واﻟﻣﻛوﻧﺔ ﻣن ﺳـﺟﻼت ﻣـن اﻟﺟـداوﻝ اﻟﻣﺧﺗﻠﻔـﺔ اﻟﺗـﻲ ﻳـﺗم اﺳـﺗدﻋﺎءﻫﺎ‬
‫ﻟﺣــﺳﺎب ﻣــﺳﺗﺧدم ﻣﻌــﻳن أو اﻟﺑﻠوﻛــﺎت اﻟﺗــﻲ ﺳــﻳﺗم إرﺟﺎﻋﻬــﺎ ﻣـرة أﺧــرى إﻟــﻰ اﻟﻣﻠﻔــﺎت ﺑﻌــد‬
‫إﺗﻣﺎم وﺗﺄﻛﻳد اﻟﺗﻌدﻳﻼت اﻟﺗﻲ ﺗﻣـت ﻋﻠﻳﻬـﺎ‪ .‬وﻫﻧـﺎ ﻳﺗﻌـﻳن ﺗﺣدﻳـد ﺗﻠـك اﻟﻐرﻓـﺔ ﺑﻛـﻝ دﻗـﺔ ﻓﻠـو‬
‫ﻛـﺎن اﻟﺣﺟـم ﻋﻠــﻰ ﺳـﺑﻳﻝ اﻟﻣﺛــﺎﻝ أﻗـﻝ ﻣﻣــﺎ ﻳﻧﺑﻐـﻲ ﻓــﺳﻳﺗﻌﻳن ﻋﻠﻳﻧـﺎ أن ﻧﻧﺗظــر طـوﻳﻼً ﻟﻧــرى‬
‫ﻧﺗﻳﺟــﺔ ﺗﻧﻔﻳــذ ﺟﻣــﻝ اﺳــﺗﻌﻼم وﻏﻳرﻫــﺎ وﻟــو ﻛــﺎن اﻟﺣﺟــم أﻛﺑــر ﻣــن اﻟــﻼزم ﻓــﺳﻧرﻫق ﺑﻘﻳــﺔ‬
‫ﻋﻣﻠﻳﺎت أوراﻛﻝ ورﺑﻣﺎ ﻻ ﺗﻌﻣﻝ ﻣن اﻷﺻﻝ!‪.‬‬

‫وﺣﻳ ــث أن ﺳ ــﺎﺣﺔ اﻻﻧﺗظ ــﺎر ﻻ ﺗوﺟ ــد ﺑﻬ ــﺎ أﻣ ــﺎﻛن ﺗ ــﺳﻊ ﻟﻠﻛ ــﻝ ﻳﺑ ــدو اﻟﻘـ ـرار ﺻ ــﻌﺑﺎً وﻫ ــو‬
‫ﻣﺣﺎوﻟﺔ طرد ﺑﻌض اﻟﻧزﻻء واﺳﺗﻘﺑﺎﻝ ﻗﺎدﻣﻳن ﺟدد‪.‬‬

‫ﻫﻧﺎ ﺗﺗﺧذ أوراﻛﻝ اﻟﻘرار اﻟﺻﻌب وﻓﻘﺎً ﻟﻣﻧطق ﺑﺳﻳط وﻫو أن ﻳﺑﻘـﻰ ﻛـﻝ ﻣـﺎ ﻛـﺎن ﻟـﻪ ﻓﺎﺋـدة‬
‫وﻳرﺣــﻝ ﻣــن ﻻ ﻳﻌﻣــﻝ ‪ 0LRU‬ﻓﺗﻧــﺷﺊ أو ارﻛــﻝ ﻗﺎﺋﻣــﺔ ﺗــﺳﻣﻰ اﻷﻛﺛــر وﻋﻧــدﻣﺎ ﻳــﺳﺗدﻋﻰ‬
‫ﺳﺟﻝ ﻣن ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑواﺳطﺔ ﺟﻣﻠﺔ اﺳﺗﻌﻼم ﻓﺈﻧﻪ ﻳذﻫب ﻣﺑﺎﺷرة إﻟﻰ ﻣﻧطﻘﺔ اﻟـذاﻛرة‬
‫واﻟﺗــﻲ أطﻠﻘﻧــﺎ ﻋﻠﻳﻬــﺎ ﺳــﺎﺣﺔ اﻻﻧﺗظــﺎر وﻳوﺿــﻊ ﻓــﻲ ﻗﺎﺋﻣــﺔ اﻷﻛﺛــر اﺳــﺗﺧداﻣﺎ ﻓــﻲ ﻧﻬﺎﻳــﺔ‬
‫اﻟﻘﺎﺋﻣﺔ‪ .‬وﻛﻠﻣﺎ اﺳﺗﺧدم ذﻟك اﻟﺳﺟﻝ ﻳﺗم ﺗرﻗﻳﺗﻪ إﻟﻰ ﺗرﺗﻳب أﻋﻠـﻰ ﻓـﻲ اﻟﻘﺎﺋﻣـﺔ ﻓـﺈذا اﻣﺗﻠـﺊ‬
‫اﻟﻛﺎش ﺑﺑﻠوﻛﺎت ﺟدﻳدة ﻧﺗﻳﺟﺔ ﺟﻣﻝ اﺳﺗﻌﻼم أﺧرى وأوﺷـك اﻟﻛـﺎش ﻋﻠـﻰ اﻻﻣـﺗﻼء ﺗﻣﺎﻣـﺎً‬
‫ﺑﻧﺎء ﻋﻠﻰ اﻟﻧظر ﻓﻲ اﻟﻘﺎﺋﻣﺔ اﻟﺳﺎﺑﻘﺔ ﺑﺈﻋﺎدة اﻟﻛﺗﺎﺑﺔ ﻋﻠـﻰ اﻷﺟـزاء‬
‫ﻓﺎن أوراﻛﻝ ﺗﺗﺧذ ﻗ ار اًر ً‬
‫اﻟﻐﻳر ﻣﺳﺗﺧدﻣﺔ ﺣﺎﻟﻳﺎً‪.‬‬

‫ﻳﺗوﻟﻰ ﻛﺎﺗب اﻟﺑﻠوك وﻫو ﻋﻣﻠﻳﺔ ﻣن ﻋﻣﻠﻳﺎت اﻷورﻛﻝ اﻟﺗﻲ ﺗﻌﻣﻝ ﻓﻲ اﻟﺧﻠﻔﻳﺔ ﻛﻣﺎ ذﻛرﻧـﺎ‬
‫ﻣــن ﻗﺑــﻝ ﺑﻛﺗﺎﺑــﺔ ﺗﻠــك اﻟﺑﻠوﻛــﺎت إﻟــﻰ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ ‪ Data Files‬و اﻟﻣﻛوﻧــﺔ ﻟﻘﺎﻋــدة‬
‫اﻟﺑﻳﺎﻧــﺎت وﻫﻧــﺎ ﺗــدار ﺗﻠــك اﻟﺑﻠوﻛــﺎت اﻟﺗــﻲ ﺗﺣﺗــﺎج ﻹﻋﺎدﺗﻬــﺎ إﻟــﻰ اﻟﻣﻠﻔــﺎت ﺑواﺳــطﺔ اﻟﻛﺎﺗــب‬
‫‪ DBWR‬وﻳطﻠق ﻋﻠﻳﻬﺎ ﻣﺻطﻠﺢ ‪.Dirty Blocks‬‬

‫‪43‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻟذاﻛرة اﻟﻣؤﻗﺗﺔ ﻟﺗﺧزﻳن اﻟرﻳﻳدو ﻟوغ ‪:Redo Log buffer‬‬

‫ﺗﺧزن ﻓﻳﻬﺎ ﺑـﺻورة ﻣؤﻗﺗـﺔ ﻣﻌﻠوﻣـﺎت اﻟﺗ ارﺟـﻊ واﻹﻋـﺎدة ‪ Redo‬ﻗﺑـﻝ ﻧﻘﻠﻬـﺎ ﺑواﺳـطﺔ ﻛﺎﺗـب‬
‫اﻟــوغ ‪ LGWR‬إﻟــﻰ ﻣﻠﻔــﺎت اﻟرﻳــدو ‪ OnLine Redo Log‬وﺣﻳــث أن اﻟﺗﻌﺎﻣــﻝ ﻣــﻊ‬
‫اﻟـ ــذاﻛرة ﻳﻛـ ــون أﺳـ ــرع ﻣـ ــن اﻟﺗﻌﺎﻣـ ــﻝ ﻣـ ــﻊ اﻟدﻳـ ــﺳك ﻓـ ــﺎن اﺳـ ــﺗﺧدام ﺗﻠـ ــك اﻟـ ــذاﻛرة اﻟﻣؤﻗﺗـ ــﺔ‬
‫ﻟﻣﻌﻠوﻣﺎت اﻟﺗراﺟﻊ ﻳؤدى إﻟﻰ ﺳرﻋﺔ اﻟﺗﻌﺎﻣﻝ ﻣﻊ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪ .‬أن اﻟداﺗﺎ ﻟن ﺗﺑﻘـﻰ ﻓـﻲ‬
‫ﺗﻠك اﻟﻣﻧطﻘـﺔ ﻟﻼﺑـد وﻓـﻰ اﻟﺣﻘﻳﻘـﺔ ﻓـﺎن ﻣﺣﺗوﻳﺗﻬـﺎ ﺗﻔـرغ ﻛـﻝ ﺛـﻼث ﺛـوان أو ﻋﻧـدﻣﺎ ﻳـﺻدر‬
‫أﻣــر اﻟﺗﺄﻛﻳــد ‪ Commit‬أو ﻓــﻲ ﺣﺎﻟــﺔ اﻣﺗﻼءﻫــﺎ ﺑﺛﻠــث ﺣﺟﻣﻬــﺎ‪ .‬ﺣﺟــم ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻣــن‬
‫اﻟـ ــذاﻛرة ﻳـ ــﺗﺣﻛم ﻓﻳـ ــﻪ اﻟﺑـ ــﺎرﻣﺗر ‪ LOG_BUFFER‬وﻳﻌﺗﺑـ ــر اﻟﺣـ ــد اﻷﻗـ ــﻝ ﻣـ ــن ﺗﻠـ ــك‬
‫اﻟﻣــﺳﺎﺣﺔ ﻫــو أرﺑﻌــﺔ أﺿــﻌﺎف ﺣﺟــم ﺑﻠوﻛــﺎت اﻟــداﺗﺎﺑﻳز وﻳﻣﻛــن ﺗﻘــدﻳرﻩ ﺑــﺎﻟﻛﻳﻠو ﺑﺎﻳـت ﻋــن‬
‫طرﻳق اﻟﻣﻌﺎدﻟﺔ ) ‪ *128‬ﻋدد ‪( CPUs‬‬

‫ﻣﻧطﻘﺔ اﻟﺟﺎﻓﺎ ‪:Java Pool‬‬

‫ﺗﺧــزن ﻓﻳﻬــﺎ ﺑــﺻورة ﻣؤﻗﺗــﺔ ﻛــﻝ ﻣــﺎ ﻳﺗﻌﻠــق ﺑــﺄﻛواد اﻟﺟﺎﻓــﺎ واﻟــداﺗﺎ‪ .‬ﺗــﺳﺗﺧدم ﺗﻠــك اﻟﻣﻧطﻘــﺔ‬
‫ﺑط ــرق ﻣﺧﺗﻠﻔ ــﺔ وﻳﺗوﻗ ــف ذﻟ ــك ﻋﻠ ــﻰ اﻷﺳ ــﻠوب اﻟ ــذي ﻳﻌﻣ ــﻝ ﺑ ــﻪ اﻟ ــﺳﻳرﻓر وﺗوﺟ ــد وﺳ ــﻳﻠﺔ‬
‫ﻷو ارﻛــﻝ ﺗﻌطﻳﻧــﺎ إﺣــﺻﺎﺋﻳﺎت ﻋــن طرﻳﻘــﺔ اﺳــﺗﺧدام ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻟﻠــذاﻛرة وﺗﺗﻧﺑــﺄ ﺑﻣــدى‬
‫ﺗــﺄﺛﻳر اﻟﺗﻐﻳﻳــر ﻓــﻲ ﺣﺟــم ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻋﻠــﻰ اﻷداء وﺗﻔﻌــﻝ ﺗﻠﻘﺎﺋﻳــﺎً ﻋﻧــدﻣﺎ ﻳﻛــون اﻟﺑــﺎرﻣﺗر‬
‫‪ statistics_level‬ﻋﻠﻰ اﻟوﺿﻊ ‪TYPICAL‬‬

‫اﻟﻣﻧطﻘﺔ اﻟﻣﺷﺗرﻛﺔ ‪:Shared Pool‬‬

‫ﺗﻌﺗﺑر ﺗﻠك اﻟﻣﻧطﻘﺔ ﻣن اﻟذاﻛرة ﻣن أﻫم ﻣﻧﺎطق اﻟـ ‪ SGA‬واﻟﺗﻲ ﺗؤﺛر ﻋﻠـﻰ أداء اﻟﻧظـﺎم‬
‫ﻛﻛــﻝ ﻓــﺻﻐر ﺣﺟــم ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻋــن اﻟﺣــد اﻟﻣﻌﻘــوﻝ ﻳــؤدى اﻟﺗــﻲ ﺗﻘﻠﻳــﻝ اﻷداء ﺑدرﺟــﺔ‬
‫ﻣﻠﺣوظﺔ ورﺑﻣﺎ ﺗﻌطﻝ اﻟﻧظﺎم ﺗﻣﺎﻣﺎً ﺑﻳﻧﻣﺎ ﺗﺧﺻﻳص ﺣﻳـز أﻛﺑـر ﻣـن اﻟﺣـد اﻟﻣﻼﺋـم ﻳـؤدي‬
‫إﻟــﻰ ﻧﻔــس اﻟﻛﺎرﺛــﺔ‪ .‬وﻟﻛــن ﻣــﺎ ﻫــﻲ ﺗﻠــك اﻟﻣﻧطﻘــﺔ‪ .‬إﻧﻬــﺎ ﺑﺑــﺳﺎطﺔ اﻟﻣﻛــﺎن اﻟــذي ﺗﺧــزن ﻓﻳــﻪ‬
‫أو ارﻛــﻝ ﺑــﺻﻔﺔ ﻣؤﻗﺗــﺔ اﻷﻛ ـواد واﻟﺑﻳﺎﻧــﺎت اﻟﺧﺎﺻــﺔ اﻟﻣﺗﻌﻠﻘــﺔ ﺑــﺎﻟﺑراﻣﺞ ﻓﻌﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ‬
‫ﻋﻧـدﻣﺎ ﻧﻧﻔـذ ﺟﻣﻠـﺔ اﺳـﺗﻌﻼم ﻓـﺈن أو ارﻛـﻝ ﺳــوف ﺗﺟﻬـز ﺟﻣﻠـﺔ اﻻﺳـﺗﻌﻼم ﺗﻠـك وﺗﺣﻘـق ﻣــن‬
‫ﺳﻼﻣﺔ اﻷﻣر ﺛم ﺗرى ﻫﻝ ﻳوﺟـد اﺳـﺗﻌﻼم آﺧـر ﺑـﻧﻔس اﻟـﺻﻳﻐﺔ وﺗﺧـزن ﻧﺗـﺎﺋﺞ ذﻟـك ﻣؤﻗﺗـﺎ‬
‫ﻓﻲ ﺗﻠك اﻟﻣﻧطﻘﺔ‪ .‬ﻟو ﻓرﺿﻧﺎ أن ﻫﻧﺎك أﻛﺛـر ﻣـن ‪ 1000‬اﺗـﺻﺎﻝ ﺑﻘﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻛﻠﻬـﺎ‬

‫‪44‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺗﻧﻔــذ ﻧﻔــس ﺟﻣﻠــﺔ اﻻﺳــﺗﻌﻼم ‪ 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‬‬

‫‪45‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫وأوراﻛﻝ ﻋﻠﻰ اﺗﺻﺎﻝ داﺋم ﺑﺎﻟﻛﺗﺎوج ﻣن ﺧـﻼﻝ ﺗﻧﻔﻳـذ ﺟﻣـﻝ ‪ 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.‬‬

‫‪46‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺗﻨﻔﻴﺬ ﺍﳌﻌﺎﻣﻼﺕ ﰲ ﺃﻭﺭﺍﻛﻞ‬


‫اﻟﻣﺛﺎﻝ اﻟﺣﺎﻟﻲ ﻳﻠﺧـص ﻛﻳﻔﻳـﺔ ﺗﻌﺎﻣـﻝ أوراﻛـﻝ ﻟﻣﻌﺎﻣﻠـﺔ ‪ Transaction‬وﻗﺑـﻝ أن ﻧﺑـدأ‬
‫ﻓﻲ اﻟﻣﺛﺎﻝ ﻳﺗﻌﻳن ﻋﻠﻳﻧﺎ ﺗوﺿﻳﺢ ﻣﻌﻧﻰ ﺟدﻳد وﻫو ﻣﻔﻬوم اﻟﻣﻌﺎﻣﻠﺔ‪.‬‬

‫ﻳ ــﺻف ﻣ ــﺻطﻠﺢ اﻟﻣﻌﺎﻣﻠ ــﺔ ‪ Transaction‬ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻷﻋﻣ ــﺎﻝ اﻟﻣرﺗﺑط ــﺔ ﻛوﺣ ــدة‬
‫واﺣدة ﻧرﻳـد أن ﺗﻧﻔـذﻫﺎ أو ارﻛـﻝ وﺗﺗﻛـون اﻟﻣﻌﺎﻣﻠـﺔ ﻣـن واﺣـد أو اﻛﺛـر ﻣـن ﺟﻣـﻝ اﻟ ـ ‪SQL‬‬
‫واﻟﺗــﻲ ﺗﻧﺗﻬــﻲ داﺋﻣــﺎً ﺑﺟﻣﻠــﺔ ﻟﺗﺄﻛﻳــد ﺗﻧﻔﻳــذﻫﺎ ﺗــﺳﻣﻰ ﺟﻣﻠــﺔ اﻟﺗﺄﻛﻳــد ‪ Commit‬أو ﻟﻠﺗ ارﺟــﻊ‬
‫ﻋن ﺗﻧﻔﻳذﻫﺎ ‪ .Rollback‬إن ﻣﺛﻠﻧﺎ ﻳﻔﺗرض أﻧﻧﺎ ﻧﻌﻣﻝ ﻓـﻲ ﺑﻳﺋـﺔ ﻋﻣـﻝ )اﻟﻣـزود ‪ /‬اﻟﺧـﺎدم‬
‫( ‪ client /server‬ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬

‫وﻟذﻟك ﻳﻛون ﻣن اﻟﺿروري ﻫﻧﺎ اﺳﺗﺧدام ﺑرﺗوﻛوﻝ اﻻﺗﺻﺎﻝ اﻟﺷﺑﻛﻲ ‪.SQL*Net‬‬

‫‪ ‬ﻳﺷﻐﻝ ﻣﺳﺗﺧدم ﺗطﺑﻳـق ﻣـن اﻟﺗطﺑﻳﻘـﺎت وﻟـﻳﻛن ‪ SQLPLUS‬وﻳﺣـﺎوﻝ اﻻﺗـﺻﺎﻝ‬


‫ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت أو ارﻛــﻝ وﻫﻧــﺎ اﻟﺗطﺑﻳــق ﻳﺣــﺎوﻝ ﻋﻣــﻝ ﻗﻧــﺎة اﺗــﺻﺎﻝ ﺑــﻳن أو ارﻛــﻝ‬
‫وﺑﻳن اﻟﻣﺳﺗﺧدم ﻣن ﺧﻼﻝ ﺑروﺗوﻛوﻝ اﻻﺗﺻﺎﻝ اﻟﺷﺑﻛﻲ ‪.SQL*Net‬‬

‫‪47‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬اﻟــﺳﻳرﻓر ﻳﺗﻠﻘــﻰ اﺗــﺻﺎﻝ اﻟﻣــﺳﺗﺧدم وﻳوﻟــد ﻋﻠﻣﻳــﺔ ﻣــن ﻋﻣﻠﻳــﺎت اﻟــﺳﻳرﻓر ﻟﺧدﻣــﺔ‬
‫اﻟﻣﺳﺗﺧدم‪.‬‬

‫‪ ‬اﻟﻣﺳﺗﺧدم ﻳطﻠب ﺗﻧﻔﻳذ ﺟﻣﻠﺔ ‪ SQL‬وﻓﻰ ﻣﺛﺎﻟﻧﺎ ﻳطﻠب اﻟﻣﺳﺗﺧدم ﺗﻐﻳر ﻗﻳﻣـﺔ ﻓـﻲ‬
‫ﺻف ﻣوﺟود ﻓﻰ ﺟداوﻝ ﻣوﺟود ﺑﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪48‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬ﻳﻘــوم اﻟــﺳﻳرﻓر ﺑﺎﻟﺑﺣــث ﻓــﻲ ﻣﻧطﻘــﺔ اﻟــذاﻛرة اﻟﻣــﺷﺗرﻛﺔ ‪ Shared Pool‬ﻋﻣــﺎ إذا‬
‫ﻛﺎﻧــت ﻫﻧــﺎك ﻣﻧطﻘــﺔ ‪ sql‬ﻣــﺷﺗرﻛﺔ ‪ Shared SQL Area‬وﺑﻬــﺎ ﻧﻔــس اﻟﺟﻣﻠــﺔ‬
‫اﻟذي ﻳرﻳد اﻟﻣﺳﺗﺧدم ﺗﻧﻔﻳذﻫﺎ ٕواذا وﺟد ﻣﺛـﻝ ﺗﻠـك اﻟﻣﻧطﻘـﺔ ﻣـن اﻟـذاﻛرة ﻓﺎﻧـﻪ ﻳﺗﺄﻛـد‬
‫ﻣن ﺻـﻼﺣﻳﺎت اﻟﻣـﺳﺗﺧدم ﻓـﻲ اﻟﻣـﺷﺎرﻛﺔ ﻓـﻲ ﺗﻠـك اﻟﻣﻧطﻘـﺔ واﻟوﺻـوﻝ إﻟـﻰ اﻟـداﺗﺎ‬
‫اﻟﻣوﺟودة ﺑﻬﺎ ﻓﺈذا ﻣﺎ ﺗﺄﻛد ﻣن ذﻟك ﻓﺳوف ﻳﺳﺗﺧدم اﻟﺳﻳرﻓر ﺗﻠك اﻟﻣﻧطﻘـﺔ ﻟﺗﻧﻔﻳـذ‬
‫طﻠــب اﻟﻣــﺳﺗﺧدم ٕواذا ﻟــم ﻳﺟــدﻫﺎ ﻓﺎﻧــﻪ ﻳﺣــﺎوﻝ ﺗﺧــﺻﻳص ﻣﻧطﻘــﺔ ﺟدﻳــدة ﻟﺗﻬﻳﺋــﺔ‬
‫ﺗﻧﻔﻳذ اﻟﺟﻣﻠﺔ ﺛم ﺗﻧﻔﻳذﻫﺎ‪.‬‬

‫‪ ‬ﺗـﺻدر ﺟﻣﻠـﺔ اﻻﺳــﺗﻌﻼم ﻟﻠﺑﺣـث ﻋـن اﻟــداﺗﺎ اﻟﻣطﻠوﺑـﺔ ﻓﻳـﺗم اﻟﺑﺣــث ﻋﻧﻬـﺎ أوﻻً ﻓــﻲ‬
‫اﻟذاﻛرة ‪ SGA‬ﻓـﺎن ﻟـم ﻳﺟـدﻫﺎ ﻳـﺻدر أﻣـر اﻟﺑﺣـث داﺧـﻝ ﻣﻠﻔـﺎت ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت‬
‫‪ Data files‬ﻓــﺈن وﺟــدﻫﺎ ﺗوﺿــﻊ ﺑﻠوﻛــﺎت اﻟــداﺗﺎ ﻓــﻲ ﻣﻧطﻘــﺔ اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ‬
‫‪ .SGA‬ﻻﺣظ أن ﻋﻣﻠﻳﺔ اﻟـﺳﻳرﻓر ﺗﻛـون ﻗـﺎدرة ﻋﻠـﻰ ﻗـراءة ﻣﻠﻔـﺎت اﻟـداﺗﺎ اﻟﻣﺎدﻳـﺔ‬
‫ﻣﺑﺎﺷ ـرة وﻓــﻰ وﻗ ـت آﺧــر ﻳﻘــوم ﻛﺎﺗــب اﻟﺑﻠــوك ﺑﻛﺗﺎﺑــﺔ ﺑﻠوﻛــﺎت اﻟــداﺗﺎ اﻟﻣﻌدﻟــﺔ إﻟــﻰ‬
‫اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ ﻣرة أﺧرى‪ .‬وﺑﺎﻟﻔﻌﻝ ﺗوﺟد اﻟداﺗﺎ وﺗﺟرى ﻋﻠﻳﻬﺎ اﻟﺗﻌدﻳﻼت‪.‬‬

‫‪ ‬اﻟﻣـ ــﺳﺗﺧدم إﻣـ ــﺎ أن ﻳﻘـ ــوم ﺑﺗﺄﻛﻳـ ــد اﻟﻌﻣﻠﻳـ ــﺔ ﺑﺈﺻـ ــدارﻩ أﻣـ ــر ‪ Commit‬أو ﻻ ﻳـ ــرد‬
‫إﺗﻣﺎﻣﻬـ ــﺎ ﻓﻳـ ــﺻدر ﺟﻣﻠـ ــﺔ ‪ Rollback‬واﻟﺗـ ــﻲ ﺗﻠﻐـ ــﻰ ﻣـ ــﺎ أﺟ ـ ـراﻩ اﻟﻣـ ــﺳﺗﺧدم ﻣـ ــن‬
‫ﺗﻌدﻳﻼت‪.‬‬

‫‪ ‬ﻓ ــﻲ ﻧﻔ ــس اﻟوﻗ ــت ﺗ ــﺳﺟﻝ ﻣﻌﻠوﻣ ــﺎت اﻟﺗﻐﻳﻳ ــر ﻓ ــﻲ ذاﻛـ ـرة اﻟرﻳ ــدو وﺑﻣﺟ ــرد ﺗﺄﻛﻳ ــد‬
‫اﻟﻣﺳﺗﺧدم ﻟﻠﻌﻣﻠﻳﺔ ﻳﻘوم ﻛﺎﺗب اﻟﻠوغ ﺑﺗـﺳﺟﻳﻝ اﻟﻣﻌﺎﻣﻠـﺔ ﻣـن ذاﻛـرة اﻟرﻳـدو ‪Redo‬‬
‫‪ Log Buffer‬إﻟﻰ ﻣﻠف اﻟﻠوغ ‪OnLine Redo Log‬ﻣﻠف اﻟﻠوغ‪.‬‬

‫‪ ‬ﺑﻌــد إﺗﻣــﺎم ﻛﺎﺗــب اﻟﻠــوغ ﺑﺗــﺳﺟﻳﻝ ﻣﻌﻠوﻣــﺎت اﻟﻌﻣﻠﻳــﺔ ﻳﺑــدأ ﻛﺎﺗــب اﻟﺑﻠــوك ﻓــﻲ ﻧﻘــﻝ‬
‫اﻟﺗﻌــدﻳﻼت ﻣــن ذاﻛـرة اﻟﻛــﺎش ﻟﺑﻠوﻛــﺎت اﻟــداﺗﺎ ‪ Database buffer cash‬إﻟــﻰ‬
‫ﻣﻠﻔ ــﺎت اﻟ ــداﺗﺎ ‪ Datafiles‬وﻳ ــﺗم إﺻ ــدار رﺳ ــﺎﻟﺔ إﻟ ــﻰ اﻟﻣ ــﺳﺗﺧدم ﺑﻧﺟ ــﺎح ﺗﻧﻔﻳ ــذ‬
‫اﻟﻌﻣﻠﻳﺔ‪.‬‬

‫‪49‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part1

50
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻓﺘﺢ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪Database Startup‬‬

‫ﻛﻣﺎ ذﻛرﻧﺎ ﻣن ﻗﺑﻝ ﻳﻣﺛﻝ اﻟﻣﺛﺎﻝ ﻣﻌﻣﺎرﻳﺔ ﻣﻌﻳﻧـﺔ ﻟﻠـذاﻛرة ﺑﺎﻹﺿـﺎﻓﺔ إﻟـﻰ ﻋﻣﻠﻳـﺎت ﺗـﺗم ﻓـﻲ‬
‫اﻟﺧﻠﻔﻳــﺔ واﻟﺗــﻲ ﺗﺟﻌــﻝ اﻟﻣــﺳﺗﺧدم ﻗــﺎد اًر ﻋﻠــﻰ اﻻﺗــﺻﺎﻝ ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ‪.‬‬
‫ﻋﻧــدﻣﺎ ﺗﺑــدأ أو ارﻛــﻝ ﻓــﻲ اﻟﻌﻣــﻝ ﻓﺈﻧﻬــﺎ ﺗﺑــدأ ﻓــﻲ ﺗﻬﻳﺋــﺔ ﻣﻌﻣﺎرﻳــﺔ اﻟــذاﻛرة وﺗــﺷﻐﻳﻝ ﻋﻣﻠﻳــﺎت‬
‫اﻟﺧﻠﻔﻳﺔ اﺳﺗﻌدادا ﻟدﺧوﻝ اﻟﻣﺳﺗﺧدﻣﻳن ﻋﻠﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت‪ .‬وﻫﻛـذا ﻓـﺎن ﻫﻧـﺎك ﻋـدد ﻣـن‬
‫اﻟﻣ ارﺣ ـ ــﻝ ﺣﺗ ـ ــﻰ ﻳ ـ ــﺗم اﻟﺗﺄﻛ ـ ــد ﻣ ـ ــن أن ﻗﺎﻋ ـ ــدة اﻟﺑﻳﺎﻧ ـ ــﺎت ﺟ ـ ــﺎﻫزة ﺗﻣﺎﻣ ـ ــﺎً ﻟﺗﻠﻘ ـ ــﻰ طﻠﺑ ـ ــﺎت‬
‫اﻟﻣﺳﺗﺧدﻣﻳن‪ .‬أن ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺗﻣر ﻋﻠﻰ اﻵﺗﻲ‪:‬‬

‫‪ ‬اﻟﺗﺷﻐﻳﻝ ﻗﺑﻝ اﻻرﺗﻘﺎء ‪:STARTUP NOMOUNT‬‬

‫ﻳﺗم ﻓﺗﺢ اﻟﻣﺛﺎﻝ وﺗﺟﻬﻳزﻩ ﻟﻔﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻗﺑﻝ اﻻرﺗﻘﺎء إﻟﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺣﻳـث ﻳـﺗم‬
‫ﻗراءة ﻣﻠف اﻟﺑﺎرﻣﺗر اﻟﻣﺳؤوﻝ ﻋن إﻋدادات اﻟﻣﺛـﺎﻝ ٕواﻋـداد اﻟـذاﻛرة وﻓﻘـﺎً ﻟﻠﻣﻌﻣﺎرﻳـﺔ اﻟﺗـﻲ‬
‫ﺗﺗطﻠﺑﻬﺎ أوراﻛﻝ ﻛﻣﺎ ﺗﺄﺧذ ﻋﻣﻠﻳﺎت اﻟﺧﻠﻔﻳـﺔ وﺿـﻊ اﻻﺳـﺗﻌداد ﻟﻠﻔـﺗﺢ واﻟﺗـﺷﻐﻳﻝ وﻟﻛـن دون‬

‫‪51‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻻﺗــﺻﺎﻝ ﺑﺎﻟﻬﻳﻛــﻝ اﻟﻣــﺎدي ﻟﻠﻣﻠﻔــﺎت ‪ 0Data Files‬وﻓــﻰ ﻫــذﻩ اﻟﻣرﺣﻠــﺔ ﻻ ﺗﻛــون ﻗﺎﻋــدة‬
‫اﻟﺑﻳﺎﻧﺎت ﻣﺗﺎﺣﺔ ﺑﻌد ﻟﻼﺳـﺗﺧدام‪ .‬ﻋﻧـدﻣﺎ ﻧﻛـون ﻓـﻲ ﺗﻠـك اﻟوﺿـﻌﻳﺔ ﻧـﺳﺗطﻳﻊ إﺟـراء ﺑﻌـض‬
‫اﻟﻣﻬﺎم وأﻛﺛرﻫﺎ ﺷﻳوﻋﺎ ﺗﺷﻐﻳﻝ اﻷواﻣر ‪ Scripts‬واﻟﺗﻲ ﻧﺳﺗطﻳﻊ ﻣن ﺧﻼﻟﻬـﺎ ﻋﻣـﻝ ﻗﺎﻋـدة‬
‫ﺑﻳﻧــﺎت ﺟدﻳــدة أن ﻟــم ﺗوﺟــد واﺣــدة ﻣــن ﻗﺑــﻝ‪ .‬ﻓــﻲ ﺗﻠــك اﻟﻣرﺣﻠــﺔ ﻣــن اﻟﻣﻣﻛــن أن ﺗﺣــدث‬
‫ﺑﻌض اﻟﻣﺷﺎﻛﻝ ﻓﻲ ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت أن ﻛﺎﻧت ﻣوﺟودة وﻫﻰ ﻋﻠﻰ ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﻋـدم‬
‫اﻟوﺻــوﻝ ﺑــﺷﻛﻝ ﺳــﻠﻳم إﻟــﻰ ﻣﻠــف اﻟــﺗﺣﻛم ﻓــﻲ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ‪ Control File‬وﻫﻧــﺎ ﻻ‬
‫ﻳﻣﻛن ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت إﻻ ﺑﻌد ﻣﻌﺎﻟﺟﺔ ﺗﻠك اﻟﻣﺷﻛﻠﺔ‬

‫‪ ‬اﻟﻔﺗﺢ ﻣﻊ اﻻرﺗﻘﺎء ‪:STARTUP MOUNT‬‬

‫ﺗــﺗم ﺟﻣﻳــﻊ ﻋﻣﻠﻳــﺎت اﻟﻣرﺣﻠــﺔ اﻟــﺳﺎﺑﻘﺔ ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ إﻣﻛﺎﻧﻳــﺔ اﻻﺗــﺻﺎﻝ ﺑﻬﻳﻛــﻝ اﻟﻣﻠﻔــﺎت‪.‬‬
‫ﻓ ــﻲ ﻫ ــذﻩ اﻟﻣرﺣﻠ ــﺔ ﻳ ــﺗم اﻟوﺻ ــوﻝ إﻟ ــﻰ ﻣﻠ ــف اﻟ ــﺗﺣﻛم وﻗراءﺗ ــﻪ واﻟﺣ ــﺻوﻝ ﻋﻠ ــﻰ ﺟﻣﻳ ــﻊ‬
‫اﻟﻣﻌﻠوﻣــﺎت ﻋــن ﻫﻳﻛــﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت اﻟﻣـراد ﻓﺗﺣﻬــﺎ‪ .‬ﻳوﺟــد ﺑﻌــض وظــﺎﺋف إدارة ﻗﺎﻋــدة‬
‫اﻟﺑﻳﺎﻧﺎت اﻟﻣﺣددة اﻟﺗﻲ ﻳﻣﻛن إﺟراءﻫﺎ ﻓﻲ ﺗﻠك اﻟوﺿﻌﻳﺔ وﻣﻧﻬﺎ وظﺎﺋف اﻹﺻـﻼح ﻓﻌﻠـﻰ‬
‫ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﺗﻐﻳﻳر أﻣﺎﻛن اﻟﻣﻠﻔﺎت ﻋﻠﻰ اﻟدﻳﺳك أو إﻋداد ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻓﻲ اﻟوﺿـﻌﻳﺔ‬
‫‪archive log mode‬‬

‫‪ ‬ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺗﻣﺎﻣﺎً ‪:STARTUP OPEN‬‬

‫إذا ﻣــرت اﻟﻣ ارﺣــﻝ اﻟــﺳﺎﺑﻘﺔ ﻛﻠﻬــﺎ ﺑــدون ﻣــﺷﺎﻛﻝ ﺗﻛــون ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣﻔﺗوﺣــﺔ وﺟــﺎﻫزة‬
‫ﺗﻣﺎﻣــﺎً ﻟــدﺧوﻝ اﻟﻣــﺳﺗﺧدﻣﻳن وﻋﻠــﻰ اﻟــرﻏم ﻣــن أن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣﺗﺎﺣــﺔ ﻟﻠﺟﻣﻳــﻊ إﻻ اﻧــﻪ‬
‫ﻳﻣﻛــن ﺗــﺷﻐﻳﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑــﺑﻌض اﻻﺧﺗﻳــﺎرات اﻹﺿــﺎﻓﻳﺔ إذا واﺟﻬﺗﻧــﺎ ﻣواﻗــف ﻣﺣــددة‬
‫وﻫﻰ ‪:‬‬

‫‪ ‬إﺟﺑﺎر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻋﻠﻰ اﻟﻔﺗﺢ واﻟﻌﻣﻝ ‪:STARTUP FORCE‬‬

‫ﻳﻣﻛﻧ ــك ﺗﺑﻧ ــﻲ ذﻟ ــك اﻻﺧﺗﻳ ــﺎر إذا واﺟﻬﺗ ــك ﺑﻌ ــض اﻟﻣ ــﺷﺎﻛﻝ أﺛﻧ ــﺎء ﻓ ــﺗﺢ ﻗﺎﻋ ــدة‬
‫اﻟﺑﻳﺎﻧﺎت ﺑطرﻳﻘﺔ طﺑﻳﻌﻳﺔ ﻓﻌﻠﻰ ﺳـﺑﻳﻝ اﻟﻣﺛـﺎﻝ إذا ﺣـدث اﻧﻘطـﺎع ﻟﻠﻛﻬرﺑـﺎء ﻣﻔـﺎﺟﺊ‬

‫‪52‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫وﺗوﻗﻔـت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑﻌــد اﻟﻔـﺗﺢ ﻓﻬﻧــﺎ ﺗﻛــون ﻣﺣﺎوﻟـﺔ ﺗﺟرﺑـﺔ ﺗﻠــك اﻟﺧطــوة أﻣـ اًر‬
‫ﺿــرورﻳﺎً ﻳــﺳﺗﺣق اﻟﻣﺣﺎوﻟــﺔ‪ .‬وﻫﻧــﺎ ﻻ ﻳﺗوﻗــف ﻫــذا اﻻﺧﺗﻳــﺎر ﻋﻠــﻰ أﻳــﺔ وﺿــﻌﻳﺔ‬
‫ﻛﺎﻧ ـ ــت ﻋﻠﻳﻬ ـ ــﺎ ﻗﺎﻋ ـ ــدة اﻟﺑﻳﺎﻧ ـ ــﺎت ﺳـ ـ ـواء ﻛﺎﻧ ـ ــت أﻏﻠﻘ ـ ــت ﺑطرﻳﻘ ـ ــﺔ ﻏﻳ ـ ــر طﺑﻳﻌﻳ ـ ــﺔ‬
‫‪shutdown abort and then restarts the database‬‬

‫‪ ‬اﻟﻔﺗﺢ ﻣﻊ وﺟود ﻗﻳود ‪STARTUP RESTRICT‬‬

‫ﻫﻧﺎ ﺗﻔﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻟﻠﻣﺳﺗﺧدﻣﻳن اﻟذﻳن ﻟﻬم ﺻﻼﺣﻳﺔ ‪RESTRICTED‬‬


‫‪ SESSION‬دون ﺑﻘﻳــﺔ اﻟﻣــﺳﺗﺧدﻣﻳن وﻳﻛــون ﻫــذا ﻓــﻲ ﺣﺎﻟــﺔ إﺟـراء اﻟــﺻﻳﺎﻧﺔ أو‬
‫اﻟﺗﺻدﻳر أو اﻻﺳﺗﻳ ارد ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺣﻳث ﻳﻛون ﻣطﻠوﺑـﺎً ﺗﻌطﻳـﻝ وﺻـوﻝ ﺑﻘﻳـﺔ‬
‫اﻟﻣ ــﺳﺗﺧدﻣﻳن ﻟﺣ ــﻳن إﺗﻣ ــﺎم اﻟ ــﺻﻳﺎﻧﺔ‪ .‬وﺑﻌ ــد ذﻟ ــك ﻧﻌط ــﻝ ﺗﻠ ــك اﻟوﺿ ــﻌﻳﺔ ﺑ ــﺎﻷﻣر‬
‫اﻟﺗﺎﻟﻲ ﻟﺗﻣﻛﻳن ﺑﻘﻳﺔ اﻟﻣﺳﺗﺧدﻣﻳن ﻣن اﻟدﺧوﻝ اﻟﻌﺎدي ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪53‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺇﻏﻼﻕ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ‪Database Startup‬‬


‫ﻳــﺗم إﻏــﻼق ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻟظــروف ﻋدﻳــدة ﻣﻧﻬــﺎ إﺟـراء ﻋﻣﻠﻳــﺎت اﻻﺳــﺗﻌﺎدة واﻹﺻــﻼح‬
‫أو ﻟﺗﺑ ــدﻳﻝ اﻟ ــﺳﻳرﻓر وﻫﻧ ــﺎ ﻟﻛ ــﻲ ﺗﻐﻠ ــق ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت ﻳﻧﺑﻐ ــﻲ أن اﻟ ــدﺧوﻝ إﻟ ــﻰ ﻗﺎﻋ ــدة‬
‫اﻟﺑﻳﺎﻧــﺎت ‪ Connect‬ﻣﺛ ـﻝ ‪ SYSOPER or SYSDBA‬وﻫــﻰ ﺻــﻼﺣﻳﺎت إدارﻳــﺔ‬
‫واﺳﻌﺔ وﻫﻧﺎك ﻋدة أﻧواع أو أﺳﺎﻟﻳب ﻟﻐﻠق ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻛﻣﺎ ﻳﻠﻲ‪:‬‬

‫‪Shutting Down with the NORMAL‬‬ ‫اﻹﻏــﻼق اﻟطﺑﻳﻌــﻲ اﻟﻌــﺎدي‬


‫‪Option‬‬

‫ﻳﺳﺗﺧدم اﻷﻣر اﻟﺗﺎﻟﻲ ﻹﻏﻼق ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑطرﻳﻘﺔ طﺑﻳﻌﻳﺔ ‪:‬‬


‫‪SHUTDOWN NORMAL‬‬
‫ﻳﺗﺑﻊ اﻹﻏﻼق اﻟﻌﺎدي اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬ﻻ ﻳﺳﻣﺢ ﺑﺄﻳﺔ اﺗﺻﺎﻻت ﺟدﻳدة ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑﻌد إﺻدار اﻷﻣر‪.‬‬

‫‪ ‬ﺗﻧﺗظر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺧروج ﺟﻣﻳﻊ اﻟﻣﺗﺻﻠﻳن ﺣﺎﻟﻳﺎً ﺑﻬﺎ ﻗﺑﻝ أن ﺗﻐﻠق‪.‬‬

‫‪ ‬ﻳــﺗم إﻋــﺎدة ﻓــﺗﺢ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣــن ﺟدﻳــد ﺑــﺻورة طﺑﻳﻌﻳــﺔ ﻓــﻼ ﺗﺣﺗــﺎج ﻷي ﻧــوع‬
‫ﻣن اﻹﺻﻼح‪.‬‬

‫ﻏﻠق ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻓﻲ اﻟﺣﺎﻝ‪:‬‬


‫‪Shutting Down with the IMMEDIATE Option‬‬
‫ﻳﺳﺗﺧدم ذﻟك اﻷﺳﻠوب ﻓﻲ اﻟﺣﺎﻻت اﻟﺗﺎﻟﻳﺔ‪:‬‬

‫‪ ‬ﻋﻧد ﺗوﻗﻊ ﺣدوث اﻧﻘطﺎع ﻗرﻳب ﻟﻠطﺎﻗﺔ‪.‬‬

‫‪ ‬ﻟﻛﻲ ﻧﺑدأ ﻋﻣﻠﻳﺔ ﻧﺳﺦ اﺣﺗﻳﺎطﻲ ﺑﺻورة أﺗوﻣﺎﺗﻳﻛﻳﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ‪.‬‬

‫‪ ‬ﻋﻧــدﻣﺎ ﺗﻌﻣــﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑــﺻورة ﻏﻳــر طﺑﻳﻌﻳــﺔ وﻧﻛــون ﻏﻳــر ﻗــﺎدرﻳن ﻋﻠــﻰ‬
‫ﺧروج اﻟﻣﺳﺗﺧدﻣﻳن ﺑﺻورة طﺑﻳﻌﻳﺔ ‪Log Off‬‬

‫‪54‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻧﺻدر اﻷﻣر اﻟﺗﺎﻟﻲ ﻟﻐﻠق ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑﺻورة ﻓورﻳﺔ‬


‫‪SHUTDOWN IMMEDIATE‬‬
‫ﻳﺗﺑﻊ اﻹﻏﻼق اﻟﻔوري اﻟﺗﺎﻟﻲ‪:‬‬

‫‪ ‬ﻻ ﻳـﺳﻣﺢ ﺑﺄﻳــﺔ اﺗــﺻﺎﻻت ﺟدﻳــدة ﻋﻠــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻛﻣــﺎ ﻻ ﻳــﺳﻣﺢ ﺑــﺈﺟراء أﻳــﺔ‬
‫ﻋﻣﻠﻳﺎت ﺟدﻳدة‪.‬‬

‫‪rolled‬‬ ‫‪ ‬أﻳــﺔ ﻋﻣﻠﻳــﺎت ﻏﻳــر ﻣؤﻛــدة ‪ Committed‬ﺳــوف ﻳــﺗم اﻟﺗ ارﺟــﻊ ﻋﻧﻬــﺎ‬
‫‪. back‬‬

‫‪ ‬ﻻ ﺗﻘــوم أروا ﻛـﻝ ﺑﺎﻻﻧﺗظــﺎر ﺣﺗــﻰ ﻳﺧــرج اﻟﻣــﺳﺗﺧدﻣﻳن اﻟﺣــﺎﻟﻳﻳن ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت‬
‫ﻋﻧﻬﺎ ﺑﻝ ﺗﻘطﻊ ﻋﻧﻬم اﻻﺗﺻﺎﻝ‪.‬‬

‫‪instance‬‬ ‫‪ ‬ﻋﻧ ــد إﻋ ــﺎدة اﻟﻔ ــﺗﺢ ﻣ ــن ﺟدﻳ ــد ﻻ ﻳﺣﺗ ــﺎج اﻟﻣﺛ ــﺎﻝ ﻹﻋ ــﺎدة إﺻ ــﻼح‬
‫‪.recovery‬‬

‫اﻹﻏﻼق ﻣﻊ اﻻﺧﺗﻳﺎر‪:‬‬
‫‪Shutting Down with the TRANSACTIONAL Option‬‬
‫ﻳﺳﺗﺧدم ذﻟـك اﻻﺧﺗﻳـﺎر ﻋﻧـدﻣﺎ ﻧرﻳـد إﻏـﻼق ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻟﻛـن ﺑﻌـد إﺗﻣـﺎم اﻟﻣﻌـﺎﻣﻼت‬
‫اﻟﺣﺎﻟﻳﺔ ‪ Active Transaction‬ﻗﺑﻝ اﻹﻏﻼق ﺣﻳث ﻧﺻدر اﻷﻣر اﻟﺗﺎﻟﻲ‪:‬‬
‫‪SHUTDOWN TRANSACTIONAL‬‬

‫اﻹﻏﻼق ﻋن طرﻳق اﻹﺟﻬﺎض‪:‬‬


‫‪Shutting Down with the ABORT Option‬‬

‫ﻳﻌﺗﺑــر ﻫــذا إﻏﻼﻗــﺎً ﻏﻳــر طﺑﻳﻌﻳــﺎً ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺣﻳــث ﻳــﺗم اﻟﺧــروج ﻓــو اًر ﻣــن اﻟﻣﺛــﺎﻝ وﻻ‬
‫ﻳﺳﺗﺧدم إﻟﻰ ﻓﻲ اﻟﺣﺎﻻت اﻟﺗﺎﻟﻳﺔ‪:‬‬

‫‪55‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻻ ﺗﻌﻣﻝ ﺑﺻورة طﺑﻳﻌﻳﺔ وﻟم ﺗﻔﻠﺢ اﻟطرق اﻟﺳﺎﺑﻘﺔ ﻓﻲ ﻏﻠﻘﻬﺎ‪.‬‬

‫‪ ‬ﺣﺎﻟﺔ اﻻﻧﻘطـﺎع اﻟﻔـوري ﻟﻠطﺎﻗـﺔ ﻓﻣـﺛﻼ إذا ﻛﻧـﺎ ﻧﻌﻠـم أن اﻟﺗﻳـﺎر اﻟﻛﻬرﺑـﺎﺋﻲ ﺳـﻳﻧﻘطﻊ‬
‫ﻓﻲ ﺧﻼﻝ دﻗﻳﻘﺔ واﺣدة‪.‬‬

‫‪ ‬ﺣدوث أﺧطﺎء ﻓﻲ ﻓﺗﺢ اﻟﻣﺛﺎﻝ‪.‬‬

‫‪ ‬ﻧﺻدر اﻷﻣر اﻟﺗﺎﻟﻲ ‪:‬‬


‫‪SHUTDOWN ABORT‬‬
‫وﻓﻰ ﺗﻠك اﻟﺣﺎﻟﺔ ﻳﺣدث ‪:‬‬

‫‪ ‬ﻻ ﻳﺳﻣﺢ ﺑﺄﻳﺔ اﺗﺻﺎﻻت ﺟدﻳدة أو ﻋﻣﻠﻳﺎت ﺑﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪ ‬ﻳﺧــرج اﻟﻣــﺳﺗﺧدﻣون اﻟﺣــﺎﻟﻳﻳن ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻋﻠــﻰ اﻟﻔــور وﻳــﺗم إﻧﻬــﺎء أﻳــﺔ‬
‫ﻋﻣﻠﻳﺎت ﻛﺎﻧوا ﻳﻘوﻣون ﺑﻬﺎ ﺣﺗﻰ وﻟو ﻛﺎﻧت ﻏﻳر ﻣﻛﺗﻣﻠﺔ‪.‬‬

‫‪ ‬أﻳﺔ ﻋﻣﻠﻳﺎت ﻏﻳر ﻣؤﻛدة ﻻ ﻳﺗم اﻟﺗراﺟﻊ ﻋﻧﻬﺎ ‪not rolled back‬‬

‫وﻓــﻰ ﻫــذﻩ اﻟﺣﺎﻟــﺔ ﺳــﻧﺣﺗﺎج إﻋــﺎدة إﺻــﻼح اﻟﻣﺛــﺎﻝ ‪ Instance recovery‬ﻋﻧــد إﻋــﺎدة‬
‫اﻟﻔﺗﺢ‪.‬‬

‫‪56‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺍﻟﻜﺘﺎﻟﻮﻍ ‪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‬ﻓﻣﺛﻼ ﻓﻲ ﺣﺎﻟﺔ إﻧﺷﺎء اﻟﻣﺳﺗﺧدم ﻟﺟداوﻝ ﺟدﻳد‪.‬‬

‫‪57‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫إن اﻟﻣــﺳﺗﺧدم ‪ SYS, Owner of the Data Dictionary‬ﻫــو اﻟﻣﺎﻟــك‬


‫ﻟﻣﺟﻣوﻋــﺔ اﻟﺟــداوﻝ واﻟﻣﻧــﺎظﻳر ‪Views‬اﻟﻣﻛوﻧــﺔ ﻟﻠﻛﺗــﺎﻟوغ وﻻ ﻳﺟــب ﻟﻣــﺳﺗﺧدم‬
‫آﺧــر أن ﻳﻘــوم ﺑﺎﻟﺗﻌــدﻳﻝ أو اﻹﻟﻐــﺎء ﻓــﻲ ذﻟــك اﻟﻣﺧطــط وﺑﺎﻟﺗــﺎﻟﻲ اﺣــرص ﻋﻠــﻰ‬
‫ﻛﻠﻣﺔ اﻟﺳر ﻟﻠﻣﺳﺗﺧدم ‪SYS‬‬

‫أن ﻣﻌﻠوﻣﺎت اﻟﻛﺗﺎﻟوغ ﺗﻛون ﻣﺗﺎﺣﺔ ﻷوراﻛﻝ ﻋﻧد ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت وﻫـﻲ ﺗوﺟـد‬
‫ﻋﻠ ــﻰ اﻟﻣ ــﺳﺎﺣﺔ اﻟﺟدوﻟﻳـ ـﺔ اﻟﻣ ــﺳﻣﺎة ‪ SYSTEM tablespace‬وﻟ ــذﻟك ﻓﺗﻠ ــك‬
‫اﻟﻣﺳﺎﺣﺔ ﺗﺑﻘﻰ ‪ Online‬ﺑﺎﺳﺗﻣرار‪.‬‬

‫ﻳﺗﻛون اﻟﻛﺎﺗﻠوغ ﻣن‪:‬‬

‫‪ ‬ﻣﺟﻣوﻋﺔ اﻟﺟداوﻝ اﻷﺳﺎﺳﻳﺔ ‪: Base Table‬‬

‫واﻟﺗــﻲ ﺗﺧــزن ﻓﻳﻬــﺎ ﻗــﻳم وداﺗــﺎ ﺧﺎﺻــﺔ ﺑﻣــﺎ ﻗﻠﻧــﺎﻩ ﺳــﺎﺑﻘﺎ‪ .‬أروا ﻛـﻝ ﻓﻘــط ﻫــﻲ وﺣــدﻫﺎ‬
‫اﻟﺗ ــﻲ ﺗﻣﻠ ــك ﻗـ ـراءة وﺗﻌ ــدﻳﻝ ﺗﻠ ــك اﻟﺟ ــداوﻝ ﻧظـ ـ ار ﻟﺧطورﺗﻬ ــﺎ وﺗﺄﺛﻳرﻫ ــﺎ ﻋﻠ ــﻰ ﻓ ــﺗﺢ‬
‫وﺳﻼﻣﺔ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪ ‬ﻣﻧﺎظﻳر ‪User-Accessible Views‬‬

‫ﺗـ ــﺳﺗﺧدم ﻓـ ــﻲ ﺗﻠﺧـ ــﻳص وﻋـ ــرض اﻟﻣﻌﻠوﻣـ ــﺎت ﻋـ ــن ﻣﺟﻣوﻋـ ــﺔ اﻟﺟـ ــداوﻝ اﻟﻣﻛوﻧـ ــﺔ‬
‫ﻟﻠﻛﺗــﺎﻟوغ ﻓﻬــﻲ ﺗﺗــرﺟم ﻣﻌﻠوﻣــﺎت اﻟﺟــداوﻝ اﻟــﺳﺎﺑﻘﺔ إﻟــﻰ ﺻــورة ﻳــﺳﺗطﻳﻊ ﻗراءاﺗﻬــﺎ‬
‫اﻟﻣــﺳﺗﺧدم‪ .‬وﻣــن أﻣﺛﻠﺗﻬــﺎ أﺳــﻣﺎء اﻟﻣــﺳﺗﺧدﻣﻳن اﻟﻣوﺟــودﻳن ﻋﻠــﻰ ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت‬
‫واﻟﺻﻼﺣﻳﺎت اﻟﻣﻣﻧوﺣﺔ ﻟﻬم‪.‬‬

‫اﺳﺗﺧدام اﻟﻣﻧﺎظﻳر اﻟذي ﻳوﻓرﻫﺎ اﻟﻛﺗﺎﻟوغ ‪Data Dictionary Views‬‬

‫ﺗـوﻓر أو ارﻛــﻝ ‪ Oracle 10g‬ﻋـدد ﻫﺎﺋــﻝ ﻣــن اﻟﻣﻧـﺎظﻳر ﻟﻠﺗﻌﺎﻣـﻝ ﻣــﻊ ﻣﻌﻠوﻣــﺎت اﻟﻛﺗــﺎﻟوغ‬
‫وﻳﺑﻠﻎ اﻟﻌدد ﺣﺳب اﺧﺗﻳﺎرات اﻟﺗﻧزﻳﻝ اﻛﺛر ﻣن ‪ 1300‬ﻣﻧظﺎر‪ .‬إن ﺗﻠك اﻟﻣﻧﺎظﻳر ﺗـﺳﻣﻰ‬
‫ﺑﺄﺳﻣﺎء ﺗﺑدأ ﺑـ _‪ DBA‬و _‪ , ALL_ , USER‬اﻟﻔﺎرق ﺑﻳﻧﻬﺎ ﻳﻣﻛن ﺗوﺿﺣﻪ ﻛﻣﺎ ﻓﻲ‬
‫اﻟرﺳم اﻟﺗﺎﻟﻲ‪:‬‬

‫‪58‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻛﻣﺎ ﻳظﻬر ﻣـن اﻟرﺳـم ﻓـﺎن اﻟﻣﻧـﺎظﻳر ‪ DBA_TABLES‬ﻳظﻬـر ﺟﻣﻳـﻊ اﻟﺟـداوﻝ اﻟﺗـﻲ‬
‫ﺗﺣﺗوى ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑﻳﻧﻣﺎ ﻳظﻬـر اﻟﻣﻧظـﺎر ‪ ALL_TABLES‬ﺟﻣﻳـﻊ اﻟﺟـداوﻝ اﻟﺗـﻲ‬
‫ﻳﻣﺗﻠﻛﻬﺎ ﻣﺳﺗﺧدم ﻣﻌﻳن ﻣﺳﺟﻝ ﻟدى ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑﺎﻹﺿـﺎﻓﺔ إﻟـﻰ ﺟﻣﻳـﻊ اﻟﺟـداوﻝ اﻟﺗـﻲ‬
‫ﻳﻣﺗﻠ ـ ـ ـ ـ ــك ﺻ ـ ـ ـ ـ ــﻼﺣﻳﺎت ﺗﻣﻛﻧ ـ ـ ـ ـ ــﻪ ﻣ ـ ـ ـ ـ ــن اﻟوﺻ ـ ـ ـ ـ ــوﻝ إﻟﻳﻬ ـ ـ ـ ـ ــﺎ ﺑﻳﻧﻣ ـ ـ ـ ـ ــﺎ ﻳظﻬ ـ ـ ـ ـ ــر اﻟﻣﻧظ ـ ـ ـ ـ ــﺎر‬
‫‪ USER_TABLES‬ﺟﻣﻳﻊ اﻟﺟداوﻝ اﻟﻣﻣﻠوﻛﺔ ﻓﻘط ﻟﻠﻣﺳﺗﺧدم ﻛﻣﺎ ﻳﺗـﺿﺢ ﻣـن اﻟﻣﺛـﺎﻝ‬
‫اﻟﺗﺎﻟﻲ‪:‬‬

‫‪59‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻳظﻬر اﻟﻣﺛﺎﻝ ﺟﻣﻳﻊ اﻟﺟداوﻝ اﻟﻣﻣﻠوﻛﺔ ﻟﻠﻣﺳﺗﺧدم ‪emp‬‬

‫واﻟﺟدوﻝ اﻟﺗﺎﻟﻲ ﻳظﻬر ﺑﻌض اﻟﻣﻧﺎظﻳر ﺟرب واﻛﺗﺷف ﺑﻧﻔﺳك‬

‫ﻟﻠﺣﺻوﻝ ﻋﻠﻰ ﻣﻌﻠوﻣﺎت ﻋن ﻛﻝ اﻟﻣﻧﺎظﻳر ﻳﻣﻛن اﻟذﻫﺎب إﻟﻰ‪:‬‬

‫‪60‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻫﻧﺎك ﻧوع آﺧر ﻣن اﻟﻣﻧﺎظﻳر ﺗﺳﻣﻰ ‪Dynamic Performance Views‬‬

‫‪ Oracle‬ﻳوﺟ ــد ﺣـ ـواﻟﻲ ‪ 350‬ﻣ ــن ﺗﻠ ــك اﻟﻣﻧ ــﺎظﻳر وﻣﻌظ ــم ﺗﻠ ــك‬ ‫وﻓ ــﻲ أو ارﻛ ــﻝ ‪10g‬‬
‫اﻟﻣﻧﺎظﻳر ﺗﺳﻣﻰ ﺑﺄﺳﻣﺎء ﺗﺑﺗدئ ﺑـ ‪ V$‬اﻟﺟدوﻝ اﻟﺗﺎﻟﻲ ﻳﺑﻳن أﻣﺛﻠﺔ ﻣﻧﻬﺎ‪:‬‬

‫وﻣﺛﺎﻝ ﻋﻠﻳﻬﺎ اﻟﻣﻧظﺎر ‪V$VERSION‬واﻟذي ﻳﺑﻳن ﻧوع إﺻدار اﻷورﻛﻝ اﻟﻣﺳﺗﺧدم‬

‫‪61‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫وﻋﻠﻰ اﻟرﻏم ﻣن ﻛﻼ اﻟﻧوﻋﻳن ﻣن اﻟﻣﻧﺎظﻳر ﻳﺷﺗرﻛﺎن ﻛﻼﻫﻣـﺎ ﻓـﻲ ﺗﻘـدﻳم ﻣﻌﻠوﻣـﺎت ﻫﺎﻣـﺔ‬
‫ﻋــن ﻋﻣــﻝ أو ارﻛــﻝ و ﺑﻳﻧﻬﻣــﺎ ﺗــﺷﺎﺑﻪ إﻻ اﻧــﻪ ﺗوﺟــد ﺑﻌــض اﺧﺗﻼﻓــﺎت ﺗظﻬــر ﻓــﻲ اﻟﺟــدوﻝ‬
‫اﻟﺗﺎﻟﻲ‪:‬‬

‫‪62‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻣﻌﻠﻮﻣﺎﺕ ﻻﺑﺪ ﻣﻨﻬﺎ‬

‫ﻣﺳؤوﻟﻳﺎت ووظﺎﺋف ﻣدﻳر ﻗواﻋد اﻟﺑﻳﺎﻧﺎت‪:‬‬


‫ﻋﻠــﻰ ﻣــدﻳر ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت أو ارﻛـﻝ ﺑﻌــض اﻟﻣﻬــﺎم اﻟرﺋﻳــﺳﻳﺔ اﻟواﺟــب ﻋﻠﻳــﻪ اﻻﻫﺗﻣــﺎم ﺑﻬــﺎ‬
‫ﻟﺿﻣﺎن ﺻﻼﺣﻳﺔ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪:‬‬
‫‪ ‬ﺗرﻛﻳب ﺑراﻣﺞ أو ارﻛﻝ واﻟﺗطﺑﻳﻘﺎت اﻟﺧﺎﺻﺔ ﺑﻪ‬
‫‪ ‬ﺗﺣدﻳد ﻣواﺻﻔﺎت اﻷﺟﻬزة اﻟﻣﺳﺗﺧدﻣﺔ واﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ‬
‫‪ ‬ﺗﺧطﻳط ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت وﺗﺻﻣﻳﻣﻬﺎ‬
‫‪ ‬إﻧﺷﺎء وﻓﺗﺢ ﻗواﻋد اﻟﺑﻳﺎﻧﺎت‬
‫‪ ‬إﻧﺷﺎء اﻟﺑراﻣﺞ واﻟﺗطﺑﻳﻘﺎت‬
‫‪ ‬إﻧﺷﺎء ﻧﺳﺦ اﺣﺗﻳﺎطﻳﺔ ﻟﻘواﻋد اﻟﺑﻳﺎﻧﺎت‬
‫‪ ‬إﺿﺎﻓﺔ ﻣﺳﺗﺧدﻣﻳن ﻟﻘواﻋد اﻟﺑﻳﺎﻧﺎت و إﻋطﺎء اﻣﺗﻳﺎزات اﻟدﺧوﻝ‬
‫‪ ‬ﺗﺣﺳﻳن أداء ﻗواﻋد اﻟﺑﻳﺎﻧﺎت‬

‫وظﺎﺋف ﻧظم إدارة ﻗواﻋد اﻟﺑﻳﺎﻧﺎت‪:‬‬


‫إﻟﻳك ﺑﻌض اﻟﻣواﺻﻔﺎت اﻟﺗﻲ ﻳﺟب أن ﺗﺗوﻓر ﻓﻲ ﻗواﻋد اﻟﺑﻳﺎﻧﺎت اﻟﻘﻳﺎﺳـﻳﺔ واﻟﺗـﻲ ﺗﻘـدﻣﻬﺎ‬
‫أوراﻛﻝ ﻣﻊ اﻟﻌدﻳد ﻣن اﻟﻣزاﻳﺎ اﻷﺧرى‪:‬‬
‫‪ ‬إدارة ﺣﺟم ﻛﺑﻳر ﺟدا ﻣن اﻟﻣﻌﻠوﻣﺎت وﺑﺷﻛﻝ آﻣن‬
‫‪ ‬إﻣﻛﺎﻧﻳﺔ اﻟﻌﻣﻝ ﻓﻲ ﺑﻳﺋﺔ ﻣﺗﻌددة اﻟﻣﺳﺗﺧدﻣﻳن ﻣﺛﻝ اﻟﺷﺑﻛﺎت‬
‫‪ ‬ﺣﻣﺎﻳﺔ اﻟﺑﻳﺎﻧﺎت ﻣن ﻋدم اﻟﻌﺑث ﺑﻬﺎ‬
‫‪ ‬ﺗﻘدﻳم اﻷدوات ﻹﺻﻼح اﻷﻋطﺎﻝ واﻟﺗﺧزﻳن اﻻﺣﺗﻳﺎطﻲ‬

‫‪63‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻧظﺎم إدارة ﻗواﻋد اﻟﺑﻳﺎﻧﺎت أوراﻛﻝ‪:‬‬


‫ﻳﻣﺗــﺎز ﻧظــﺎم ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت أو ارﻛــﻝ ﺑﺎﻟوﺛوﻗﻳــﺔ واﻷداء اﻟﻌــﺎﻟﻲ ﺑــﺳﺑب اﻟﺗﻘﻳــد ﺑﺎﻟﻣﻘــﺎﻳﻳس‬
‫واﻟﻛﺛﻳر ﻣن اﻷﺳﺑﺎب اﻟﺗﻲ ﺗم ﺷرح ﺑﻌﺿﻬﺎ ﻫﻧﺎ‪:‬‬
‫‪ ‬أن ﺗﻛون إﻣﻛﺎﻧﻳﺔ اﻟﺗﺧزﻳن ﻛﺑﻳرة ﺟداً‬
‫‪ ‬إﻣﻛﺎﻧﻳﺔ اﻟﺗﻌﺎﻣﻝ ﻣﻊ ﻋدد ﻛﺑﻳر ﻣن اﻟﻣﺳﺗﺧدﻣﻳن ﺑﺷﻛﻝ ﻣﺗزاﻣن وﻣﺗوازي‬
‫‪ ‬ﻧظﺎم أﻣن ﻣـن اﻟﻣﻣﻛـن ﻋـدم ﺗوﻗـف اﻟﺗﻌﺎﻣـﻝ ﻣﻌـﻪ ﻋﻠـﻰ ﻣـدار اﻟﻳـوم وﻗدرﺗـﻪ ﻋﻠـﻰ‬
‫إﺻﻼح اﻷﻋطﺎﻝ ﺣﺗﻰ اﻟﻔﻳزﻳﺎﺋﻳﺔ ﻣﻧﻬﺎ‬
‫‪ ‬ﺣﻣﺎﻳ ــﺔ اﻟﺑﻳﺎﻧ ــﺎت ﻣ ــن اﻟﻌﺑ ــث ﺑﻬ ــﺎ أو اﻟﺣ ــﺻوﻝ ﻋﻠﻳﻬ ــﺎ ﻣ ــن ﻏﻳ ــر اﻟﻣ ــﺳﺗﺧدﻣﻳن‬
‫اﻟﻣﺣددﻳن‬
‫‪ ‬اﻷداء اﻟﻌــﺎﻟﻲ إذ أن زﻳــﺎدة اﻟﺑﻳﺎﻧــﺎت واﻟﻣــﺳﺗﺧدﻣﻳن ﻻ ﺗــؤﺛر ﻋﻠــﻰ ﺳــرﻋﺔ وﻋﻣــﻝ‬
‫أوراﻛﻝ‬
‫‪ ‬اﻟﻣواﺻﻔﺎت اﻟﻘﻳﺎﺳﻳﺔ اﻟﺧﺎﺻﺔ ﺑﺄوراﻛﻝ ﻣواﺻﻔﺎت ﻋﺎﻟﻣﻳﺔ‬
‫‪ ‬إﻣﻛﺎﻧﻳﺔ اﻟﻌﻣﻝ ﻋﻠﻰ أﻛﺛر ﻣن ﻧظﺎم ﺗﺷﻐﻳﻝ‬
‫‪ ‬إﻣﻛﺎﻧﻳﺔ اﻻﺗﺻﺎﻝ اﻟﻘوﻳﺔ ﻋﺑر اﻟﺷﺑﻛﺎت‬
‫‪ ‬اﻟﺗﻌرﻳب إذ ﻳﻣﻛن اﻟﺗﻌﺎﻣﻝ ﻣﻌﻪ ﺑﺎﻟﻠﻐﺔ اﻟﻌرﺑﻳﺔ‬

‫أﻫداف ﻗواﻋد اﻟﺑﻳﺎﻧﺎت‪:‬‬


‫ﻫﻧــﺎك أﻫــداف ﻣﻌﻳﻧــﺔ وﺿــﻌت ﻷﺟﻠﻬــﺎ ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت واﻟﺗــﻲ ﻗﺎﻣــت اﻟــﺷرﻛﺎت ﺑﻌــد ذﻟــك‬
‫ﺑﺗط ــوﻳر ﻗواﻋ ــد اﻟﺑﻳﺎﻧ ــﺎت ﻫ ــذﻩ وأﻛﺑرﻫ ــﺎ ﻫ ــﻲ ﺷ ــرﻛﺔ أو ارﻛ ــﻝ ٕواﻟﻳ ــك أﻫ ــم أﻫ ــداف ﻗواﻋ ــد‬
‫اﻟﺑﻳﺎﻧﺎت اﻟﺗﻲ اﺳﺗدﻋت وﺿﻌﻬﺎ ﻟﻬﺎ‪.‬‬
‫ﻣرﻛزﻳﺔ اﻟﺑﻳﺎﻧﺎت‪:‬‬
‫وﻫــﻲ إﺣــدى أﻫــم أﻫــداف اﻟــذي وﺟــدت ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت ﻟﻬــﺎ واﻟﺗــﻲ ﺗــوﻓر ﺗرﺗﻳــب اﻟﺑﻳﺎﻧــﺎت‬
‫ﻟ ــﺳﻬوﻟﺔ اﻟوﺻ ــوﻝ إﻟﻳﻬ ــﺎ وﻋ ــدم ﺗ ــﺿﺎرﺑﻬﺎ ﻣ ــﻊ اﻟﺗ ــوﻓﻳر ﻓ ــﻲ اﻟﻣ ــﺳﺎﺣﺎت اﻟﻣ ــﺳﺗﺧدﻣﺔ ﻓ ــﻲ‬
‫اﻟﺗﺧزﻳن وﻟﻠﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﺑﻳﺎﻧﺎت ﺑﻳن ﻋدة ﺗطﺑﻳﻘﺎت‬

‫‪64‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﺳﺗﻘﻼﻟﻳﺔ اﻟﺑﻳﺎﻧﺎت ﻋن اﻟﺗطﺑﻳﻘﺎت‪:‬‬


‫واﻟﺗ ــﻲ ﺗﻔﻳ ــد ﻓ ــﻲ ﻋ ــدم ﺿ ــﻳﺎع اﻟﺑﻳﺎﻧ ــﺎت ﺑ ــﺳﺑب اﻧﻬﻳ ــﺎر اﻟﺑرﻧ ــﺎﻣﺞ اﻟﺗطﺑﻳﻘ ــﻲ اﻟ ــذي ﻳﻘ ــوم‬
‫ﺑﺈدارﺗﻬﺎ‪.‬‬
‫رﺑط اﻟﺑﻳﺎﻧﺎت ﺑﻌﻼﻗﺎت‪:‬‬
‫وﻫــﻲ ﻫــدف ﻣﻬــم ﻓــﻲ ﺗــوﻓﻳر اﻟﺟﻬــد واﻟوﻗــت وﻟﻠﺣــﺻوﻝ ﻋﻠــﻰ اﻟﺑﻳﺎﻧــﺎت اﻟﺗــﻲ ﺗ ـرﺗﺑط أو‬
‫ﺗﺷﺗرك ﻓﻳﻣﺎ ﺑﻳﻧﻬﺎ ﻟﻠﺣﺻوﻝ ﻋﻠﻰ ﻣﻌﻠوﻣﺎت ﻗﻳﻣﺔ‪.‬‬
‫ﺗﻛﺎﻣﻝ واﻧﺳﺟﺎم اﻟﺑﻳﺎﻧﺎت‪:‬‬
‫إﺣدى أﻫداف ﻗواﻋد اﻟﺑﻳﺎﻧﺎت اﻟﺗﻲ ﺗﻘـوم ﺑﺗﺣدﻳـد ﻧـوع اﻟﺑﻳﺎﻧـﺎت ووﺿـﻊ اﻟـﺷروط اﻟﻣﺣـددة‬
‫ﻟﻬذﻩ اﻟﺑﻳﺎﻧﺎت‪.‬‬
‫أﻣﺎن اﻟﺑﻳﺎﻧﺎت‪:‬‬
‫وﻫــﻲ إﺣــدى أﻫــداف ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت اﻟﺗــﻲ ﺗــﺳﺎﻋد ﻋﻠــﻰ ﻋــدم ﺿــﻳﺎع اﻟﺑﻳﺎﻧــﺎت وﺳــرﻋﺔ‬
‫إﺻﻼﺣﻬﺎ واﺳﺗردادﻫﺎ‪.‬‬
‫اﻟوﺛوﻗﻳﺔ‪:‬‬
‫وﻫﻲ إﺣدى أﻫم اﻷﻫداف واﻟﺗﻲ ﺗﺳﺎﻋد ﻓﻲ ﺳرﻳﺔ اﻟﺑﻳﺎﻧﺎت وﻋـدم ﻓـﺿﺣﻬﺎ وذﻟـك ﺑﺗﺣدﻳـد‬
‫اﻟﺳﻣﺎﺣﻳﺎت ﻟﻠوﺻوﻝ إﻟﻳﻬﺎ‬
‫اﻟﻣﺷﺎرﻛﺔ ﻓﻲ اﻟﺑﻳﺎﻧﺎت‪:‬‬
‫وﻫﻲ ﻣن أﻫم اﻷﻫداف ﻓﻲ اﻟﺑﻳﺋﺎت اﻟﺷﺑﻛﻳﺔ واﻟﺗﻲ ﺗﺣﺗوي ﻋﻠﻰ اﻟﻌدﻳد ﻣـن اﻟﻣـﺳﺗﺧدﻣﻳن‬
‫اﻟذﻳن ﻟﻬـم ﺳـﻣﺎﺣﻳﺎت وﺻـوﻝ ﻟﻘواﻋـد اﻟﺑﻳﺎﻧـﺎت ﺣﻳـث ﺗـﺳﺎﻋد ﻓـﻲ ﻋـدم ﺗـﺿﺎرب اﻟﺑﻳﺎﻧـﺎت‬
‫ﺑﻳن اﻟﻣﺳﺗﺧدﻣﻳن‪.‬‬
‫ﺑﻌض أﻫم اﻷدوات اﻟﺧﺎﺻﺔ ﺑﻣدﻳري ﻗواﻋد اﻟﺑﻳﺎﻧﺎت أوراﻛﻝ‪:‬‬
‫‪ :Server Manager‬ﻣـدﻳر اﻟﺧـﺎدم ـ ﺗـﺳﺗﺧدم ﻫـذﻩ اﻷداة ﻟﻣراﻗﺑـﺔ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت ﻛﻣـﺎ‬
‫ﺗﺳﺎﻋدك ﻋﻠﻰ اﻟﺗﺣﻛم ﻓﻲ إدارة ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬
‫ـ ﺗـ ــﺳﺗﺧدم ﻫـ ــذﻩ اﻷداة ﻓـ ــﻲ إدارة‬ ‫‪ :Enterprise‬ﻣـ ــدﻳر اﻟﻣؤﺳـ ــﺳﺎت‬ ‫‪Manager‬‬
‫اﻟﺻﻼﺣﻳﺎت واﻟﺗﺣﻛم ﻓﻲ ﺳﻣﺎﺣﻳﺎت اﻟﻣﺳﺗﺧدﻣﻳن ﺑواﺟﻬﺔ رﺳوﻣﻳﺔ‪.‬‬
‫‪ :SQL Loader‬ﻣﻌـﺎﻟﺞ ﻟﻐـﺔ اﻻﺳـﺗﻌﻼﻣﺎت ـ ﺗـﺳﺗﺧدم ﻫـذﻩ اﻷداة ﻓـﻲ اﺳـﺗﻳراد اﻟﺑﻳﺎﻧـﺎت‬
‫ﻣن ﻣﻠﻔﺎت ﻧﺻﻳﺔ إﻟﻰ ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ‪.‬‬

‫‪65‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ :Export Manager‬ﻣدﻳر اﻟﺗﺻدﻳر ـ ﺗﺳﺗﺧدم ﻫـذﻩ اﻷداة ﻓـﻲ ﺗـﺻدﻳر ﻗﺎﻋـدة ﺑﻳﺎﻧـﺎت‬
‫أو ارﻛــﻝ أو ﺟــدوﻝ ﻣﺣــدد ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻻﺳــﺗﺧداﻣﺎت اﻟﻧــﺳﺦ اﻻﺣﺗﻳــﺎطﻲ أو ﻟﻧﻘــﻝ‬
‫اﻟﺑﻳﺎﻧﺎت ﻣن ﻗﺎﻋدة ﺑﻳﺎﻧﺎت إﻟﻰ أﺧرى‪.‬‬
‫‪ :Import Manager‬ﻣدﻳر اﻻﺳـﺗﻳراد ـ ﺗـﺳﺗﺧدم ﻫـذﻩ اﻷداة ﻓـﻲ اﺳـﺗﻳراد ﻗﺎﻋـدة ﺑﻳﺎﻧـﺎت‬
‫أو ﺟداوﻝ ﺗم ﺗﺻدﻳرﻫﺎ ﻣن ﻗﺑـﻝ ﻋﻣﻠﻳـﺔ ﺗـﺻدﻳر ﺳـﺎﺑﻘﺔ إﻣـﺎ ﻹﺻـﻼح ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت أو‬
‫ﻟﻧﻘﻝ اﻟﺑﻳﺎﻧﺎت ﻣن ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أﺧرى‪.‬‬

‫وﺗﻌﺗﺑـ ــر اﻷو ارﻛـ ــﻝ ﻣـ ــن اﻟـ ــرواد اﻟـ ــذﻳن اﺳـ ــﺗطﺎﻋوا ﺗﻘـ ــدﻳم ﺣﻠـ ــوﻝ ﻣﺗﻛﺎﻣﻠـ ــﺔ ﻟﻠﺗﺟـ ــﺎرة‬
‫اﻹﻟﻛﺗروﻧﻳــﺔ ﻓــﻲ ﻋــﺎﻟم اﻹﻧﺗرﻧــت ﺣــوﻝ اﻟﻌــﺎﻟم واﻟﺗــﻲ ﻗﺎﻣــت ﺑﺗطــوﻳر اﻟﺑﻧــﻰ اﻟﺗﺣﺗﻳــﺔ ﻟﺧدﻣــﺔ‬
‫ﺗﻘﻧﻳــﺔ اﻟﺧــﺎدم ‪ /‬اﻟزﺑــون ﻓــﻲ ﺗطﺑﻳﻘــﺎت اﻹﻧﺗرﻧــت وﻗــدﻣت اﻷدوات واﻟﺑـراﻣﺞ واﻟﺣﻠــوﻝ ﺣــوﻝ‬
‫اﻟﺷﺑﻛﺔ اﻟﻌﺎﻟﻣﻳـﺔ اﻟﻌﻧﻛﺑوﺗﻳـﺔ‪ ،‬وﺗﻌﻣـﻝ ﺑـراﻣﺞ أو ارﻛـﻝ ﻋﻠـﻰ اﻟﺣﺎﺳـﺑﺎت اﻟﺷﺧـﺻﻳﺔ ﻣﺣطـﺎت‬
‫اﻟﻌﻣﻝ اﻟﻔرﻋﻳﺔ اﻟﺣﺎﺳﺑﺎت اﻟﻣﺗوﺳطﺔ ﺣﺎﺳﺑﺎت رﺋﻳﺳﻳﺔ وﺑﺷﻛﻝ ﻛﺑﻳر ﺑﺳﺑب ﺗﻘﻧﻳـﺔ اﻟﺗـوازي‬
‫وﺗﻘدﻳﻣﻬﺎ اﻟدﻋم ﻟﻣﻌظم ﻧظم اﻟﺗﺷﻐﻳﻝ اﻧﺗﺷﺎ اًر‪.‬‬

‫إﺻدارات اﻷوراﻛﻝ‪:‬‬

‫وﻗ ــد ﺗ ــم ﺑﻳ ــﻊ اﻹﺻ ــدار اﻷوﻝ ﻋ ــﺎم ‪ 1979‬وﺑﻌ ــد أن ﻻﻗ ــﻰ رواﺟ ــﺎً ﺳـ ـرﻳﻌﺎً ﺗواﻟ ــت‬
‫اﻟﺷرﻛﺔ ﺑطرح اﻹﺻدارات اﻟﺟدﻳدة واﻟﻣﺗطورة ﻋﻠﻰ اﻟﺗواﻟﻲ وﻫﻲ ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬

‫اﻹﺻدار اﻟﺛﺎﻧﻲ‪ :‬ﻓﻘد ﺗم ﺑﻧﺎﺋـﻪ ﻣـن أﺟـﻝ اﻟﻌﻣـﻝ ﻣـﻊ ﺣـوا ﺳـﻳب اﻟ ـ )ﺑـﻲ دي ﺑـﻲ اﻟرﻗﻣﻳـﺔ(‬
‫واﻟﺗﻲ ﺗﻌﻣﻝ ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ )أر إس إﻛس( واﻟﺗﻲ ﻋﻣﻠت ﻓﻳﻣﺎ ﺑﻌد ﻋﻠﻰ ﻧظـﺎم )دي‬
‫اي ﺳﻲ ﻓﺎﻛس(‪.‬‬

‫اﻹﺻــدار اﻟﺛﺎﻟــث‪ :‬ﻣــن اﻟﻧظــﺎم ﺗــم طرﺣــﻪ ﻋ ـﺎم ‪ 1983‬ﺣﻳــث أﺟرﻳــت ﻋﻠﻳــﻪ اﻟﻛﺛﻳــر ﻣــن‬
‫اﻟﺗﺣﺳﻳﻧﺎت ﺧﺎﺻﺔ ﺗﻠـك اﻟﻣﺗﻌﻠﻘـﺔ ﺑـﺻﻳﻐﺔ )ﻟﻐـﺔ اﻻﺳﺗﻔـﺳﺎرات اﻟﻘﻳﺎﺳـﻳﺔ( وﺗـم ﻛﺗﺎﺑﺗـﻪ ﺑﻠﻐـﺔ‬
‫)ﺳﻲ( وﺗم ﺗﻐﻳﻳر اﺳم اﻟﺷرﻛﺔ ﻣن ـ أر إس أي ـ إﻟﻰ ﻣﺟﻣوﻋﺔ أوراﻛﻝ‪.‬‬

‫اﻹﺻــدار اﻟراﺑــﻊ‪ :‬ﻣــن أو ارﻛــﻝ ﺗــم إﻧﺟــﺎزﻩ ﻋــﺎم ‪ 1984‬وﻟﻘــد دﻋــم ﻫــذﻩ اﻹﺻــدار ﻧظــﺎﻣﻲ‬
‫اﻟﺗــﺷﻐﻳﻝ )ﻓــﺎﻛس( و)أي ﺑــﻲ أم ﻓــﻲ أم( ﻛﻣــﺎ ﻛــﺎن أوﻝ إﺻــدار ﻳــدﻋم ﺧﺎﺻــﻳﺔ ﺗﻧﺎﺳــق‬
‫اﻟﻘراءة‪.‬‬

‫‪66‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫اﻹﺻــدار اﻟﺧــﺎﻣس‪ :‬ﻣــن أو ارﻛــﻝ ﻓﻘــد ﺗــم إﻧﺟــﺎزﻩ ﻋــﺎم ‪ 1985‬وﻗــدم ﻫــذا اﻹﺻــدار دﻋﻣــﺎً‬
‫ﻟﺗﻘﻧﻳــﺔ اﻟزﺑــون‪/‬اﻟﺧـﺎدم ﺑﺎﺳــﺗﺧدام )ﻟﻐــﺔ اﻻﺳﺗﻔــﺳﺎرات اﻟﻘﻳﺎﺳــﻳﺔ( ﻛﻣــﺎ اﻧــﻪ أوﻝ ﻣﻧــﺗﺞ ﻳﻌﻣــﻝ‬
‫ﺿﻣن ﻧظﺎم اﻟﺗﺷﻐﻳﻝ واﻟذي اﺳﺗطﺎع ﺗﺟﺎوز ﺣﺎﺟز ‪ 640‬ﻛﻳﻠو ﺑﺎﻳت ﻣن ﻧظـﺎم اﻟﺗـﺷﻐﻳﻝ‬
‫‪. DOS‬‬

‫اﻹﺻــدار اﻟــﺳﺎدس‪ :‬ﻣــن أو ارﻛــﻝ ﺗــم إﻧﺟــﺎزﻩ ﻋــﺎم ‪ 1988‬وﻟﻘــد أﺿــﺎف ﺗﻘﻧﻳــﺔ اﻟﻘﻔــﻝ ﻋﻠــﻰ‬
‫ﻣﺳﺗوى ﻣﻧﺧﻔض إﺿﺎﻓﺔ إﻟﻰ اﻟﻌدﻳد ﻣن اﻟﺗﺣﺳﻳﻧﺎت واﻟوظـﺎﺋف واﻟﻣﻧـﺻﺎت ﻛﻣـﺎ أﺿـﻳف‬
‫إﻟﻳــﻪ ﺧﻳــﺎر اﻟﺗ ـوازي واﻟــذي ﻳﻌﻣــﻝ ﻋﻠــﻰ ﻧظــﺎم )دي اي ﺳــﻲ ﻓــﺎﻛس( وذﻟــك ﻋــﺎم ‪1991‬‬
‫وﻣن ﺛم أﺻﺑﺢ ﻫذا اﻟﺧﻳﺎر ﻣﺗﺎﺣﺎ ﺿﻣن اﻟﻌدﻳد ﻣن اﻟﻣﻧﺻﺎت‪.‬‬

‫اﻹﺻــــدار اﻟــــﺳﺎﺑﻊ‪ :‬ﺗ ــم طرﺣ ــﻪ ﻋ ــﺎم ‪ 1992‬وﺗ ــم ﻋﻠﻳ ــﻪ إﺟـ ـراء اﻟﻌدﻳ ــد ﻣ ــن اﻟﺗﻐﻳﻳـ ـرات‬
‫واﻹﺿــﺎﻓﺎت ﻣﺛــﻝ ﻣﻧطﻘــﺔ اﻟــذاﻛرة واﻟﻣﻌﺎﻟﺟــﺔ اﻟﻣرﻛزﻳـﺔ واﺳــﺗﺧدام اﻟــدﺧﻝ واﻟﺧــرج واﺣﺗــوى‬
‫أﻳﺿﺎ ﻋﻠﻰ اﻟﻛﺛﻳر ﻣن اﻷدوات اﻟﺧﺎﺻﺔ ﺑﻣدﻳري ﻗواﻋد اﻟﺑﻳﺎﻧﺎت‬

‫اﻹﺻــدار اﻟﺛــﺎﻣن‪ :‬واﻟــذي ﻳﺗــﺿﻣن ﻣﻔﻬــوم اﻷﻏـراض ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ اﻟﻌدﻳــد ﻣــن اﻟﻣﻳـزات‬
‫واﻟﺗﻘﻧﻳ ـ ــﺎت وأدوات إدارة ﻗواﻋ ـ ــد اﻟﺑﻳﺎﻧ ـ ــﺎت واﻟ ـ ــﺳﻣﺎح ﻟوﺟ ـ ــود ﺣﻘ ـ ــوﻝ ﺗﺗ ـ ــﺳﻊ إﻟ ـ ــﻰ ﺣ ـ ــد ‪4‬‬
‫ﺟﻳﺟﺎﺑﺎﻳت ﻟﻠﺣﻘﻝ اﻟواﺣد ﻛﺣد أﻗﺻﻰ‪.‬‬

‫أﺧﻳ ـ ارً وﺣﺗــﻰ ﻳوﻣﻧــﺎ ﻫــذا ﻓﻘــد ﺗــم طــرح اﻹﺻــدار اﻷﺧﻳــر ﻣــن أوراﻛــﻝ وﻫــو اﻹﺻــدار‬
‫اﻟﻌﺎﺷر‪.‬‬

‫‪67‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part1

‫ ﺍﳌﺨﺼﺼﺔ ﻟﻠﻮﻳﻨﺪﻭﺯ‬i9 ‫ﺗﻨﺼﻴﺐ ﻗﺎﻋﺪﺓ ﺑﻴﺎﻧﺎﺕ ﺃﻭﺭﺍﻛﻞ‬


NT/2000/XP
"‫ﻟﻠﺣــﺻوﻝ ﻋﻠــﻰ أﻏﻠــب ﻣﻧﺗﺟــﺎت أو ارﻛــﻝ ﻣــن ﻣوﻗــﻊ أو ارﻛــﻝ اﻟرﺳــﻣﻲ "اﻟﺗــﺳﺟﻳﻝ ﻣﺟﺎﻧــﺎ‬
:‫وراﺑط اﻟﺗﺳﺟﻳﻝ ﻫو‬

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

: i9 ‫ﺗﻧﺻﻳب ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ‬

OraHome90 : ‫اﻻﺳم‬
< C> or <D> or.. :\Oracle\ora90: ‫اﻟﻣﺳﺎر‬
-: ‫وذﻟك ﻛﻣﺎ ﻓﻲ اﻟﺷﺎﺷﺔ اﻟﺗﺎﻟﻳﺔ‬

Next ‫ﺛم‬

68
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻳﻣﻛن ﺗﻐﻳﻳر أﺳﻣﺎء وﻣوﻗﻊ اﻹﻋداد ﻟﻛن أﻫم ﺷﻲ أن ﻻ ﺗﻛون ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت واﻟدﻳﻔﻠوﺑر‬
‫ﻓــﻲ ﻣﻛــﺎن واﺣــد " أي ﻓــﻲ ﻧﻔــس اﻟﻣﻠــف أو اﻟﻣﺟﻠــد" وﻳﻣﻛــن أن ﻳﻛوﻧـوا اﻻﺛﻧــﺎن ﻓــﻲ ﺟــزء‬
‫واﺣد ﻓﻲ اﻟﻬﺎرد دﻳﺳك ﻣﺛﻝ اﻟﺟزء ‪ C:‬أو ‪ D:‬وﻟﻛن ﻫﻧﺎ ﺗم اﺧﺗﻳﺎر اﻷﻣﺎﻛن اﻻﻓﺗراﺿﻳﺔ‬
‫ﻟﻛ ــﻲ ﻳ ــﺗم ﻓﻬ ــم اﻟﻣﺛ ــﺎﻝ وﺗوﺻ ــﻳﻠﻪ ﺑطرﻳﻘ ــﻪ واﺿ ــﺣﺔ ﻟﻠﺟﻣﻳ ــﻊ ‪ ,‬ﻛﻣ ــﺎ ﻳﺟ ــب أن ﻳ ــﺗم إﻋ ــداد‬
‫اﻟدﻳﻔﻠوﺑر ﻗﺑﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫ﺛم ﻗم ﺑﺎﺧﺗﻳﺎر ﺗﻧﺻﻳب ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ ‪: i9‬‬

‫ﻗم ﺑﺎﺧﺗﻳﺎر ﻧوع ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ اﻟذي ﺗرﻳد ﺗﻧﺻﻳﺑﻪ ﻓﻲ ﺟﻬﺎزك‪:‬‬

‫‪69‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺛم ﻗم ﺑﺎﺧﺗﻳﺎر ﻧوع اﻟﺗﻧـﺻﻳب اﻻﺧﺗﻳـﺎر اﻷوﻝ أﻓـﺿﻝ ﻟﻐﻳـر اﻟﺧﺑـراء ﻓـﻲ أﻧـواع اﻟﺗﻧـﺻﻳب‬
‫اﻟﻣﺗﻘدﻣﺔ ‪General Purpose‬‬

‫ﻗم ﺑﺗﺣدﻳد أﺳم ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت )‪ (SID‬و‪ Global database name‬ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت‬

‫وﻟﻳﻛون ‪ global database name‬ﻫو ‪ORACLE.US.COM‬‬

‫وطﺑﻌﺎ ﺳﻳﻛون أﺳم ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ )‪ (SID‬ﻫو ‪ORACLE‬‬

‫‪70‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﻳﺗم طﻠب ﺗﺣدﻳد ﻣوﻗﻊ ‪ Database file‬ﻓﻼ ﺗﻐﻳﻳر اﻟﻣوﻗﻊ‪.‬‬

‫ﺗظﻬر ﻟﻧﺎ اﻵن ﺛﻼﺛﺔ ﺧﻳﺎرات ﻟﺗﺣدﻳد ﻧوع اﻷﺣرف‪:‬‬

‫‪ ‬اﻟﻧوع اﻻﻓﺗراﺿﻲ ـ ﻧﻔس اﻟﻣﺳﺗﺧدم ﻓﻲ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ ـ‬


‫‪ ‬اﺳﺗﺧدام) ﺗﻘﻧﻳﺔ اﻟﻳوﻧﻳﻛود( وﻫﻲ ﺗﻘﻧﻳﺔ ﺗﺳﺗﺧدم ﻷوﻝ ﻣرﻩ ﻓـﻲ أو ارﻛـﻝ وﻫـﻲ ﺗـدﻋم‬
‫ﻛﻝ اﻟﻠﻐﺎت ـ ﻳﻔﺿﻝ اﺧﺗﻳﺎرﻫﺎ ـ‬
‫‪ ‬اﻻﺧﺗﻳﺎر ﻣن اﻟﻘﺎﺋﻣﺔ اﻟﻧوع اﻟذي ﺗرﻳدﻩ‪.‬‬

‫وذﻟك ﺣﺳب اﻟﺷﺎﺷﺔ أدﻧﺎﻩ‪.‬‬

‫‪71‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺛم أﺿﻐط ﻋﻠﻰ زر ‪Next‬‬

‫ﻧﺣدد اﻵن ﻧوع ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ اﻟﻣراد ﺗﻧﺻﻳﺑﻬﺎ واﻷدوات اﻟﺗﻲ ﺳوف ﻳﺗم ﺗﻧـﺻﻳﺑﻬﺎ‬
‫ﻣﻌﻬﺎ ﻛﻣﺎ ﻓﻲ اﻟﺷﻛﻝ‪:‬‬

‫ﻧﺿﻐط ‪ Install‬ﻟﺑدء اﻟﺗﻧﺻﻳب‬

‫‪72‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫أﺛﻧﺎء اﻟﺗﻧﺻﻳب ﺳﻳﺗم طﻠب اﻟـ ‪ CD‬رﻗم ‪ 2‬ورﻗـم ‪ 3‬وﺑﻌـد اﻻﻧﺗﻬـﺎء ﻣـن ﻋﻣﻠﻳـﺔ اﻟﺗﻧـﺻﻳب‬
‫ﺑﻧﺟﺎح ﺳوف ﺗظﻬر ﻫذﻩ اﻟﺷﺎﺷﺔ‪:‬‬

‫‪73‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫ﺑﻌد اﻻﻧﺗﻬﺎء ﻣن اﻟﺗﻧﺻﻳب ﻋﻠﻳﻧﺎ اﻟﻘﻳﺎم ﺑﺑﻌض اﻹﻋدادات‪:‬‬

‫ﻣن ﺟﻬﺎز اﻟﻛﻣﺑﻳوﺗر اﻟﻣوﺟودة ﻓـﻲ ﺳـطﺢ اﻟﻣﻛﺗـب ﻧـﺿﻐط زر اﻟﻣـﺎوس اﻟﻳﻣـﻳن وﻣـن ﺛـم‬
‫اﺧﺗــﺎر ‪ Properties‬وﺳــوف ﺗظﻬــر ﻟــك ﺷﺎﺷــﺔ ‪ properties System‬اﺧﺗــﺎر ﻣﻧﻬــﺎ‬
‫‪Computer Name‬‬

‫ﺛــم ﻧ ـﺿﻐط ﻋﻠــﻰ زر ‪ Change‬ﺳــﺗظﻬر ﺷﺎﺷــﺔ ‪Computer Name Changes‬‬


‫ﻧﺿﻐط ﻋﻠﻰ زر ‪More‬‬

‫‪74‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part1

‫ وﻓـﻰ ﺧﺎﻧـﺔ‬DNS Suffix and NetBIOS Computer Name ‫ﺳـﺗظﻬر ﺷﺎﺷـﺔ‬


ORACLE.US.COM ‫ ﻧﻛﺗـب‬computer suffix of this Primary DNS
‫ ﺑﻌ ــد إﻋ ــﺎدة ﺗ ــﺷﻐﻳﻝ‬.‫ وﺳ ــوف ُﻳطﻠ ــب إﻋ ــﺎدة ﺗ ــﺷﻐﻳﻝ اﻟﺟﻬ ــﺎز‬OK ‫وﻧـ ـﺿﻐط ﻋﻠ ــﻰ زر‬
‫ ﺑﻘﺎﻋدة ﺑﻳﺎﻧﺎت‬2000 Release 6.0 OR i6 ‫اﻟﺟﻬﺎز ﻧﻛﻣﻝ طرﻳﻘﺔ اﺗﺻﺎﻝ اﻟدﻳﻔﻠوﺑر‬
i9 ‫أوراﻛﻝ‬

i9 ‫ ﺑﻘﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ‬2000 Release 6.0 OR i6 ‫اﺗﺻﺎﻝ اﻟدﻳﻔﻠوﺑر‬


: ‫ وذﻟك ﻛﺎﻟﺗﺎﻟﻲ‬configuration Net service Name Local ‫ ﻗم ﺑﺈﻧﺷﺎء‬-1
:‫ واﻟﻣوﺟودة ﻓﻲ‬Net Configuration Assistant ‫ﻗم ﺑﺗﺷﻐﻳﻝ اﻷداة اﻟﺗﺎﻟﻳﺔ‬
Start -> programs -> Oracle - Orahome90 -> Configuration and Migration Tools ->
Net Configuration Assistant
‫ ﺛم اﺿـﻐط ﻋﻠـﻰ زر‬Local Net service Name configuration ‫ اﺧﺗﺎر‬
.Next
.Next ‫ ﺛم اﺿﻐط ﻋﻠﻰ زر‬Add ‫ اﺧﺗﺎر‬
‫ ﺛـم اﺿـﻐط ﻋﻠـﻰ زر‬Oracle 8i or later database or service ‫ اﺧﺗـﺎر‬
.Next
‫ اﻟـذي ﻗﻣـت ﺑﺗﺣدﻳـدﻩ ﻋﻧـد إﻋـداد )ﺗﻧـﺻﻳب( ﻗﺎﻋـدة‬Service Name ‫ ﺣدد اﺳـم‬
global database ORACLE.US.COM " ‫اﻟﺑﻳﺎﻧﺎت وﻫو ﻧﻔـس اﺳـم اﻟ ـ‬
.Next ‫ " ﺛم اﺿﻐط ﻋﻠﻰ زر‬name
75
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part1‬‬

‫‪ ‬ﻗم ﺑﺗﺣدﻳد اﻟﺑروﺗوﻛوﻝ وﻫو ‪ TCP‬ﺛم اﺿﻐط ﻋﻠﻰ زر ‪. Next‬‬


‫‪ Host‬وﻫ ـ ــو إﻣ ـ ــﺎ اﺳـ ــم اﻟﻛﻣﺑﻳ ـ ــوﺗر أو رﻗ ـ ــم ‪TCP/IP‬‬ ‫‪ ‬ﻗـ ــم ﺑﺗﺣدﻳ ـ ــد ‪Name‬‬
‫ﻟﻠﻛﻣﺑﻳوﺗر‪ .‬ﻻ ﺗﻘم ﺑﺗﻐﻳﻳر رﻗم اﻟـ ‪ Port‬ﺛم اﺿﻐط ﻋﻠﻰ زر ‪.Next‬‬
‫‪ ‬اﺧﺗﺎر ‪ Yes, perform a test‬ﺛم اﺿﻐط ﻋﻠﻰ زر ‪.Next‬‬
‫ﻳﺟــب أن ﺗﻛــون ﻧﺗﻳﺟــﺔ اﻻﻣﺗﺣــﺎن ‪ٕ Connecting...Test successful.‬واﻻ ﻳﺟــب‬
‫اﻟﺗﺄﻛد ﻣن اﻟﺑﻳﺎﻧﺎت اﻟﺗﻲ ﻗﻣت ﺑﺈدﺧﺎﻟﻬﺎ ﻓﻲ اﻟﺳﺎﺑق أو ﻗم ﺑﺎﻟﺿﻐط ﻋﻠﻰ زر ‪Change‬‬
‫‪ login‬وﻗم ﺑوﺿﻊ اﻟﺗﺎﻟﻲ‪:‬‬
‫‪Username: system‬‬
‫‪Password: manager‬‬
‫إذا ﺗم اﻻﺗﺻﺎﻝ ﺑﻧﺟﺎح اﺿﻐط ﻋﻠﻰ زر ‪.Next‬‬
‫‪ -‬ﻗــم ﺑﺗﺣدﻳــد اﺳــم ﻟﻠـ ـ ‪ Net Service‬اﻟﺗــﻲ ﻗﻣــت ﺑﺈﻧــﺷﺎﺋﻬﺎ وﻟــﻳﻛن ‪ developer‬ﺛــم‬
‫اﺿﻐط ﻋﻠﻰ زر ‪.Next‬‬
‫‪ -‬ﺛم اﺿﻐط ﻋﻠﻰ ‪ Next‬ﺛم ‪ Next‬ﺛم ‪. Finish‬‬
‫ﻗ ــم ﺑﺄﺧ ــذ ﻧ ــﺳﺧﻪ ﻣ ــن اﻟﻣﻠ ــف اﻟﻣ ــﺳﻣﻰ ‪ tnsnames.ora‬اﻟﻣوﺟ ــود ﻓ ــﻲ اﻟﻣوﻗ ــﻊ اﻟﺗ ــﺎﻟﻲ‬
‫‪Oracle\Ora90\network\admin :‬‬

‫ﻗــم ﺑﻠــﺻق اﻟﻣﻠــف اﻟــﺳﺎﺑق ﻓــﻲ اﻟﻣوﻗــﻊ اﻟﺗــﺎﻟﻲ اﻟﻣوﺟــود ﺑــﻪ ﻣﻠــف ﺑــﻧﻔس اﻻﺳــم واﻟﻣوﻗــﻊ‬
‫ﻫو ‪ORANT\net80\admin‬‬

‫ﻗم ﺑﺗﻐﻳﻳر اﺳم اﻟﻣﻠف إﻟﻰ ‪ sqlnet.old‬اﻟﻣوﺟود ﻓﻲ اﻟﻣوﻗﻌﻳن اﻟﺗﺎﻟﻳﻳن‪:‬‬

‫أ‪Oracle\Ora90\network\admin -‬‬

‫ب‪ORANT\net80\admin -‬‬

‫ﻗم ﺑﺗﺷﻐﻳﻝ أي أداﻩ ﻣن أدوات اﻟدﻳﻔﻠوﺑر‬

‫ﺑﻳﺎﻧﺎت اﻟدﺧوﻝ ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬

‫‪Username: system‬‬

‫‪76‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part1

Password: manager

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

.‫وﺳوف ﻳﺗم اﻻﺗﺻﺎﻝ ﺑﻳن اﻟدﻳﻔﻠوﺑر وﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‬

‫ﻣﻊ ﲤﻨﻴﺎﺗﻨﺎ ﻟﻜﻢ ﺑﺎﻟﺘﻮﻓﻴﻖ ﻭﺍﻟﻨﺠﺎﺡ ﺍﻟﺪﺍﺋﻤﲔ‬

77
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

Oracle
Part 2

0
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫ﻣﻘﺪﻣـــﺔ‪:‬‬

‫�ﺮﺟـﻮ ﺃﻥ ﺗﻜـﻮﻥ ﻋﺰﻳــﺰﻱ ﺍﻟﻄﺎﻟـﺐ ﻗـﺪ ﻛﻮ�ــﺖ ﻓﻜـﺮﺓ ﺟﻴـﺪﺓ ﻋــﻦ‬

‫ﺍﻷﻭﺭﺍﻛــﻞ ﻣــﻦ ﺧﻼﻟـــ ﺍﳉــﺰﺀ ﺍﻷﻭﻝ‪ .‬ﻭﺳــﻨﺘﻌﺮﺽ ﰲ ﻫــﺬﺍ ﺍﳉــﺰﺀ ﺇﱃ‬

‫ﺍﻟﺘﻌﺮﻑ ﻋﻠﻰ ﺍﻷﻭﺭﺍﻛﻞ ﺑﺸﻜﻞ ﻋﺎﻡ ﻣـﻦ ﺧﻼﻟــ ﺍﻟﺘﻌـﺮﻑ ﻋﻠـﻰ ﺍﻷﻭﺍﻣـﺮ‬

‫ﺍﳋﺎﺻﺔ ﺑﻪ ﻭﻛﻴﻔﻴﺔ ﺍﻟﺘﻌﺎﻣﻞ ﻣـﻊ ﺍﳉـﺪﺍﻭﻝ ﻭ‪ .....‬ﻋﻠﻨـﺎ �ـﺴﺘﻄﻴﻊ ﺍﻟـﺪﺧﻮﻝ ﺇﱃ‬

‫ﻋﺎﱂ ﺍﻷﻭﺭﺍﻛﻞ ﺍﻟﻮﺍﺳﻊ ﺑﻜﻞ ﺛﻘﺔ ﻭﺩﺭﺍﻳﺔ‪.‬‬

‫‪1‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﻣر ‪:CREATE‬‬

‫ﻳﻘــوم ﻫــذا اﻷﻣــر ﺑﺈﻧــﺷﺎء ‪ USER‬ﻋﻠــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت وﻳﺟــب وﺿــﻊ اﺳــم اﻟ ـ ‪USER‬‬
‫واﻟذي ﻫو ﻓﻲ ﻫذا اﻟﻣﺛﺎﻟـ ‪ Azzam‬ﺛم ﻳﺄﺗﻲ ﺑﻌدﻫﺎ ‪ BY IDENTIFIED‬وﻫـﻲ ﻛﻠﻣـﺔ‬
‫اﻟﺳر وﻫﻲ ﻫﻧﺎ ‪.236‬‬
‫"‪CREATE USER Azzam IDENTIFIED BY "236‬‬
‫ﻳﺟـب أن ﺗﺧـرج ﻟـك اﻟرﺳـﺎﻟﺔ اﻟﺗﺎﻟﻳـﺔ ‪ .User created‬أي أﻧـﻪ ﺗـم إﻧـﺷﺎء اﻟﻣـﺳﺗﺧدم‪ .‬إذا‬
‫ﻗﺎﻋدة اﺳﺗﺧدام اﻹﻧﺷﺎء اﻟﻣﺳﺗﺧدم ﻫﻲ‪:‬‬
‫"‪CREATE USER NAMEOF USER IDENTIFIED BY "YOUR PASSWORD‬‬

‫اﻷﻣر ‪:GRATN‬‬

‫وﺣﺗــﻰ ﻧــﺳﺗطﻳﻊ اﻟــدﺧوﻝ إﻟــﻰ اﻟﻣــﺳﺗﺧدم ﻳﺟــب إﻋطــﺎءﻩ اﻟــﺻﻼﺣﻳﺎت وﻫــذﻩ اﻟــﺻﻼﺣﻳﺎت‬
‫ﺗ ــﺳﻣﻰ ‪ GRATNS‬ﺣﻳ ــث ﻳ ــﺗم ﻣ ــن ﺧﻼﻟﻬ ــﺎ ﺗﻔ ــوﻳض اﻟﻣ ــﺳﺗﺧدم ﻟﻠ ــدﺧوﻝ إﻟ ــﻰ ﻗﺎﻋ ــدة‬
‫اﻟﺑﻳﺎﻧﺎت‪.‬‬
‫‪GRANT OBJECTNAME TO YOURUSERNAME‬‬

‫وﻫ ــﻲ ﺗﻌﻧ ــﻲ إﻋط ــﺎء ﺻ ــﻼﺣﻳﺔ اﻻﺗ ــﺻﺎﻟـ إﻟ ــﻰ اﻟﻣ ــﺳﺗﺧدم وﺗﻌط ــﻰ ﺻ ــﻼﺣﻳﺎت أﺧ ــرى‬
‫ﻟﻠﻣـ ـ ـ ـ ـ ــﺳﺗﺧدم ﻣﻧﻬـ ـ ـ ـ ـ ــﺎ ‪ RECOURCE‬وﺗﻌﻧـ ـ ـ ـ ـ ــﻲ ﻣـ ـ ـ ـ ـ ــورد وﻛـ ـ ـ ـ ـ ــذﻟك ‪ DBA‬وﺗﻌﻧـ ـ ـ ـ ـ ــﻲ‬
‫‪ DATABASE ADMINISTRATION‬ﻣدﻳر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪:‬‬

‫ﻻﺣظ اﻟﻛود أدﻧﺎﻩ‪:‬‬


‫‪GRANT RESOURCE,DBA TO Azzam‬‬
‫ﻟﻘــد ﺗــم إﻋطــﺎء اﻟﻣــﺳﺗﺧدم ﺧﺎﺻــﺗﻳن ﻣﻌــﺎً ﻣــن ﺧﻼﻟ ـ اﻟﻔﺎﺻــﻠﺔ ‪ ,‬ﻫــذا ﻳﻌﻧــﻲ أﻧــﻪ ﻳﻣﻛﻧﻧــﺎ أن‬
‫ﻧﻌطﻲ ﻋدد ﻣن اﻟﺻﻼﺣﻳﺎت ﺑﺳطر واﺣد وﺑﺎﺳﺗﺧدام اﻟﻔﺎﺻﻠﺔ‪.‬‬

‫‪2‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﻣر ‪:CONNECT‬‬

‫وﻫو ﻟﻠدﺧوﻝ إﻟﻰ اﻟﻣﺳﺗﺧدم ﺣﺳب اﻟﺗﺎﻟﻲ‪:‬‬


‫‪CONNECT Azzam/236‬‬

‫ﺳﻳﺗم اﻻﺗﺻﺎﻟـ ﻫﻧﺎ ﺑﺎﻟﻣـﺳﺗﺧدم اﻟﻣـﺳﻣﻰ ‪ Azzam‬وﻛﻠﻣـﺔ اﻟـﺳر ‪ 236‬وﺳـوف ﺗظﻬـر ﻟﻧـﺎ‬
‫رﺳﺎﻟﺔ ﺑﺄﻧﻪ ﺗم اﻻﺗﺻﺎﻝ‪.‬‬

‫وﻳﻣﻛﻧﻧﺎ ﻣﻌرﻓﺔ ذﻟك ﻣن اﻷﻣر اﻟﺗﺎﻟﻲ‪:‬‬


‫‪SHOW USER‬‬
‫ﻓﻬذا اﻷﻣر ﻳﺑﻳن ﻟﻧﺎ اﺳم اﻟﻣﺳﺗﺧدم‬

‫‪:DUMMY TABLE‬‬

‫ﻫــو ﺟــدوﻝ أﻧــﺷﺄﺗﻪ أو ارﻛــﻝ ﻟﻛــﻲ ﻧ ـﺳﺗﻌﻳن ﺑــﻪ ﺑــﺑﻌض اﻟﻌﻣﻠﻳــﺎت ﻓﻬــو ﻳﺗﻌﺎﻣــﻝ ﻣــﻊ ﻗﺎﻋــدة‬
‫اﻟﺑﻳﺎﻧﺎت ﻣﺑﺎﺷرة ﻣﺛﻝ اﺳﺗﻌراض اﻟﺗﺎرﻳﺦ واﺳم ﻫذا اﻟﺟدوﻝ ﻫو ‪.DUAL‬‬

‫ﻻﺳﺗﻌ ارض ﺗﺎرﻳﺦ اﻟﻳوم ﻧﻛﺗب اﻷﻣر اﻟﺗﺎﻟﻲ‪:‬‬


‫‪SELECT SYSDATE FROM DUAL‬‬

‫وأﻫم ﻣﺎ ﺳﻧﺗﻧﺎوﻟﻪ اﻵن ﻫو طرق إﻧﺷﺎء اﻟﺟداوﻝ واﻟرﺑط ﺑﻳﻧﻬﺎ وﺗﻌرﻳف اﻟﻣﺣددات‪.‬‬

‫اﻷﻣر‪:CREATE TABLE‬‬

‫ﻋﻧــد اﻟﻘﻳــﺎم ﺑﺈﻧــﺷﺎء ﺟــدوﻝ ﻳﻌﻧــﻲ أن ﻧﻬﻳــﺄ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت وﺑﻌ ـد ذﻟــك ﻳﺟــب وﺿــﻊ اﺳــم‬
‫اﻟﺟــدوﻝ ﻓﻧﻘــوﻝ ‪ CREATE TABLE STUDENTS‬ﻣــﺛﻼً وﻧــﺿﻊ ﺑﻌــدﻫﺎ ﻗــوس‬
‫ﻟﻳــﺷﻣﻝ ﻋــدد اﻟﺣﻘــوﻝ ﻫــذا اﻟﺟــدوﻝ وﻳﻧــﺻﺢ داﺋﻣــﺎً ﺑﺎﺗﺧــﺎذ أوﻝ ﺛﻼﺛــﺔ ﺣــروف ﻣــن اﺳــم‬
‫اﻟﺟدوﻝ ﻋﻧد ﺗﺳﻣﻳﺔ أي ﺣﻘﻝ ﺗﺎﺑﻊ ﻟﻬذا اﻟﺟدوﻝ واﻟﻬدف ﻫـو ﻣﻌرﻓـﺔ أن ﻫـذا اﻟﺣﻘـﻝ ﺗـﺎﺑﻊ‬
‫ﻟﻠﺟدوﻝ ﺛم ﻧﺣدد ﻧوع اﻟﺣﻘﻝ أي ‪ DATATYPE‬وﺳوف ﻧﺗﻧﺎوﻝ ﺛﻼﺛﺔ أﻧواع ﻫﻲ‪:‬‬

‫‪3‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ :VARCHAR2‬وﻫــﻲ ﺗﺄﺧــذ أرﻗــﺎم وﺣــروف ﻓــﻲ اﻟﺣﻘــﻝ وﻳﺟــب ﺗﺣدﻳــد طــوﻝ اﻟﺣﻘــﻝ‬
‫وﻧﻘ ـ ـ ـ ـ ــﺻد ﺑط ـ ـ ـ ـ ــوﻝ اﻟﺣﻘ ـ ـ ـ ـ ــﻝ ﻫ ـ ـ ـ ـ ــو ﻋ ـ ـ ـ ـ ــدد اﻷﺣ ـ ـ ـ ـ ــرف ﻓ ـ ـ ـ ـ ــﻲ ﻫ ـ ـ ـ ـ ــذا اﻟﺣﻘ ـ ـ ـ ـ ــﻝ ﻓﻧﻘ ـ ـ ـ ـ ــوﻝ‬
‫‪ 20 VARCHAR2‬أي أن طوﻝ اﻟﺣﻘﻝ ‪ 20‬ﺣرف‪.‬‬

‫‪ :NUMBER‬وﻫــﻲ ﺗﺄﺧــذ أرﻗــﺎم ﻋﺎدﻳــﺔ أو أرﻗــﺎم ﻋــﺷرﻳﺔ وﻳﺟــب أﻳــﺿﺎً ﺗﺣدﻳــد طــوﻝ‬
‫اﻟﺣﻘ ــﻝ ﻓﻳ ــﻪ وﻫ ــﻲ ﻋـ ـدد اﻟﺧﺎﻧ ــﺎت ﻓﻧﻘ ــوﻝ ‪ NUMBER4‬وﻳﻌﻧ ــﻲ رﻗ ــم ﻣﻛ ــون ﻣ ــن أرﺑ ــﻊ‬
‫ﺧﺎﻧﺎت ﻛﺎﻟﺗﺎﻟﻲ ‪.1234‬‬

‫‪ :DATE‬وﻫو اﻟﺗﺎرﻳﺦ ﻛﻣﺎ ﻫو ﻣﻌروف واﻟﻘﺎﻋدة ﻹﻧﺷﺎء اﻟﺟدوﻝ ﻫﻲ‪:‬‬


‫‪CREATE TABLE table_name‬‬
‫‪(column1 datatype ,‬‬
‫‪column2 datatype ,‬‬
‫‪..‬‬
‫)‬

‫ﺑﻌـ ــد أن ﺗﻌرﻓﻧـ ــﺎ ﻋﻠـ ــﻰ طرﻳﻘـ ــﺔ إﻧـ ــﺷﺎء اﻟﺟـ ــداوﻝ ﺳـ ــﻧرى اﻵن طرﻳﻘـ ــﺔ رﺑطﻬـ ــﺎ ﻧـ ــﺳﺗﺧدم‬
‫اﻟﻣﺣددات أو ﻣﺎ ﻳﺳﻣﻰ ﺑـ ‪ CONSTRAINTS‬طﺑﻌﺎ اﻟﻣﺣددات أﻧواع وأﺷﻛﺎﻟـ ﺳـوف‬
‫ﻧطــرق إﻟــﻰ ﻣــﺎ ﻳﻠزﻣﻧــﺎ وﻫــو اﻟـــ ‪ PRIMARY KEY‬وﻫــو اﻟﻣﻔﺗــﺎح اﻷﺳﺎﺳــﻲ وﻫــو‬
‫ﻋﺑﺎرة ﻋن ﺣﻘﻝ وﺣﻳد ﻳﺗم ﺗﺣدﻳدﻩ ﺑﺎﻟﺟـدوﻝ وﻫـذا اﻟﺣﻘـﻝ ﻧﻘـوم ﺑﺗﻌﻳﻳﻧـﻪ ﺑﻬـدف ﻋـدم ﺗﻛـرار‬
‫اﻟﺑﻳﺎﻧـﺎت وﻫـو ﻻ ﻳﺄﺧـذ ﻗﻳﻣـﺔ ﻓﺎرﻏـﺔ ٕواﻧﻣـﺎ ﻳﺄﺧــذ ﻣﺟﻣوﻋـﺔ وﻛـذﻟك ﻳﻣﻛـن ﺗﺣدﻳـد اﻛﺛـر ﻣــن‬
‫ﺣﻘﻝ ﻓﻲ اﻟﺟدوﻝ ﻟﺗﻌﻳﻧﻬم ﻋﻠﻰ أﻻ ﻳﺗﻛـرروا وﻟﻛـن ﻛوﺣـدة واﺣـدة وﻋﻣوﻣـﺎً واﻟﺟـدوﻝ داﺋﻣـﺎً‬
‫ﻳﺣﺗوي ﻋﻠﻰ ‪ PRIMARY KEY‬واﺣد‪.‬‬

‫‪4‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪:CONSTRAINT‬‬

‫ﻫﻧﺎ ﻧﻬﻳﺄ اﻟﺟدوﻝ وﻧذﻛر اﺳـﻣﻪ ﺛـم ﻧـذﻛر ﻧوﻋـﻪ وﻣـﺎ ﻫـﻲ اﻟﺣﻘـوﻝ اﻟﺗـﻲ ﺗرﻳـد ﺗﺣدﻳـدﻫﺎ ﻣـﻊ‬
‫اﻷﺧذ ﺑﻌﻳن اﻻﻋﺗﺑـﺎر أن ﻫـذﻩ اﻟﺣﻘـوﻝ ﻻ ﻳﻣﻛـن أن ﺗﺗﻛـرر وﻟﻧوﺿـﺢ ﺷـﻳﺋﺎً ﻣﻬﻣـﺎ أﻧﻧـﺎ ﻟـو‬
‫ﺣددﻧﺎ ﻣﺛﻼً رﻗم اﻟﻣوظف وﺗﺎرﻳﺦ ﻣﻳﻼدﻩ ﻋﻠﻰ أﻧﻬﺎ ﻣﻔﺗﺎح أﺳﺎﺳﻲ ﻓﻬﻧﺎ ﻧﻼﺣظ ﻣﺎﻳﻠﻲ‪:‬‬

‫ﻟو أدﺧﻠﻧﺎ رﻗم اﻟﻣوظف ﻣﺛﻼً ‪ Ammar‬وﺗﺎرﻳﺦ اﻟﻣﻳﻼد ‪2000-03-08‬‬

‫وأدﺧﻠﻧﺎ رﻗم اﻟﻣوظف ﻣﺛﻼً ‪ Ammar‬وﺗﺎرﻳﺦ اﻟﻣﻳﻼد ‪2001-03-08‬‬

‫ﻫ ــﻝ ﺳ ــﺗﻘﺑﻝ )ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت( ﻫ ــذﻩ اﻟﻌﻣﻠﻳ ــﺔ اﻟﺟـ ـواب‪..‬؟ ﻧﻌ ــم واﻟ ــﺳﺑب أﻧﻧ ــﺎ ﺣ ــددﻧﺎ ﻓ ــﻲ‬
‫اﻟﻣﻔﺗــﺎح اﻷﺳﺎﺳــﻲ أن رﻗــم اﻟﻣوظــف وﺗــﺎرﻳﺦ ﻣــﻳﻼدﻩ ﻫﻣــﺎ واﺣــد وﻳﻣﻧــﻊ اﻟﺗﻛـرار ﻓــﻲ ﺣﺎﻟــﺔ‬
‫ﺗﺷﺎﺑﻬﻣﺎ ﻟذﻟك ﻳﺟب أن ﻧﻛون ﺣذرﻳن ﻓﻲ ﺣﺎﻟﺔ ﺗﺣدﻳد اﻟﻣﻔﺗﺎح اﻷﺳﺎﺳﻲ‪.‬‬

‫‪CONSTRAINT constraint_name‬‬ ‫‪PRIMARY‬‬ ‫‪KEY‬‬ ‫‪(column1,‬‬


‫)‪column2, . column_n‬‬

‫أﻣﺎ اﻟﻧـوع اﻟﺛـﺎﻧﻲ ﻓﻬـو ‪ FOREIGN KEY‬وﻫـو اﻟﻣﻔﺗـﺎح اﻟﻣرﺟﻌـﻲ وﻓـﻲ ﻫـذا اﻟﻧـوع‬
‫ﻓﻘــط ﺗﺣــدد أن اﻟﺣﻘــﻝ اﻟــذي ﺑﺎﻟﺟــدوﻝ اﻷوﻝ ﺗــﺎﺑﻊ ﻟﻠﺣﻘــﻝ اﻷﺳﺎﺳــﻲ ﻓــﻲ اﻟﺟــدوﻝ اﻟﺛــﺎﻧﻲ‬
‫وﻟﻠﺗوﺿﻳﺢ أﻛﺛـر ﻣـﺛﻼً رﻗـم اﻟﺟﻧـﺳﻳﺔ ﻓـﻲ ﺟـدوﻝ اﻟﻣـوظﻔﻳن ﺗـﺎﺑﻊ رﻗـم اﻟﺟﻧـﺳﻳﺔ ﻓـﻲ ﺟـدوﻝ‬
‫اﻟﺟﻧﺳﻳﺎت ﻟذﻟك ﻓـﺎﻟﻔروض أن ﻳﻛـون أﺳﺎﺳـﻲ واﻟﻬـدف ﻣـن ﻫـذا ﻛﻠـﻪ ﻫـو إﻟـزام اﻟﻣـﺳﺗﺧدم‬
‫ﺑﺈدﺧﺎﻟـ أرﻗﺎم أو ﺑﻳﺎﻧﺎت ﻣﺣددﻩ وﺗﻔﺎدي إدﺧﺎﻟـ ﺑﻳﺎﻧﺎت ﻏﻳر ﻣوﺟود وﺗﺻﺑﺢ ﺑﻳﺎﻧﺎﺗـك أﻗـوى‬
‫وﺑرﻧﺎﻣﺟك أﻗوى ﻣﻊ ﻣﻼﺣظﺔ اﻧـﻪ ﻋﻧـد إﻧـﺷﺎء ﻫـذا اﻟﻧـوع ﻣـن اﻟﻣﺣـددات ﻳﺟـب أن ﻳﻛـون‬
‫اﻟﺟ ــدوﻝ اﻟﻣﻧ ــﺷﺄ ﻣوﺟ ــود ﻋﻠ ــﻰ ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت‪ .‬ﻓﻣ ــﺛﻼً ﻋﻧ ــدﻣﺎ ﻧرﻳ ــد رﺑ ــط رﻗ ــم اﻟﺟﻧ ــﺳﻳﺔ‬
‫ﺑﺟــدوﻝ اﻟﻣــوظﻔﻳن ﺑ ـرﻗم اﻟﺟﻧــﺳﻳﺔ ﺑﺟــدوﻝ اﻟﺟﻧــﺳﻳﺎت ﻳﺟــب أن ﻳﻛــون ﺟــدوﻝ اﻟﺟﻧــﺳﻳﺎت‬
‫ﻣﻧﺷﺄ ﻗﺑﻝ ﺟدوﻝ اﻟﻣوظﻔﻳن وﻫﻛذا وﻳﻣﻛن اﻟرﺟوع إﻟﻰ أﻛﺛر ﻣن ﺣﻘـﻝ ﻓـﻲ ﻛـﻼ اﻟﺟـدوﻟﻳن‬
‫وﻛذﻟك ﻳﺟب أن ﻳﻛون ﻣن ﻧﻔس اﻟﻧوع‪.‬‬

‫‪5‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫ﺳﻧطﺑق ﻣﺎ ﺳﺑق ﺑﺷﻛﻝ ﻋﻣﻠﻲ‪:‬‬

‫طرﻳﻘﺔ إﻧﺷﺎء اﻟﺟدوﻝ ﺗﺗم ﺑوﺿﻊ‪:‬‬


‫‪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‬‬
‫;)‬

‫ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت‪ :‬وﻫو ﻳﺗﻛون ﻣن‪:‬‬

‫‪ 1‬ـ رﻗم اﻟﺟﻧﺳﻳﺔ ‪ 2‬ـ وﺻف اﻟﺟﻧﺳﻳﺔ ‪ 3‬ـ ﺗﺎرﻳﺦ اﻹﻧﺷﺎء ‪ 4‬ـ اﺳم اﻟﻣﺳﺗﺧدم‬
‫ﺟدوﻝ اﻹدارات‪ :‬وﻫو ﻳﺗﻛون ﻣن‪:‬‬
‫‪ 1‬ـ رﻗم اﻹدارة ‪ 2‬ـ اﺳم اﻹدارة ‪ 3‬ـ ﺗﺎرﻳﺦ اﻹﻧﺷﺎء ‪ 4‬ـ اﺳم اﻟﻣﺳﺗﺧدم‬
‫ﺟدوﻝ اﻟﻣوظﻔﻳن ‪ :‬وﻫو ﻳﺗﻛون ﻣن‪:‬‬
‫‪ 1‬ـ رﻗم اﻟﻣوظف ‪ 2‬ـ اﺳم اﻟﻣوظف ‪ 3‬ـ ﺗﺎرﻳﺦ اﻟﻣﻳﻼد ‪ 4‬ـ اﻟﺟﻧس‬
‫‪ 5‬ـ اﻟﺟﻧﺳﻳﺔ ‪ 6‬ـ ﺗﺎرﻳﺦ اﻟﺗﻌﻳﻳن ‪ 6‬ـ اﻟراﺗب اﻷﺳﺎﺳﻲ ‪ 7‬ـ ﺑدﻻت أﺧرى‬
‫‪ 8‬ـ اﻹدارة اﻟﺗﺎﺑﻊ ﻟﻬﺎ ‪ 9‬ـ ﺗﺎرﻳﺦ اﻹﻧﺷﺎء ‪ 10‬ـ اﺳم اﻟﻣﺳﺗﺧدم‬

‫‪6‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

:‫ﻛود ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت‬


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)
)
/

7
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫ﻛود ﺟدوﻝ اﻟﻣوظﻔﻳن‪:‬‬


‫(‪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‬أي اﻧﻪ ﻻ ﻳﻘﺑﻝ ﻗﻳﻣﺔ ﻓﺎرﻏﺔ وﻫو اﻟﻣﻔﺗﺎح اﻷﺳﺎﺳﻲ اﻟذي ﻗﻣﻧﺎ ﺑﺗﺣدﻳـدﻩ‬

‫‪8‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

‫ وﺳوف ﻳﻌرض ﺑﺎﻟﺷﻛﻝ‬DESC EMPLOYEES :‫ﺳﺎﺑﻘﺎً وﻳﻣﻛن ﻛﺗﺎﺑﺗﻪ ﺑﺎﻻﺧﺗﺻﺎر‬


:‫اﻟﺗﺎﻟﻲ‬

DESCRIBE EMPLOYEES <SQL


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)

‫وﻫﻛذا ﺗم إﻧﺷﺎء ورﺑط اﻟﺟداوﻝ ﻣﻊ ﺑﻌﺿﻬﺎ‬

9
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﺳﺋﻠﺔ‪:‬‬
‫‪-1‬ﺑﻳن ﻛﻳف ﻳﺗم إﻧﺷﺎء ﺟدوﻝ ﻟﻠطﻼب ﻣﻛون ﻣن ﺛﻼﺛﺔ ﺣﻘوﻝ ﺣﻳـث ﻳﻘﺑـﻝ رﻗـم اﻟطﺎﻟـب‬
‫أﺣرف وأرﻗﺎم وطوﻟﻪ ‪ 5‬واﺳم اﻟطﺎﻟب ﻳﻘﺑﻝ أﺣرف وأرﻗﺎم وﻣﻛون ﻣن ‪ 20‬ﺣـرف وﺗـﺎرﻳﺦ‬
‫ﻣﻳﻼد اﻟطﺎﻟب ؟‬

‫‪ 2‬ـ ﻣﺎ اﻟﻣﻘﺻود ﺑﺎﻟﻣﺣددات اﻟﺗﺎﻟﻳﺔ‪:‬‬

‫أ ـ اﻟﻣﻔﺗﺎح اﻷﺳﺎﺳﻲ ‪PRIMARY KEY‬‬

‫ب ـ اﻟﻣﻔﺗﺎح اﻟﻣرﺟﻌﻲ ‪ FOREIGN KEY‬؟‬

‫‪ 3‬ـ ّﺑﻳن ﺑﻣﺛﺎﻟـ ﻛﻳف ﻳﺗم رﺑط ﺟدوﻟﻳن ﺑﺑﻌﺿﻬﻣﺎ ﺑﺎﺳﺗﺧدام اﻟـ ‪.FOREIGN KEY‬‬

‫‪ 4‬ـ اﺟب ﺑﻧﻌم أو ﻻ ﻣﻊ ذﻛر اﻟﺳﺑب‪:‬‬

‫ﻳوﺟــد ﻟــدﻳﻧﺎ ﺟــدوﻝ ﻣﻛــون ﻣــن ﺣﻘﻠــﻳن أﺳﺎﺳــﻳﻳن ‪ PRIMARY KEY‬وﻟﻧﻔــرض اﻧﻬﻣــﺎ‬
‫رﻗم اﻟﻣوظف ورﻗم إدارﺗﻪ ﻓﻬﻝ ﺗﻘﺑﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت اﻹﺿﺎﻓﺔ ﻟو ﻗﻣﻧﺎ ﺑﺈﺿﺎﻓﺔ‪:‬‬

‫رﻗم اﻟﻣوظف = ‪ e0001‬ورﻗم اﻹدارة = ‪10‬‬

‫ٕواﺿﺎﻓﺔ رﻗم اﻟﻣوظف = ‪ e0002‬ورﻗم اﻹدارة= ‪10‬‬

‫‪10‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻟﻌﻣﻠﻳﺎت اﻟﺗﻲ ﺗﺗم ﻋﻠﻰ اﻟﺟداوﻝ‬


‫إﺿﺎﻓﺔ ‪ Insert‬ﺗﻌدﻳﻝ ‪ Update‬ﺣذف ‪Delete‬‬

‫‪ 1‬ـ اﻹﺿﺎﻓﺔ ‪:insert‬‬

‫اﻟﻣﻘ ــﺻود ﺑﺎﻹﺿ ــﺎﻓﺔ ﻫ ــو ﻋﻣﻠﻳ ــﺔ إﺿ ــﺎﻓﺔ ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺑﻳﺎﻧ ــﺎت ﻋﻠ ــﻰ ﻣﺟﻣوﻋ ــﺔ ﻣ ــن‬
‫اﻟﺣﻘــوﻝ ﻓــﻲ ﺟــدوﻝ ﻣﻌــﻳن وﺗﻛــون طرﻳﻘــﺔ اﻹﺿــﺎﻓﺔ ﺑطﺑﺎﻋــﺔ اﻷﻣــر ‪ insert‬ﺛــم ﻧﻛﺗــب‬
‫‪ into‬ﺛم اﺳم اﻟﺟدوﻝ وﻧﻔـﺗﺢ ﻗـوس ﺛـم ﻧﻛﺗـب أﺳـﻣﺎء اﻟﺣﻘـوﻝ اﻟﻣـراد إدﺧﺎﻟ ـ اﻟﺑﻳﺎﻧـﺎت ﻓﻳﻬـﺎ‬
‫ﻣــﻊ اﻷﺧــذ ﺑﻌــﻳن اﻻﻋﺗﺑــﺎر أن ﻧــﺿﻳف أﻳــﺿﺎً إﻟــﻰ اﻟﺟــداوﻝ اﻟﺗــﻲ ﻻ ﺗﻘﺑــﻝ اﻟﻘــﻳم اﻟﻔﺎرﻏــﺔ‬
‫ﻣﺛــﻝ اﻟﻣﻔﺗــﺎح اﻷﺳﺎﺳــﻲ ‪ Primary key‬وﻛــذﻟك اﻟﺣﻘــوﻝ اﻟﻣرﺑوطــﺔ ﺑﺣﻘــوﻝ أﺧــرى اﻟـ ـ‬
‫‪ key foreign‬وﺑﻌــدﻫﺎ ﻧﻛﺗــب اﻷﻣــر ‪ values‬وﻧﻔــﺗﺢ ﻗــوس وﻳﺟــب أن ﻳﻛــون ﺗرﺗﻳــب‬
‫اﻟﻘـ ــﻳم ﺑـ ــﻧﻔس ﺗرﺗﻳـ ــب اﻟﺣﻘـ ــوﻝ ﻓـ ــﻲ اﻟﺑداﻳـ ــﺔ ﻣـ ــﻊ اﻷﺧـ ــذ ﺑﻌـ ــﻳن اﻻﻋﺗﺑـ ــﺎر أن ﻧـ ــوع اﻟﺣﻘـ ــﻝ‬
‫‪ VARCHAR2‬ﻳوﺿ ـ ــﻊ ﺑ ـ ــﻳن ﻋﻼﻣﺗ ـ ــﻳن '‪ 'VALUE‬واﻟﺗ ـ ــﺎرﻳﺦ ‪ DATE‬ﻳﺟ ـ ــب أن‬
‫ﺗ ـ ــﺿﻌﻪ أﻳ ـ ــﺿﺎً ﺑ ـ ــﻳن ﻋﻼﻣﺗ ـ ــﻳن '‪ ' VALUE‬أﻣ ـ ــﺎ اﻷرﻗ ـ ــﺎم ﻓﺗوﺿ ـ ــﻊ ﺑ ـ ــدون ﻋﻼﻣـ ـ ـﺎت‬
‫‪ CUTAION SINGLE‬وﻳﺟب ﻋﻣـﻝ ‪ ;commit‬وﻫـو أﻣـر ﻳطﺑـﻊ ﻟﺗﺧـزﻳن ﻣﻌﻠوﻣـﺔ‬
‫ﻋﻠﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت وﻫـﻲ ﺗـﺳﺗﺧدم ﺑﻌـد اﻹﺿـﺎﻓﺔ أو اﻟﺣـذف أو اﻟﺗﻌـدﻳﻝ ﻟﺗﺄﻛﻳـد اﻟﻌﻣﻠﻳـﺔ‬
‫وﻳﻣﻛ ــن اﺳ ــﺗﺧداﻣﻬﺎ أﻳ ــﺿﺎً ﺑﻌ ــد ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﻌﻣﻠﻳ ــﺎت ﻣ ــﺛﻼ إﺿ ــﺎﻓﺔ ﻋ ــدد واﺣ ــد ﻣ ــن‬
‫اﻟﺳطور أو ﻣﺟﻣوﻋﺔ ﻣن اﻟﺳطور‪.‬‬

‫اﻟﻘﺎﻋدة‪:‬‬
‫‪INSERT INTO table‬‬
‫)‪(column-1, column-2, ... column-n‬‬
‫‪VALUES‬‬
‫;)‪(value-1, value-2, ... value-n‬‬

‫وﻧﻼﺣظ ﻫﻧﺎ إﻧﻧﺎ ﻧﺳﺗﺧدم اﻟﻔﺎﺻﻠﺔ ﺑﻳن ﻛﻝ ﻗﻳﻣﺔ وأﺧرى‪.‬‬

‫ﻣﺛﺎﻝ‪:‬‬

‫‪11‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

: ‫إﺿﺎﻓﺔ ﻋﻠﻰ ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت ﺣﻳث ﻳﺗﺄﻟف ﻣن‬

‫ رﻗم اﻟﺟﻧﺳﻳﺔ‬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;

12
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ 2‬ـ اﻟﺣذف ‪:DELETE‬‬

‫ﺣذف ﻣﺟﻣوﻋﺔ ﻣن اﻟﺳﺟﻼت ﺿﻣن ﺷرط ﻣﻌﻳن أو ﻣن ﻏﻳر ﺷرط‪:‬‬

‫ﻧﻛﺗب اﻷﻣر ‪ DELETE‬ﺛم اﺳم اﻟﺟدوﻝ‬

‫أو ﺗﻛﺗب اﻷﻣر ‪ DELETE‬ﺛم ﺗﻛﺗب ‪ FROM‬ﺛم ﺗﻛﺗب اﺳم اﻟﺟدوﻝ‬


‫‪DELETE FROM table name‬‬
‫‪DELETE TBALE_NAME‬‬

‫ﻣﺛﺎﻝ‪:‬‬

‫ﻫﻧﺎ ﺳﻧﻘوم ﺑﺣذف ﺟﻣﻳﻊ ﺳﺟﻼت ﺟدوﻝ اﻹدا ارت وﺟدوﻝ اﻟﺟﻧﺳﻳﺎت‪.‬‬
‫;‪DELETE DEPARTMENTS‬‬
‫;‪DELETE FROM NATIONALITY‬‬
‫;‪COMMIT‬‬

‫وﻟﻛن ﻳﻔﺿﻝ اﺳﺗﺧدام اﻟﺷرط ﺣﻳث ﺗﺣدد اﻟﺣﻘﻝ اﻟذي ﺗرﻳد ﺣذﻓﻪ‪.‬‬

‫اﺳـﺗﺧدام ‪ : WHERE CONTION‬وﻫـو ﺷـرط ﻻ ﺗـﺗم ﻋﻣﻠﻳـﺔ اﻟﺣـذف إﻻ ﺑﺗﺣﻘﻘـﻪ‬


‫وﻳﻣﻛن وﺿﻊ أﻛﺛر ﻣن ﺷرط واﻟﻔﺻﻝ ﺑﻳﻧﻬﻣﺎ ﻋن طرﻳق ‪AND‬‬

‫‪DELETE FROM DEPARMENTS‬‬


‫'‪WHERE DPT_NO='DP02‬‬
‫;‪COMMIT‬‬

‫‪13‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ 3‬ـ اﻟﺗﻌدﻳﻝ ‪:UPDATE‬‬

‫ﻫ ــو اﻟﻘﻳ ــﺎم ﺑﻌﻣ ــﻝ ﺗﻌ ــدﻳﻝ ﻋﻠ ــﻰ اﻟﺣﻘ ــوﻝ أﻳ ــﺿﺎً وﻋﻠ ــﻰ اﻟﺟ ــدوﻝ ﻛ ــﺎﻣﻼً وﻟﻠﻘﻳ ــﺎم ﺑﺎﻟﺗﻌ ــدﻳﻝ‬
‫ﻧﻛﺗب‪ UPDATE‬ﺛم ﻧﻛﺗب اﺳم اﻟﺟدوﻝ ﺛم ﻧﻛﺗب ‪ SET‬ﺛم اﺳم اﻟﺣﻘﻝ اﻟﻣراد ﺗﻌدﻳﻠﻪ‪.‬‬
‫‪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‬‬

‫ﻣﻊ ﻣﻼﺣظﺔ ﻣراﻋﺎة أﻧواع اﻟﺣﻘوﻝ ﻓﻲ اﻟﺟداوﻝ ﻛﻣﺎ ذﻛرﻧﺎ ﺳﺎﺑﻘﺎً‬

‫‪14‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ Select Statement‬أﻧواﻋﻬﺎ وﻛﻳف ﻳﻣﻛن اﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ‪:‬‬

‫ﺗﻌ ّـرف اﻟ ـ ‪ Select Statement‬ﻋﻠـﻰ إﻧﻬـﺎ أﻣـر ﻣـن ﺧﻼﻟـﻪ ﻳﺗـﻳﺢ ﻟﻧـﺎ إﺣـﺿﺎر ﺑﻳـﺎن أو‬
‫ﻣﺟﻣوﻋﺔ ﺑﻳﺎﻧﺎت ﻣن ﺟدوﻝ واﺣد أو أﻛﺛر وﺑطـرق ﻣﺧﺗﻠﻔـﺔ وﺣـﺳب اﻟـﺷرط اﻟـذي ﺗـﺿﻌﻪ‬
‫ﻛﻣﺎ ﻳﻣﻛن اﺳﺗﺧدام اﻟـ ‪ statement select‬ﻓﻲ ﻣﻌﺎﻟﺟﺔ اﻟﻌﻣﻠﻳـﺎت ﻋﻠـﻰ اﻟﺟـداوﻝ وﻫـﻲ‬
‫‪ Update Delete Insert‬وﻛذﻟك ﻳﻣﻛـن اﺳـﺗﺧداﻣﻬﺎ ﻣـﻊ ﻋـدة ‪ function‬واﻗـﺻد ﺑﻬـﺎ‬
‫ﻣﻌﺎدﻻت ﺟﺎﻫزة‪.‬‬

‫‪ 1‬ـ ﺟﻣﻠﺔ ‪ SELECT‬اﻟﺑﺳﻳطﺔ‪:‬‬

‫ﻧﻛﺗــب ‪ SELECT‬ﺛــم اﺳــم اﻟﺣﻘــوﻝ أو إذا ﻛﻧــت ﺗرﻳــد ﻋــرض ﻛــﻝ اﻟﺣﻘــوﻝ اﻛﺗــب * أي‬
‫ﻧﺟﻣﺔ ﺛم ‪ FROM‬وﻫﻧﺎ ﺗﻌطﻲ إﻳﻌﺎز أن ﺗﺣـدد اﺳـم اﻟﺟـدوﻝ ﺑﻌـد اﻟ ـ ‪ FROM‬ﻓﺗـﺻﺑﺢ‬
‫ﺑﺎﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬
‫* ‪SELECT‬‬
‫;>‪FROM <table name‬‬

‫ﻣﺛﺎﻟـ ‪:‬‬
‫‪SELECT * FROM NATIONALITY‬‬
‫ﻫذا اﻟﻣﺛﺎﻟـ ﻳﻌرض ﻟﻧﺎ ﺟﻣﻳﻊ ﻣﺣﺗوﻳﺎت ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت‪.‬‬

‫‪ 2‬ـ ﺟﻣﻠﺔ اﻟـ ‪ SELECT‬اﻟﺗﻲ ﺗﺣدد ﻓﻳﻬﺎ أﺳﻣﺎء اﻟﺣﻘوﻝ ﻓﻲ اﻟﺟدوﻝ‪:‬‬

‫ﻓﻬﻲ ﻻ ﺗﺧﺗﻠف ﻋن اﻟﺣﺎﻟﺔ اﻷوﻟﻰ ٕواﻧﻣﺎ ﺗﺳﺗﺑدﻝ اﻟﻧﺟﻣﺔ * ﺑﺄﺳﻣﺎء ﺣﻘوﻝ‬


‫>‪SELECT <column name, column name, ..., <column name‬‬
‫;>‪FROM <table name‬‬

‫‪15‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

:‫ﻣﺛﺎﻝ‬
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 .....
:‫ﻣﺛﺎﻝ‬

16
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

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 ‫ﻋﻠﻰ أﺳﺎس أن ﺟﻣﻠﺔ اﻟـ‬

17
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:TABLE CREATE ‫ ﻣﻊ‬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')

18
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻟدواﻝ ‪ functions‬ﻓﻲ اﻷوراﻛﻝ‬


‫ﺗﺳﺎﻋد اﻟدواﻝ ﻓﻲ ﻓرز وﺗﺻﻧﻳف وﺗرﺗﻳب اﻟﺑﻳﺎﻧﺎت‪:‬‬

‫‪ 1‬ـ اﻟدواﻝ اﻟﺗﻲ ﺗﺳﺎﻋد ﻓﻲ ﻓرز وﺗﺻﻧﻳف اﻟﺑﻳﺎﻧﺎت ﻫﻲ‪:‬‬

‫‪ :ALIASES‬وﺗــﺳﻣﻰ ﺑﺎﻷﺳــﻣﺎء اﻟﻣــﺳﺗﻌﺎرة ﻳﻌﻧــﻲ ﻧـﺳﺗﺑدﻝ اﺳــم اﻟﺣﻘــﻝ ﺑــﺄي اﺳــم ﻧﺣــن‬
‫ﻧﺣددﻩ ﻛﻲ ﺗﻌرض ﻓﻲ اﻟﻌﻧﺎوﻳن‪.‬‬
‫;‪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‬‬

‫‪19‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

‫ وﺗ ـ ـ ـ ـ ـ ــﺳﺗﺧدم ﻟﺗﺣوﻳ ـ ـ ـ ـ ـ ــﻝ اﻷﺣ ـ ـ ـ ـ ـ ــرف اﻹﻧﺟﻠﻳزﻳ ـ ـ ـ ـ ـ ــﺔ إﻟ ـ ـ ـ ـ ـ ــﻰ‬:LOWER ‫ و‬UPPER


LOWER ‫ ﺑﺎﺳﺗﺧدام‬SMMAL ‫ ٕواﻟﻰ‬UPPER ‫ ﺑﺎﺳﺗﺧدام‬CAPITAL

:‫اﻟﻘﺎﻋدة‬
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 ‫ﻫﻧ ــﺎ ﻧﻌ ــرض اﺳ ــم اﻹدارة ﻣـ ـرة‬
.‫اﻟدواﻝ ﻻ ﺗﻧطﺑق ﺑﺎﻟطﺑﻊ ﻋﻠﻰ أﺣرف اﻟﻠﻐﺔ اﻟﻌرﺑﻳﺔ‬

capital ‫ وﺗﺳﺗﺧدم ﻟﺗﺣوﻳﻝ ﺣرف ﻣن ﻛﻝ ﻛﻠﻣﺔ إﻟﻰ‬:initcap


select initcap(cloumname or string) from table_name

select initcap('admin05') from dual;

‫ إﻟ ــﻰ ﻗ ــﻳم ﻧﺣ ــن ﻧﺣ ــددﻫﺎ‬NULL ‫ وﺗ ــﺳﺗﺧدم ﻟﻠﺗﻌ ــوﻳض ﻋ ــن اﻟﻘ ــﻳم اﻟﻔﺎرﻏ ــﺔ اﻟ ـ ـ‬:NVL
.‫واﺳﺗﺧداﻣﺎﺗﻬﺎ ﻓﻲ اﻷرﻗﺎم واﻟﺣروف‬
SELECT NVL(CLUMONAME,YOUR_VALUE) FROM
TABLE NAME

20
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ﻣﺛﺎﻝ‬
SELECT NVL(dpt_name,'not found') from departments
select NVL(number,0) from dual

‫ أو ﺗرﺗﻳـب ﻣـﺛﻼً ﺗـﺎرﻳﺦ‬string ‫ وﻫﻲ ﺗﺳﺗﺧدم ﻟﻠﺗﺣوﻳﻝ ﻛﻝ ﺷﻲء إﻟـﻰ ﻗﻳﻣـﺔ‬: to char
.‫ﺣﺳب ﻗﻧﺎع ﻣﻌﻳن‬
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 ‫ﺗﻧــﺎزﻟﻲ وﺗــﺳﺗﺧدم ﺑﺟﻣﻠــﺔ اﻟ ـ‬
‫ﻧﻛﺗﺑﻬــﺎ وﻧﻛﺗــب اﺳــم اﻟﺣﻘــﻝ وﻳﻛﺗــب ﺑﻌــدﻫﺎ إذا ﻛﻧــت اﻟﺗرﺗﻳــب ﺗــﺻﺎﻋدي وﻳرﻣــز ﻟﻬــﺎ ﺑـ ـ‬
.DESC ‫ ﺛم ﺗﻧﺎزﻟﻲ وﻳرﻣز ﻟﻬﺎ ﺑﺎﻟرﻣز‬ASC
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;

21
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫وﻧﻼﺣــظ ﻛﻳــف ﻳﻣﻛــن اﺳــﺗﺧداﻣﻪ وﺳــوف ﺗﺗــﺿﺢ ﻓﻛرﺗــﻪ ﻋﻧــد اﺳــﺗﺧداﻣﻪ ﻣــﻊ ﻣﻌــﺎدﻻت‬
‫أﺧرى ﻓﺎﻟﻬدف ﻫو ﻣﺛﻼ إﻳﺟﺎد ﻋدد اﻷﻗﺳﺎم ﻓﻲ ﻛﻝ إدارة‪.‬‬

‫‪ :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‬‬

‫ﻻ ﻧــﺳﺗﺧدم ﻣــﻊ ‪ COUNT‬اﻟ ـ ‪ GROUP BY‬ﻓــﻲ ﺣﺎﻟــﺔ إذا ﻛﻧــﺎ ﻧــﺳﺗرﺟﻊ ﻓﻘــط ﻋــدد‬
‫ﺷﻲء ﻣﻌﻳن‪.‬‬

‫‪ :SUM‬وﻫو إﻳﺟﺎد ﻣﺟﻣوع ﻋدد ﻣن اﻷرﻗﺎم‪:‬‬

‫‪22‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

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;

BY GROUP ‫ ﻣﻊ‬SUM‫وﺗﺳﺗﺧدم اﻟـ‬

:‫ﻣﺛﺎﻝ‬
SELECT department, SUM (sales) as "Total sales"
FROM order_details
GROUP BY department;

.‫ وﻫو إرﺟﺎع اﻛﺑر ﻗﻳﻣﺔ ﺑﻳن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﻳﺎﻧﺎت‬:MAX


SELECT MAX (expression)
FROM tables
WHERE predicates;

‫ ﺣﻳث ﻳرﺟﻊ اﻗﻝ ﻗﻳﻣﺔ ﺑﻳن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﻳﺎﻧﺎت‬MAX ‫ وﻫو ﻋﻛس اﻟـ‬:MIN

23
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

SELECT MIN (expression)


FROM tables
WHERE predicates;

:‫ﻣﺛﺎﻝ‬
SELECT MIN(salary) as "Lowest salary"
FROM employees;
‫ ﻷﻧـــﻪ ﻋﺑ ــﺎرة ﻋ ــن رﻣ ــز ﻓ ــردي أﻣـــﺎ‬DPT_NAME ‫وﻧﻼﺣ ــظ ﻛﻳ ــف اﻧ ــﻪ وﺿ ــﻌﻧﺎ اﻟ ـ ـ‬
GROUP BY ‫ﻋﺑﺎرة ﻋن ﻣﺟﻣوﻋﺔ ﻟذﻟك ﻳﺳﺗﺧدم ﻣﻌﻬﺎ اﻟـ‬COUNTDPT_NO

.MAX,MIN,SUM ‫وﻛذﻟك اﻟﺣﺎﻟـ ﺑﺎﻟﻧﺳﺑﺔ اﻟـ‬

‫ ﺣﻳــث ﻧـﺳﺗطﻳﻊ‬GROUP BY ‫ وﻳــﺳﺗﺧدم ﻟﻔــرز اﻟﺑﻳﺎﻧــﺎت اﻟﻧﺎﺗﺟــﺔ ﻋــن‬:HAVING


‫ أو أي‬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 ‫وﻳﺳﺗﺧدم أﻳﺿﺎً ﻣﻊ‬

24
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫أﻣﺛﻠﺔ‬

: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;

25
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:(‫ ) ﻣن إﻟﻰ( أو) ﺑﻳن‬/ 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;

26
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﺳﺋﻠﺔ‪:‬‬
‫‪ 1‬ـ أﺿف اﻟﻘﻳم اﻟﺗﺎﻟﻳﺔ إﻟﻰ ﺟدوﻝ اﻹدارات رﻗم اﻹدارة =‪ DP04‬اﺳم اﻹدارة =‪marketing‬؟‬
‫‪ 2‬ـ ﻣﺎ ﻫﻲ أﻓﺿﻝ اﻟطرق ﻓﻲ ﻋﻣﻠﻳﺔ اﻟﺣذف أو اﻟﺗﻌدﻳﻝ‪:‬‬

‫ﺑﺎﺳﺗﺧدام اﻟـ ‪ where condition‬أو ﺑﺎﻟطرﻳﻘﺔ اﻟﻌﺎدﻳﺔ وﻟﻣﺎذا ؟‬

‫‪ 3‬ـ ّﺑﻳن ﻛﻳف ﻳﻣﻛن ﺗﻌدﻳﻝ أﻛﺛر ﻣن ﻗﻳﻣﺔ ﻓﻲ ﺟدوﻝ ﻓﻲ ﺟﻣﻠﺔ ﺗﻌدﻳﻝ واﺣدة وﺑﺎﺳﺗﺧدام اﻟﺷرط؟‬

‫‪ 4‬ـ ﻣﺎ اﺳم اﻟداﻟﺔ اﻟﺗﻲ ﺗﻘوم ﺑﺗﺛﺑﻳت اﻟﺑﻳﺎﻧﺎت؟‬

‫‪ 5‬ـ اﻛﺗب ﺟﻣﻠﺔ ‪ select‬ﺗﻌرض ﻣن ﺧﻼﻟﻬﺎ اﺳم اﻹدارة ورﻗﻣﻬﺎ وﺗرﺗﺑﻬﺎ ﺣﺳب اﻹدارة؟‬
‫‪ 6‬ـ اﻛﺗب ﺟﻣﻠﺔ ‪ select‬ﺗﻌرض اﻟﺑﻳﺎﻧﺎت ﻏﻳر اﻟﻣﻛررة ﻟﺟﻧﺳﻳﺔ اﻟﻣوظف ﻣن ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت؟‬

‫‪ 7‬ـ أﻋطﻲ ﻣﺛﺎﻝ ﻋﻠﻰ إﻧﺷﺎء ﺟدوﻝ ﺑﺎﺳﺗﺧدام ﺟﻣﻠﺔ اﻟـ ‪ select‬ﻋﻠﻰ أن ﺗﻛون اﻹدارة رﻗم ‪.DP01‬‬

‫‪ 8‬ـ أﻋطﻲ ﻣﺛﺎﻝ ﻋﻠﻰ إﺿﺎﻓﺔ وﺣذف وﺗﻌدﻳﻝ اﻟﺟدوﻝ ﺑﺎﺳﺗﺧدام اﻟـ ‪statement select‬؟‬

‫‪ 9‬ـ أﻋطﻲ ﻣﺛﺎﻝ ﺗﺑﻳن ﻓﻳﻪ ﺷﻛﻝ اﻟﺗﺎرﻳﺦ ‪ 2006-01‬ﺣﻳث إن ‪ 01‬ﻫو اﻟﺷﻬر و ‪ 2006‬ﻫو اﻟﺳﻧﺔ‬
‫ﻣن ﺧﻼﻝ اﺳﺗﺧدام داﻟﺔ ‪to_char‬؟‬

‫‪ 10‬ـ ﺑﻳن ﺑﺎﺳﺗﺧدام اﻟدواﻝ اﻟﺗﺎﻟﻳﺔ ‪ nvl‬و ‪ initcap‬ﻛﻳف ﻳﻣﻛن اﺳﺗﻐﻼﻟﻬﺎ ﻓﻲ ﺟﻣﻠﺔ ‪select‬؟‬

‫‪ 11‬ـ ﺑﻳن ﺑﻣﺛﺎﻝ ﻛﻳف ﻳﻣﻛن أن ﻧﺟﻣﻊ ﺑﻳﺎﻧﺎت ﻏﻳر ﻣﻛررة ﺑﺎﺳﺗﺧدام ‪ sum‬؟‬

‫‪ 12‬ـ ﺑﻳن ﻋدد اﻹدارات واﺳم ﻛﻝ إدارة وﺗرﺗﻳﺑﻬﺎ ﺑﺷﻛﻝ ﺗﺻﺎﻋدي؟‬


‫‪ 13‬ـ ﺑﻳن ﻋدد واﺳم اﺻﻐر إدارة ؟‬
‫‪ 14‬ـ ﺑﻳن ﻣﺎ ﻫو اﻟﻔرق ﻓﻲ اﺳﺗﺧدام ‪ between‬و ‪ not between‬؟‬
‫‪ 15‬ـ ﺑﻳن ﻋدد اﻹدارات واﺳم ﻛﻝ إدارة ﺑﺷرط أن ﻳﻛون اﻟﻌدد أﻛﺑر ﻣن ‪ 5‬؟‬

‫‪ :TO_DATE‬ﺗﻘــوم ﻫــذﻩ اﻟداﻟ ـﺔ ﺑﺗﺣوﻳــﻝ اﻟـ ـ ‪ STRING‬إﻟــﻰ ﺗــﺎرﻳﺦ ﻓﻠــو أﺧــذﻧﺎ ﻫــذﻩ‬
‫ﻋﻠﻰ أﺳﺎس إﻧﻬﺎ ‪ STRING‬ﻓﻳﻣﻛن أن ﻧﺣوﻟﻬﺎ إﻟﻰ ‪. DATE‬‬

‫‪27‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

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 )
28
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

‫ ﻫو ﻋدد اﻟﻣراد إﺿﺎﻓﺗﻪ وﻣﻣﻛن إﻧﻘﺎص اﻷﺷﻬر أو زﻳﺎدﺗﻬﺎ‬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')

29
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ :TRIM‬ﺗﺳﺗﺧدم ﻟﺣذف اﻷﺣرف ﻓﻲ اﻟﻛﻠﻣﺔ ﺳواء ﻣن ﺟﻬﺔ اﻟﻳﻣﻳن أو اﻟﻳﺳﺎر أو ﻣـن‬


‫اﻟوﺳط‬
‫) ‪trim( [ leading | trailing | both [ trim character ] ] string1‬‬
‫ﺣﻳـ ــث إن ‪ leading‬ﺗـ ــﺳﺗﺧدم ﻟﺣـ ــذف اﻟﺣـ ــروف ﻣـ ــن أوﻝ اﻟﻛﻠﻣـ ــﺔ ‪ trailing‬ﺗـ ــﺳﺗﺧدم‬
‫ﻟﺣذف اﻟﺣروف ﻣن آﺧر اﻟﻛﻠﻣﺔ ‪ 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‬ﺳوف ﻳﺗم ﺣذف اﻟرﻗم واﺣد ﻣن اﻟﻳﻣﻳن‬
‫واﻟﺷﻣﺎﻝ'‪Tech' 23‬‬

‫‪ : 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‬ﺣﻳث ﺗﺣذف ﻣن ﺟﻬﺔ اﻟﻳﻣﻳن‬

‫‪30‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

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'

31
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ :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‬ﻳﺳﺗﺧدم ﻹرﺟﺎع ﻣوﻗﻊ اﻟﺣرف ﻓﻲ اﻟﻛﻠﻣﺔ وﻛذﻟك ﻳﺳﺗﺧدم ﻟﻠﺑﺣث ﻋن ﺣرف ﻓﻲ‬
‫ﻛﻠﻣــﺔ ﻓــﺈذا وﺟــدﻩ ﻳرﺟــﻊ ﻟﻣوﻗﻌــﻪ ٕواﻻ ﻳرﺟــﻊ اﻟﻘﻳﻣــﺔ ﺻــﻔر وﻳﻣﻛــن أن ﻳــﺳﺗﻐﻝ ﻓــﻲ ﻣﻌﺎﻟﺟــﺔ‬
‫ﺑﻌض اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫‪32‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

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 ‫وﻧرﻳد إﺑداﻟﻬﺎ ﺑـ‬
QW33QW ‫ ﻟﺗ ـ ـ ـ ـ ــﺻﺑﺢ اﻟﻛﻠﻣ ـ ـ ـ ـ ــﺔ‬Q ‫ ﺳ ـ ـ ـ ـ ــوف ﻳﺑ ـ ـ ـ ـ ــدﻟﻬﺎ ﺑ ـ ـ ـ ـ ـ ـ‬R ‫ وﺑ ـ ـ ـ ـ ــدﻝ اﻟ ـ ـ ـ ـ ـ ـ‬W ‫ﺑ ـ ـ ـ ـ ـ ـ‬

33
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻟﻘﺎﻋدة‪:‬‬
‫‪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‬ﺗﻘرﻳﺑــﺎً‬
‫واﻟﻔرق ﻫو إن اﻟ ـ ‪ TRANSLATE‬ﺗﺑـدﻝ اﻷﺣـرف ﻓﻘـط أﻣـﺎ اﻟ ـ ‪ REPLACE‬ﺗﻌﻣـﻝ‬
‫ﻋﻠ ــﻰ اﻟﺣ ــذف واﻻﺳ ــﺗﺑداﻝ إذا ﻟ ــم ﻧﺣ ــدد ﻟﻬ ــﺎ اﻷﺣ ــرف اﻟﻣ ــراد اﻻﺳ ــﺗﺑداﻝ ﺑﻬ ــﺎ ﻓﻳﻣ ــﺎ ﻟ ــو‬
‫اﺳﺗﺧدﻣت ﻓﻘط ﺑﺎﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ‪:‬‬
‫'‪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‬‬

‫‪34‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

35
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

.‫ ﻳﺳﺗﺧدم ﻟدﻣﺞ ﻛﻠﻣﺗﻳن أو أﻛﺛر ﻣﻊ ﺑﻌض‬: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'.

36
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﺳﺋﻠﺔ‪:‬‬

‫ﻟ ــدﻳﻧﺎ اﻟﺟ ــدوﻝ اﻟﺗ ــﺎﻟﻲ ﻳﺣﺗ ــوي ﻋﻠ ــﻰ اﺳ ــم اﻟﻣوظ ــف ورﻗ ــم اﻟﻣوظ ــف واﻟﺑﻳﺎﻧ ــﺎت ﺑﺎﻟ ــﺷﻛﻝ‬
‫اﻟﺗﺎﻟﻲ‪:‬‬

‫‪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‬‬

‫‪-1‬اﻋرض أﺳﻣﺎء اﻟﻣوظﻔﻳن وﺗﺎرﻳﺦ ﻣﻳﻼدﻫم ﺑزﻳﺎدة ‪ 5‬ﺷﻬور ؟‬


‫‪-2‬اﻋرض أﺳﻣﺎء اﻟﻣوظﻔﻳن وﺗﺎرﻳﺦ ﻣﻳﻼدﻫم ﻋﻠﻰ أن ﻳﻛون ﺗﺎرﻳﺦ اﻟﻣﻳﻼد زﻳﺎدة ‪ 5‬أﻳﺎم؟‬
‫‪-3‬اﺣذف أوﻝ ‪ 3‬أﺣرف ﻣن ﻛﻝ اﺳم ؟‬
‫‪-4‬اﺳﺗﺧدم اﻟـ ‪ concat‬ﻟدﻣﺞ اﺳم اﻟﻣوظف ورﻗﻣﻪ ؟‬
‫‪-5‬اﺳﺗﺑدﻝ اﻟـ اﻟﺣرف ‪ a‬ب ‪ e‬ﻣن ﻛﻝ اﺳم ؟‬
‫‪-6‬ﺑﻳن ﻣوﻗﻊ اﻟﺣرف ‪ m‬ﻣن ﻛﻝ اﺳم ؟‬
‫‪-7‬ﺑﻳن طوﻝ ﻛﻝ اﺳم ﻣن ﻛﻝ ﺣرف ؟‬
‫‪-8‬اﺳﺗﺑدﻝ آﺧر ‪ 3‬أﺣرف ﻣن ﻛﻝ اﺳم ﺑﺣرف ‪ v‬واﻋرﺿﻬﺎ ؟‬
‫‪-9‬أﺿف ‪ 9‬ﻧﺟم ﻣن ﺟﻬﺔ اﻟﻳﻣﻳن ﻟﻛﻝ اﺳم ﻣرة وﻛن ﺟﻬﺔ اﻟﻳﺳﺎر ﻣرة أﺧرى ؟‬
‫‪-10‬اﺑدأ اﻟﻘطﻊ ﻟﻛﻝ اﺳم ﻣن اﻟﻣوﻗﻊ اﻟﺛﺎﻟث ؟‬

‫‪37‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫أﺷﻛﺎﻝ اﻟـ) ‪:(Subqueries‬‬

‫‪:WHERE CONDITION -1‬‬


‫‪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‬‬

‫ﻧﻼﺣظ أن ﻣﺣور اﻟﺣدث ﻛﻠﻪ ﺣوﻝ ‪ WHERE‬واﺳﺗﺧدﻣﻧﺎ اﻟـ ‪ IN‬ﻟﺗوﺿﻳﺢ ﻣﻔﻬوم ﻫـﻝ‬
‫ﻫذا اﻟﺑﻳﺎن ﻣوﺟود ﺿﻣن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺟدوﻝ آﺧـر وﻛﺄﻧﻧـﺎ ﻧﻘـوﻝ اﺳـﺗﻌرض‬
‫ﻟﻧﺎ ﺟﻣﻳﻊ اﻟﺑﻳﺎﻧـﺎت ﻣـن اﻟﺟـدوﻝ ‪ 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‬اﻟﺛﺎﻧﻳﺔ وﺗﻛون اﺳﻣﻪ )اﻹدارة اﻟﻌﺎﻣﺔ(‪.‬‬

‫‪38‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

‫ وﻳﻘﺻد ﺑﻬﺎ دﻣﺞ اﺳﺗﻌﻼﻣﻳن ﻟﺣﻘﻠﻳن ﻣﺗﺷﺎﺑﻬﻳن أو أﻛﺛـر ﻓـﻲ‬:UNION Query -2


‫ وﻳــﺳﺗﻔﺎد ﻣﻧﻬــﺎ ﺑﻌــدم إظﻬــﺎر اﻟﺑﻳﺎﻧــﺎت اﻟﻣﺗﻛــررة ﻋﻠــﻰ أن ﻳﻛــون ﻋــدد‬.‫ﺟــدوﻟﻳن ﻣﺧﺗﻠﻔــﻳن‬
.‫اﻟﺣﻘوﻝ ﻓﻲ اﻟﺟدوﻝ اﻷوﻝ ﻣﺳﺎوي ﻟﻌدد اﻟﺣﻘوﻝ ﻟﻠﺟدوﻝ اﻟﺛﺎﻧﻲ‬
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


suppliers from
2000 < where supplier_id
39
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

UNION
"company_name as "name ,select company_id
from companies
1000 < where company_id
[BY name;[/CODE ORDER

:Query UNION ALL ‫اﺳﺗﺧدام‬

‫ وﻟﻛن ﺗﻌرض ﺟﻣﻳﻊ اﻟﺑﻳﺎﻧﺎت ﻓﻲ اﻟﺟدوﻟﻳن ﻣﻊ اﻟﺗﻛرار‬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;

40
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

: INTERSECT Quer -y3-

‫ وﻫ ــو دﻣ ــﺞ اﻟﺑﻳﺎﻧ ــﺎت ﻣ ــﻊ ﻓ ــﺎرق اﻧ ــﻪ ﻳﻌ ــرض اﻟﺑﻳﺎﻧ ــﺎت‬union ‫وﻣﺑ ــدأ ﻋﻣﻠ ــﻪ ﻳ ــﺷﺑﻪ اﻟ ـ ـ‬
‫اﻟﻣوﺟودة ﻓﻲ اﻟﺟدوﻝ اﻷوﻝ واﻟﺗﻲ ﻏﻳر ﻣوﺟودة ﻓﻲ اﻟﺟدوﻝ اﻟﺛﺎﻧﻲ ﻳﻌﻧﻲ ﻳﻌرض اﻟﻐﻳـر‬
field_n . ,select field1, field2 ‫ﻣﻛرر ﻓﻘط‬
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;

41
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫وﻳﺟب أن ﻳﻛون ﻋـدد اﻟﺣﻘـوﻝ ﻣﺗـﺷﺎﺑﻪ واﻟﻧـوع ﻛـذﻟك‪ .‬وﻣﻌﻧـﻰ اﻟﻣﺛـﺎﻝ اﻟـﺳﺎﺑق )اﺳـﺗﻌرض‬
‫اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺟﻣﻠﺔ اﻻﺳﺗﻌﻼم اﻷوﻟﻰ واﻟﻐﻳر ﻣوﺟودة ﺑﺎﻻﺳﺗﻌﻼم اﻟﺗﺎﻟﻲ( ﻛﺄن ﺗﻘـوﻝ ﻧرﻳـد‬
‫أن ﻧﻌرض أﺳﻣﺎء اﻟﻣوردﻳن اﻟذﻳن ﻟم ﻳﺗم اﻟطﻠب ﻋﻠﻰ ﻣﻧﺗﺟﺎﺗﻬم‪.‬‬

‫‪ :ALTER TABLE‬ﻫـﻲ ﻋﺑـﺎرة ﻋـن ﺗﻌﻠﻳﻣـﺔ أو أﻣـر ﻳـﺗم ﻣـن ﺧﻼﻟـﻪ اﻟﺗﻌـدﻳﻝ ﻋﻠـﻰ‬
‫ﻣﺣﺗوﻳﺎت اﻟﺟدوﻝ وﻫﻲ ﻋﻠﻰ أﻧواع‪:‬‬

‫‪ :column(s) to a table Adding‬وﻫـو إﺿـﺎﻓﺔ ﺣﻘـﻝ أو ﻋـدة ﺣﻘـوﻝ ﻋﻠـﻰ ﺟـدوﻝ‬


‫ﻣوﺟود ﻋﻠﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت‪.‬‬

‫اﻟﻘﺎﻋدة‪:‬‬
‫‪ALTER TABLE table_name‬‬
‫;‪ADD column_name column-definition‬‬

‫ﺣﻳــث ﻧــﺿﻊ ‪ ALTER TABLE‬ﺛــم اﺳــم اﻟﺟــدوﻝ وﻧــﺿﻊ ‪ ADD‬ﺛــم اﺳــم اﻟﺣﻘــﻝ‬
‫وﺑﻌدﻫﺎ ﻧﺿﻊ ﻧوع اﻟﺣﻘﻝ‪.‬‬

‫ﻣﺛﺎﻝ‪:‬‬
‫‪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‬‬

‫‪42‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

‫ وﻫو اﻟﺗﻌدﻳﻝ ﻋﻠـﻰ اﻟﺟـدوﻝ ﺑﺣﻳـث ﻧﻌـدﻝ‬: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 );

‫ وﻫو ﺣذف ﺣﻘﻝ ﻣن اﻟﺟدوﻝ‬:column(s) in a table Drop-


ALTER TABLE table_name
DROP COLUMN column_name;
:‫ﻣﺛﺎﻝ‬
ALTER TABLE supplier
DROP COLUMN supplier_name;

43
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

(2 NEW in Oracle 9i Release) :Rename column(s) in a table -


i R29 ‫وﻫو ﺗﻐﻳر اﺳم اﻟﺣﻘﻝ ﺑﺎﻟﺟدوﻝ وﻫﻲ ﻓﻘط ﻓﻲ ﻧﺳﺧﺔ أوراﻛﻝ‬
ALTER TABLE table_name
RENAME COLUMN old_name to new_name;
:‫ﻣﺛﺎﻝ‬
ALTER TABLE supplier
RENAME COLUMN supplier_name to sname;

:TABLE DROP
:‫اﻟﻘﺎﻋدة‬
DROP TABLE table_name;
:‫ﻣﺛﺎﻝ‬
DROP TABLE supplier;
CASCADE CONSTRAINTS ‫ﻟــو ﻛــﺎن اﻟﺟــدوﻝ ﻣ ـرﺗﺑط ﺑﻌﻼﻗــﺎت ﻣــﻊ ﺟــدوﻝ آﺧــر ﻓﻘــط ﻧ ـﺿﻳف‬
:‫ﻣﺛﺎﻝ‬
DROP TABLE supplier CASCADE CONSTRAINTS;

44
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﺳﺋﻠﺔ‪:‬‬

‫‪ 1‬ـ ﺑﻳن اﺳﺗﺧدام ‪ Union‬ﻓﻲ ﺟﻣﻠﺔ ‪ Select‬؟‬


‫‪ 2‬ـ ﺑﻳن اﺳﺗﺧدام اﻟـ ‪ count‬ﻓﻲ ‪ union‬؟‬
‫‪ 3‬ـ ﻣﺎ اﻟﻔرق ﺑﻳن ‪ INTERSECT Query‬و ‪ Query Minus‬؟‬
‫‪ 4‬ـ ﻣﺎ اﻷﻣر اﻟذي ﻣن ﺧﻼﻟﻪ ﺗﺳﺗطﻳﻊ ﺗﻐﻳﻳر ﻧوع ﺣﻘﻝ ﺑﺟدوﻝ ؟‬
‫‪ 5‬ـ ﻣﺎ اﻷﻣر اﻟذي ﻣن ﺧﻼﻟﻪ ﺗﺳﺗطﻳﻊ ﺣذف ﺣﻘﻝ ﺑﺟدوﻝ ؟‬
‫‪ 6‬ـ ﻣﺎ اﻷﻣر اﻟذي ﻣن ﺧﻼﻟﻪ ﺗﺳﺗطﻳﻊ ﺗﻐﻳﻳر اﺳم ﺣﻘﻝ ﺑﺟدوﻝ ؟‬
‫‪ 7‬ـ ﻣﺎ اﻷﻣر اﻟذي ﻣن ﺧﻼﻟﻪ ﺗﺳﺗطﻳﻊ ﺣذف ﺟدوﻝ ؟‬

‫‪45‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻟﺗﻌﺎﻣــﻝ ﻣــﻊ أﻧـواع أﺧــرى ﻣــن اﻟﻣﺣــددات وﻛﻳﻔﻳــﺔ اﺳــﺗﻌراض ﻫــذﻩ اﻟﻣﺣــددات وﻛﻳﻔﻳــﺔ‬
‫ﺣذﻓﻬﺎ وﺗﻔﻌﻳﻠﻬﺎ وﻋدم ﺗﻔﻌﻳﻠﻬﺎ‪:‬‬

‫‪: unique constraint -1-‬‬

‫ﻫ ــو ﻋﺑ ــﺎرة ﻋ ــن ﺣﻘ ــﻝ وﺣﻳ ــد أو ﻣﺟﻣوﻋ ــﺔ ﺣﻘ ــوﻝ وﺣﻳ ــدة ﺑﺎﻟﺟ ــدوﻝ ﻻ ﺗﺗﻛ ــرر وﻳﻌرﻓ ــﺎن‬
‫اﺳﺗﺛﻧﺎﺋﻳﺎً ﻓﻲ ﺳﺟﻝ وﻣﻣﻛن أن ﻳﺣﺗوي ﻋﻠﻰ ﻗـﻳم ﻓﺎرﻏـﺔ وﻟﻛـن ﻫـذﻩ اﻟﻘـﻳم ﺗﻛـون ﻓرﻳـدة أي‬
‫ﻻ ﺗﺗﻛرر أي ﻗﻳﻣﺔ واﺣدة ﻓرﻳدة‪.‬‬

‫اﻟﻔرق ﺑﻳن اﻟـ ‪ Primary Key‬و ‪UNIQUE‬؟‬

‫ﻻ ﻳوﺟد ﻓرق ﻛﺑﻳر ﻓﻛﻼﻫﻣـﺎ ﻻ ﻳﻘﺑـﻝ ﻗـﻳم ﻣﻛـررة وﻟﻛـن اﻟـذي ﻳﻣﻳـز اﻟ ـ ‪ UNIQUE‬ﻋـن‬
‫‪ PRIMARY KEY‬اﻧﻪ ﻳﻘﺑﻝ ﻗﻳﻣﺔ ﻓﺎرﻏﺔ ‪ NULL VALUE‬وﻟﻛن ﻏﻳر ﻣﻛررة‪.‬‬

‫ﻻ ﺗﺳﻣﺢ ﻟﻧﺎ اﻷوراﻛﻝ ﺑﺗﻌﻳﻳن ‪ Primary key‬و ‪ unique‬ﻟﻧﻔس اﻟﻌﻣود وﻟﻛن ﻟﻧﻔرض‬
‫أﻧﻧــﺎ ﻗﻣﻧــﺎ ﺑﺗﻌﻳــﻳن رﻗــم اﻟﻣوظــف ورﻗــم ﻫﺎﺗﻔــﻪ ورﻗــم ﻣﻧزﻟــﻪ ﻋﻠــﻰ أﻧــﻪ ‪ key Primary‬وﻻ‬
‫ﻧرﻳد أن ﻳﺗﻛرر رﻗـم اﻟﻣوظـف ﻓـﻧﻼﺣظ اﻧـﻪ ﻟـو ورﺿـﻌﻧﺎ رﻗـم اﻟﻣوظـف ‪ E01‬ورﻗـم ﻫﺎﺗﻔـﻪ‬
‫‪ 2222‬ورﻗم ﻣﻧزﻟـﻪ ‪ w01‬ﻓﻔـﻲ ﻫـذﻩ اﻟﺣﺎﻟـﺔ ﻟـو أﺿـﻔﻧﺎ ﺳـﺟﻝ آﺧـر ﺑـرﻗم اﻟﻣوظـف ‪E01‬‬
‫ورﻗم ﻫﺎﺗﻔﻪ ‪ 3333‬ورﻗم ﻣﻧزﻟﻪ ‪ w02‬ﻫﻝ ﺳـوف ﻳﻘﺑـﻝ أو ارﻛـﻝ؟ اﻟﺟـواب ﻧﻌـم ﻷن اﻟﺑﻳـﺎن‬
‫ـرر ﻷﻧﻧــﺎ ﺣــددﻧﺎ ﺑﺎﻟﺑداﻳــﺔ أن اﻟـ ـ‪ primary Key‬ﻳﺗﻛــون ﻣــن‬
‫ﻫﻧــﺎ ﻻ ﻳﻌﺗﺑــرﻩ أو ارﻛــﻝ ﻣﻛـ اً‬
‫ﺛﻼﺛ ــﺔ ﺣﻘ ــوﻝ ٕواذا أردﻧ ــﺎ أﻻ ﻳﺗﻛ ــرر رﻗ ــم اﻟﻣوظ ــف ﻧﻌﻳﻧ ــﻪ ‪ unique‬ﻟﻬ ــذا اﻟﺣﻘ ــﻝ وﻟﻛ ــن‬
‫اﻟــﺑﻌض ﺳــوف ﻳﻘــوﻝ إﻧﻧــﺎ ﻗﻠﻧــﺎ إن اﻷو ارﻛــﻝ ﻻ ﺗﻘﺑــﻝ أن ﻳﻌــﻳن اﻟـ ـ‪ primary key‬و‬
‫‪ unique‬ﻟﻧﻔس اﻟﺣﻘوﻝ وﻧﻘوﻝ ﻧﻌم وﻟﻛن ﻗﻠﻧﺎ ﻟﻧﻔس اﻟﺣﻘﻝ وﻟﻳﺳت ﻟﻣﺟﻣوﻋﺔ ﺣﻘوﻝ ﻓﻠـو‬
‫ﻋﻳﻧﻧــﺎ رﻗــم اﻟﻣوظــف ﻋﻠــﻰ اﻧــﻪ ‪ primary key‬ﻟوﺣــدﻩ ﺑﻬــذﻩ اﻟﺣﺎﻟــﺔ ﻻ ﻳﻣﻛﻧﻧ ـﺎ ﺗﻌﻳﻧــﻪ‬
‫‪.unique‬‬

‫ﻗﺎﻋــدة إﻧــﺷﺎء اﻟـــ ‪ :unique‬ﻫﻧــﺎك ﺣــﺎﻟﺗﻳن ﻹﻧــﺷﺎء اﻟ ـ ‪ unique‬وﻫــﻲ إﻣــﺎ إﻧــﺷﺎﺋﻪ ﻗﺑـﻝ‬
‫إﻧﺷﺎء اﻟﺟدوﻝ أو ﺑﻌد إﻧﺷﺎء اﻟﺟدوﻝ‪.‬‬

‫‪46‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

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);

47
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ واﺣد‬unique ‫ﺗﻌﻳﻳن أﻛﺛر ﻣن‬

:‫ﻣﺛﺎﻝ‬
ALTER TABLE supplier
add CONSTRAINT supplier_unique UNIQUE (supplier_id,
supplier_name);

‫ﻳــﺳﻣﺢ ﻟﻧــﺎ ﺑوﺿــﻊ ﺷــرط ﻋﻠــﻰ ﻛــﻝ ﺣﻘــﻝ ﺑﺎﻟﺟــدوﻝ ﻳﻌﻧــﻲ ﻻ‬:Constraints Check
:‫ ﻣﻊ ﻣراﻋﺎة‬.‫ﻳﻣﻛن اﻹﺿﺎﻓﺔ إﻻ ﺑﻌد اﻟﺗﺄﻛد ﻫﻝ ﻫو ﺿﻣن اﻟﺻﻼﺣﻳﺎت أم ﻻ‬

.(View )‫( ﻻ ﻳﻣﻛن إﻧﺷﺎﺋﻪ ﺑﺎﻟـ ـ‬check)‫ أن‬

‫( ﻳﺟب أن ﻳﻧﺗﻣﻲ أو ﻳرﺟﻊ ﻟﺣﻘوﻝ ﺿـﻣن اﻟﺟـدوﻝ وﻟﻳـﺳت أن ﺗﻛـون‬check)‫ أن‬


.‫ﺿﻣن ﺟداوﻝ أﺧرى‬

.‫ ( أو اﻻﺳﺗﻌﻼم اﻟﻣﺗداﺧﻝ‬Sub Query ) ‫( ﻻ ﻳﻣﻛن إﻧﺷﺎﺋﻪ ﻓﻲ‬check)‫ أن‬

:‫ﻗﺎﻋدة إﻧﺷﺎﺋﻪ‬

:‫أﺛﻧﺎء إﻧﺷﺎء اﻟﺟدوﻝ‬


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
48
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

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'));

49
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

: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;

50
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

‫ ﻳـــﺳﻣﻰ‬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;

51
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﺳﺋﻠﺔ‪:‬‬
‫‪ 1‬ـ ﻣﺎ ﻫو اﻟﻔرق ﺑﻳن اﻟـ ‪ PRIMARY KEY‬و ‪UNIQUE‬‬
‫‪ 2‬ـ ﻟﻧﻔرض أن ﻟدﻳﻧﺎ ﺟدوﻝ ﺗوﺟد ﺑﻪ ﺑﻳﺎﻧﺎت ﻣﻛررة وأردﻧﺎ أن ﻧﻧﺷﺊ ‪PRIMARY‬‬
‫‪ KEY‬ﻋﻠﻰ ﻫذا اﻟﻌﻣود اﻟذي ﻳﺣﺗوي ﻋﻠﻰ اﻟﺑﻳﺎﻧﺎت اﻟﻣﻛررة ﻣﺎ ﻫﻲ اﻟﺧطوات اﻟﻼزﻣﺔ‬
‫ﻟﺗطﺑﻳق ذﻟك‪.‬‬
‫‪ 3‬ـ ﻛﻳف ﻧﻘوم ﺑﺗﻔﻌﻳﻝ اﻟـ ‪CONSTRAINT‬‬

‫‪52‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫ﻗﺎﻋدة إﻧﺷﺎء اﻟـ ‪: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‬‬

‫‪function_name CREATE [OR REPLACE] FUNCTION‬‬


‫ﻫﻧﺎ ﻧﻘوم ﺑﻌﻣﻝ أو ﺗﺑدﻳﻝ اﻟدواﻝ ﻳﻌﻧﻲ ﻧﻛﺗب ‪ REPLACE CREATE OR‬ﺛم‬
‫ﻧﻛﺗب ‪ FUNCTION‬ﺛم ﻧﻛﺗب اﺳم اﻟدواﻝ وﻓﺎﺋدة اﻟـ ‪ REPLACE‬ﻫﻧﺎ ﻟﺗﺑدﻳﻝ‬
‫اﻟدواﻝ اﻟﻘدﻳم ﺑﺎﻟدواﻝ اﻟﺟدﻳد اﻟذي ﻧرﻳد إﻧﺷﺎﺋﻪ ] )‪[ ([parameter [,parameter‬‬
‫ﻫذﻩ اﻟﺟزﺋﻳﺔ ﻫﻲ ﻋﺑﺎرة اﻟﺑﺎراﻣﻳﺗر اﻟداﺧﻝ أو اﻟﺧﺎرج ﻣن اﻟدواﻝ ﺣﻳث ﻋﻧد اﺳﺗﺧدام‬
‫اﻟﺑﺎراﻣﻳﺗر وﺗﻌرﻳف ﻧوﻋﻪ ﻧﺳﺗﺧدم ﺛﻼث ﺣﺎﻻت وﻫﻲ‪:‬‬
‫‪ IN‬وﺗﻌﻧﻲ ﻗﻳﻣﺔ اﻟﺑﺎراﻣﻳﺗر اﻟداﺧﻠﺔ واﻟﻐﻳر ﻣرﺗﺟﻌﻪ ﺑﻬﺎ اﻟﻘﻳﻣﺔ‪.‬‬
‫‪ OUT‬وﺗﻌﻧﻲ ﻗﻳﻣﺔ اﻟﺑﺎراﻣﻳﺗر اﻟﺧﺎرﺟﺔ أو اﻟﻧﺎﺗﺟﺔ ﻣن اﻟدواﻝ‬
‫‪ IN OUT‬وﻫﻲ اﻟﻘﻳم اﻟداﺧﻠﺔ واﻟﺧﺎرﺟﺔ ﺣﻳث ﻳدﺧﻝ اﻟﺑﺎراﻣﻳﺗر ﺑﻘﻳﻣﺔ وﻳرﺟﻊ ﺑﻘﻳﻣﺔ‬
‫أﺧرى‪ .‬وﻧﺣن ﻧﻌرف أن اﻟدواﻝ ﺗرﺟﻊ اﻟﻘﻳﻣﺔ ﺑﺎﺳم اﻟدواﻝ ﻧﻔﺳﻪ‬

‫‪:RETURN return_datatype‬‬
‫ﻫﻧﺎ ﻧوع اﻟﻘﻳﻣﺔ اﻟﻣراد إرﺟﺎﻋﻬﺎ ﻓﻲ اﻟدواﻝ وﺗﻌﻧﻲ ﻧوع اﻟدواﻝ ﻫﻝ ﻫو رﻗم أو ﺣرف أو‬
‫ﻏﻳر ذﻟك‪.‬‬

‫‪53‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪ IS | AS‬وﺗﻌﻧﻲ اﻟﺗﻬﻳﺋﺔ وﻧﺳﺗﺧدم ﻋﺎدة اﻟـ ‪:IS‬‬

‫]‪[declaration_section‬‬

‫ﻫﻧﺎ ﻧﻌرف اﻟﺑﺎراﻣﻳﺗر اﻟﻣﺧﺗﻠﻔﺔ واﻟﺗﻲ ﻧﺳﺗطﻳﻊ اﺳﺗﺧداﻣﻬﺎ‪.‬‬

‫‪:BEGIN‬‬
‫‪executable_section‬‬

‫ﻫﻧﺎ ﻧﻬﻳﺊ اﻟدواﻝ ﻟﻧﺑدأ ﺑﻌﻣﻠﻳﺔ اﻟـ ‪ SELECT‬أو اﻟﻘﺎﺋم ﺑﺟﻣﻊ أو طرح أو ﻏﻳر ذﻟك‬

‫]‪:EXCEPTION‬‬

‫‪[exception_section‬‬

‫ﺗﺳﺗﺧدم ﻓﻲ ﺣﺎﻝ ﻟم ﻳﻧﻔذ اﻟﺷرط‬

‫‪;[function_name] END‬‬

‫وﻫﻧﺎ ﻧﻧﻬﻲ اﻟدواﻝ ﻣﻊ ﻛﺗﺎﺑﺔ اﺳم اﻟدواﻝ وﻳﺟب أن ﻳﻛون ﻣطﺎﺑق ﻻﺳم اﻟدواﻝ‬

‫‪54‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

:‫ﻣﺛﺎﻝ‬
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];

55
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫‪procedure_name CREATE [OR REPLACE] PROCEDURE‬‬


‫ﻫﻧﺎ ﻧﻘوم ﺑﻌﻣﻝ أو ﺗﺑدﻳﻝ اﻟـ ‪ Procedure‬ﻳﻌﻧﻲ ﻧﻛﺗب ‪OR CREATE‬‬
‫‪ REPLACE‬ﺛم ﻧﻛﺗب ‪ PROCEDURE‬ﺛم ﻧﻛﺗب اﺳم اﻟـ ‪PROCEDURE‬‬
‫وﻓﺎﺋدة اﻟـ ‪ REPLACE‬ﻫﻧﺎ ﻟﺗﺑدﻳﻝ اﻟـ ‪ PROCEDURE‬اﻟﻘدﻳم‬
‫ﺑﺎﻟـ‪ PROCEDURE‬اﻟﺟدﻳد اﻟذي ﻧرﻳد إﻧﺷﺎﺋﻪ‬

‫] )‪[ ([parameter [,parameter‬‬

‫ﻫذﻩ اﻟﺟزﺋﻳﺔ ﻫﻲ ﻋﺑﺎرة اﻟﺑﺎراﻣﻳﺗر اﻟداﺧﻝ أو اﻟﺧﺎرج ﻣن اﻹﺟراء ﺣﻳث ﻋﻧد اﺳﺗﺧدام‬
‫اﻟﺑﺎراﻣﻳﺗر وﺗﻌرﻳف ﻧوﻋﻪ ﻧﺳﺗﺧدم ﺛﻼث ﺣﺎﻻت وﻫﻲ‪:‬‬
‫‪ IN‬وﺗﻌﻧﻲ ﻗﻳﻣﺔ اﻟﺑﺎراﻣﻳﺗر اﻟداﺧﻠﺔ واﻟﻐﻳر ﻣرﺗﺟﻌﻪ ﺑﻬﺎ اﻟﻘﻳﻣﺔ ‪.‬‬
‫‪ OUT‬وﺗﻌﻧﻲ ﻗﻳﻣﺔ اﻟﺑﺎراﻣﻳﺗر اﻟﺧﺎرﺟﺔ أو اﻟﻧﺎﺗﺟﺔ‪.‬‬
‫‪ IN OUT‬وﻫﻲ اﻟﻘﻳم اﻟداﺧﻠﺔ واﻟﺧﺎرﺟﺔ ﺣﻳث ﻳدﺧﻝ اﻟﺑﺎراﻣﻳﺗر ﺑﻘﻳﻣﺔ وﻳرﺟﻊ ﺑﻘﻳﻣﺔ‬
‫أﺧرى‪.‬‬

‫‪/ IS‬وﺗﻌﻧﻲ اﻟﺗﻬﻳﺋﺔ‪:‬‬

‫]‪[declaration_section‬‬

‫ﻫﻧﺎ ﻧﻌرف اﻟﺑﺎراﻣﻳﺗر اﻟﻣﺧﺗﻠﻔﺔ واﻟﺗﻲ ﻧﺳﺗطﻳﻊ اﺳﺗﺧداﻣﻬﺎ ﻟﻠـ ‪.Procedure‬‬

‫‪:BEGIN‬‬
‫‪executable section‬‬
‫ﻫﻧﺎ ﻧﻬﻳﺊ اﻟـ ‪ Procedure‬ﻟﻧﺑدأ ﺑﻌﻣﻠﻳﺔ اﻟـ ‪ SELECT‬أو اﻟﻘﺎﺋم ﺑﺟﻣﻊ أو طرح أو‬
‫ﻏﻳر ذﻟك‬

‫‪56‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

: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;

‫ﻫذا اﻹﺟراء ﻳﺄﺧذ رﻗم اﻟﻛورس وﻳﺿﻳﻔﻪ إﻟﻰ ﺟدوﻝ اﻟطﻼب وﻳﻣﻛن اﺳﺗدﻋﺎﺋﻪ ﻋن‬
.ً‫طرﻳق اﻟﺗرﻳﺟر ﻣﺛﻼ‬

57
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

: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;

trigger_name CREATE or REPLACE TRIGGER


‫ ﺛم‬CREATE OR REPLACE ‫ ﻛﺗب‬Trigger ‫ﻫﻧﺎ ﻧﻘوم ﺑﻌﻣﻝ أو ﺗﺑدﻳﻝ اﻟـ‬
‫ ﻫﻧﺎ ﻟﺗﺑدﻳﻝ‬REPLACE ‫ وﻓﺎﺋدة اﻟـ‬TRIGGER ‫ ﻧﻛﺗب اﺳم اﻟـ‬TRIGGER ‫ﻧﻛﺗب‬
‫ اﻟﺟدﻳد اﻟذي ﻧرﻳد إﻧﺷﺎﺋﻪ‬TRIGGER ‫ اﻟﻘدﻳم ﺑﺎﻟـ‬TRIGGERJ ‫اﻟـ‬

58
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:TYPE TRIGGER
Trigger Delete ‫ و‬Update Trigger ‫ و‬Insert Triggers ‫وﻫﻲ أﻧواع‬
:‫وﺳوف ﻧﺳﺗﻌرض ﻫذﻩ اﻷﻧواع‬

‫ وﻫﻧﺎ ﺗﺿﻊ اﺳم اﻟﺟدوﻝ‬:ON table_name

[ FOR EACH ROW ]

‫وﻣﻌﻧﺎﻫﺎ ﻟﻛﻝ ﺳطر ﻳﺿﺎف‬


:‫ﻣﻊ ﻣﻼﺣظﺔ أﻧﻧﺎ‬
views ‫ ـ ﻻ ﻧﺳﺗطﻳﻊ إﻧﺷﺎء ﻫذﻩ اﻷﻧواع ﻋﻠﻰ‬1
‫ داﺧﻝ اﻟﺗرﻳﺟر‬new ‫ ـ ﻳﻣﻛن اﻟﺗﻌدﻳﻝ ﻋﻠﻰ‬2
‫ داﺧﻝ اﻟﺗرﻳﺟر‬old ‫ ـ ﻻ ﻳﻣﻛن اﻟﺗﻌدﻳﻝ ﻋﻠﻰ‬3
‫واﻟﺑﺎﻗﻲ ﻫو ﻋﺑﺎرة ﻋن إﺿﺎﻓﺔ اﻟﻣﺗﻐﻳرات أو اﻟﺗﺣﻛم ﺑﺟزﺋﻳﺔ اﻟﺟداوﻝ واﻟﺳﻳطرة ﻋﻠﻰ‬
.‫اﻟﺑﻳﺎﻧﺎت اﻟﻣدﺧﻠﺔ وﻓﻲ ﻫذﻩ اﻟﺟزﺋﻳﺔ ﻣﻣﻛن أن ﺗﺳﺗدﻋﻲ ﺑروﺳﻳﺟر أو ﻓﺎﻧﻛﺷن‬

:(Triggers Insert )‫وأوﻝ اﻷﻧواع ﻫو‬


:INSERT Trigger BEFOR
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;
:‫ﻣﺛﺎﻝ‬

59
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ﻧﻧﺷﺊ اﻟﺟدوﻝ‬
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;

60
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

: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

61
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

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;

62
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫إﻳﻘﺎف ﻋﻣﻝ ﺟﻣﻳﻊ اﻟﺗرﻳﺟرات ﻋﻠﻰ اﻟﺟدوﻝ‬


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;

63
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻷﺳﺋﻠﺔ‪:‬‬

‫‪ 1‬ـ ﻣﺎ ﻫﻲ اﻟﻔﺎﺋدة ﻣن اﻟدواﻝ؟‬

‫‪ 2‬ـ ﻛﻳف ﻧﺳﺗطﻳﻊ ﺗﺣدﻳد ﻧوع اﻟﺑﺎراﻣﻳﺗر إذا ﻛﺎن داﺧﻝ أو ﺧﺎرج؟‬

‫‪ 3‬ـ ﻗم ﺑﺈﻧﺷﺎء ﻓﺎﻧﻛﺷن ﻳﻘوم ﺑﺟﻣﻊ رﻗﻣﻳن ٕوارﺟﺎﻋﻬﻣﺎ ﻓﻲ ﺟﻣﻠﺔ ‪SELECT‬؟‬

‫‪ 4‬ـ ﻣﺎ ﻫﻲ اﻟﻔﺎﺋدة ﻣن اﻟﺑروﺳﻳﺟر؟‬

‫‪ 5‬ـ ﻛﻳف ﻧﺳﺗطﻳﻊ ﺗﺣدﻳد ﻧوع اﻟﺑﺎراﻣﻳﺗر إذا ﻛﺎن داﺧﻝ أو ﺧﺎرج؟‬

‫‪ 6‬ـ ﻗم ﺑﺈﻧﺷﺎء ﺑروﺳﻳﺟر ﻳﻘوم ﺑﺟﻣﻊ رﻗﻣﻳن ٕوارﺟﺎﻋﻬﻣﺎ ﻓﻲ ﺟﻣﻠﺔ ‪.SELECT‬‬

‫‪64‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

‫ واﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ‬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;

65
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ﻣﺛﺎﻝ‬
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;

66
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ وﻣﺎ ﻫﻲ وﻛﻳﻔﻳﺔ إﻧﺷﺎﺋﻬﺎ وﺣذﻓﻬﺎ‬Synonyms ‫اﻟـ‬

tables, ‫ ﻫــو ﻋﺑــﺎرة ﻋــن ﺑــدﻳﻝ ﻟﻣﺣﺗوﻳــﺎت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣﺛــﻝ اﻟـ ـ‬Synonyms ‫اﻟـ ـ‬
‫ وﻏﻳرﻫـﺎ ﻣـن اﻟﻣﺣﺗوﻳـﺎت وﻓﺎﺋـدﺗﻬﺎ أن‬,views, sequences, stored procedures
.‫اﻟﻣﺳﺗﺧدم ﻳﺳﺗطﻳﻊ أن ﻳﺟﻠب أو ﻳﻌدﻝ‬

:‫ﻗﺎﻋدة اﻹﻧﺷﺎء‬
create [or replace] [public] synonym [schema .] synonym_name
for [schema .] object_name [@ dblink];

ً‫ ﻣوﺟــود أﺻــﻼ‬Synonyms ‫ وﻫــذﻩ ﻧــﺳﺗﺧدﻣﻬﺎ ﻋﻧــدﻣﺎ ﻧرﻳــد اﻟﺗﻌــدﻳﻝ ﻋﻠــﻰ‬replace or


‫ ﻧﻛﺗﺑﻬــﺎ إذا ﻛﻧــﺎ ﻧرﻳــد ﺟﻣﻳــﻊ اﻟﻣــﺳﺗﺧدﻣﻳن ﻋﻠــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت اﻻﺳــﺗﻔﺎدة ﻣﻧﻬــﺎ‬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]

67
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ ﻧﻛﺗب اﻟﺗﺎﻟﻲ‬synonym ‫اﻟﺗﻌدﻳﻝ ﻋﻠﻰ‬


create or replace public synonym suppliers
for app.suppliers;

:synonym ‫ﺣذف اﻟـ‬


drop [public] synonym [schema .] synonym_name [force];
puplic ‫ أﺻ ـ ـ ـ ـ ــﻼ‬synonym ‫ ﺗ ـ ـ ـ ـ ــﺳﺗﺧدم ﻓ ـ ـ ـ ـ ــﻲ ﺣﺎﻟ ـ ـ ـ ـ ـ ـ ﻛ ـ ـ ـ ـ ــﺎن اﻟ ـ ـ ـ ـ ـ ـ‬public ‫ﺣﻳ ـ ـ ـ ـ ــث‬
‫ ﺣﺗﻰ ﻟو ﻛـﺎن ﻟﻬـﺎ ﺗﺑﻌﻳـﺎت ﻓﺈﻧﻬـﺎ ﺗﺟﺑـر اﻷو ارﻛـﻝ‬synonym ‫ ﺗﺳﺗﺧدم ﻟﺣذف اﻟـ‬force
.oject ‫ﻋﻠﻰ ﺣذﻓﻬﺎ وﻻ ﻳﺳﺗﺣب اﺳﺗﺧداﻣﻬﺎ ﻷﻧﻬﺎ ﻗد ﺗﻌطﻝ ﻋﻣﻝ اﻟـ‬

:‫ﻣﺛﺎﻝ‬
drop public synonym suppliers;

68
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫اﻟﻘواﻋد ‪ ROLES‬وﻛﻳﻔﻳﺔ إﻧﺷﺎﺋﻬﺎ‬


‫وﻫ ــﻲ ﻋﺑ ــﺎرة ﻋ ــن ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟ ــﺷروط ﻳ ــﺗم إﻧ ــﺷﺎﺋﻬﺎ ﻟﻳ ــﺗم إﻟـ ـزام اﻟﻣ ــﺳﺗﺧدم ﺑﻬ ــﺎ وﻫ ــﻲ‬
‫‪ Creating a Role‬ﻹﻧــﺷﺎء اﻟ ـ ‪ Role‬ﻳﺟــب إﻧــﺷﺎء ‪privileges Role system‬‬
‫وﻟﻳﺗم ذﻟك ﻧﺗﺑﻊ اﻟﺧطوات اﻟﺗﺎﻟﻳﺔ‪:‬‬
‫‪CREATE ROLE role_name‬‬
‫| ‪[ NOT IDENTIFIED‬‬
‫| ‪IDENTIFIED {BY password | USING [schema.] package‬‬
‫;} ‪EXTERNALLY | GLOBALLY‬‬

‫ﺣﻳث ‪ role_name‬ﻫو اﺳم اﻟـ ‪role‬‬

‫‪ : NOT IDENTIFIED‬ﺗوﺿـﻊ ﻓـﻲ ﺣﺎﻟ ـ ﺗﻌرﻳـف اﻟ ـ ‪ role‬ﺣﻳـث ﺗﻔﻌـﻝ اﻟ ـ‪ role‬وﻻ‬


‫ﻳﺣﺗﺎج ﻟﻛﻠﻣﺔ ﺳر ﻟﺗﻔﻌﻳﻝ اﻟـ ‪.role‬‬

‫‪ :IDENTIFIED‬ﻫﻧﺎ ﻳﺟب أن ﺗﻘوم ﺑﺗﻌرﻳف ﺧﺻﺎﺋص اﻟـ ‪ role‬ﻗﺑﻝ ﺗﻔﻌﻳﻠﻬﺎ‬

‫‪ :BY password‬ﻫﻧــﺎ ﺗﻌﻧــﻲ أن اﻟﻣــﺳﺗﺧدم ﻳﺟــب أن ﻳــﺿﻊ ﻛﻠﻣــﺔ ﺳــر ﻗﺑــﻝ ﺗﻔﻌﻳــﻝ اﻟ ـ‬
‫‪role‬‬
‫‪ :USING package‬ﻫﻧـﺎ ﺗﻛــون ﻗــد أﻧــﺷﺄت ﻣﺟﻣوﻋــﺔ ﻣــن ‪ role‬وﻳﺟــب ﺗطﺑﻳﻘﻬــﺎ ﻣــن‬
‫ﺧﻼﻝ اﻟﺑرﻧﺎﻣﺞ‪.‬‬

‫‪ : EXTERNALLY‬وﻫـ ـ ـ ـ ــذا ﻳﻌﻧـ ـ ـ ـ ــﻲ اﻧـ ـ ـ ـ ــك ﺗﺣﺗـ ـ ـ ـ ــﺎج إﻟـ ـ ـ ـ ــﻰ ﺗﻌرﻳـ ـ ـ ـ ــف ﺧـ ـ ـ ـ ــﺻﺎﺋص‬
‫‪ EXTERNALLY‬ﻗﺑﻝ ﺗﺷﻐﻳﻝ اﻟـ ‪.role‬‬

‫‪ : GLOBALLY‬ﻳﻌﻧﻲ أن اﻟﻣﺳﺗﺧدم ﻳﺳﺗطﻳﻊ ﺗﻌرﻳف أو اﻻطﻼع ﻋﻠﻰ اﻟﻳوزر ﻋـن‬


‫طرﻳق ﻣﺟﻠدات اﻟـ ‪.enterprise‬‬

‫ﻣﻊ ﻣﻼﺣظـﺔ إﻧﻧـﺎ إذا ﻟـم ﻧـﺿﻊ ‪ NOT IDENTIFIED‬أو ﻧـﺿﻊ ‪IDENTIFIED‬‬
‫ﺳوف ﻳﺗم إﻧﺷﺎء اﻟـ ‪ role‬ﻋﻠﻰ أﺳﺎس أﻧﻬﺎ ‪.NOT IDENTIFIED‬‬

‫‪69‬‬
‫‪www.abahe.co.uk‬‬
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫ﻣﺛﺎﻝ‪:‬‬

‫ﻧﻧﺷﺊ ‪ role‬وﻧﺳﻣﻳﻬﺎ ‪test_role‬‬


‫;‪CREATE ROLE test_role‬‬

‫ﻧﻧﺷﺊ ‪ role‬وﻟﻛن ﻧﺳﺗﺧدم اﻟﺑﺎﺳوورد ﺣﻳث ﻳطﻠب اﻟﺑﺎﺳوورد ﻋﻧد ﺗﺷﻐﻳﻠﻬﺎ‬


‫‪CREATE ROLE test_role‬‬
‫;‪IDENTIFIED BY test123‬‬

‫‪Roles Grant Privileges (on Tables) to‬‬


‫إﻋطﺎء اﻟﺻﻼﺣﻳﺎت ﻋﻠﻰ اﻟﺟداوﻝ ﻟـ ‪ role‬ﺑﺎﺳﺗﺧدام ‪privilege‬‬

‫وﻫﻧﺎك أﻧواع ﻣن اﻟﺻﻼﺣﻳﺎت ﻋﻠﻰ اﻟﺟداوﻝ ﻫﻲ‪:‬‬


‫‪ Select‬ﻹﻋطﺎء ﺻﻼﺣﻳﺔ اﻻﺳﺗﻌﻼم ﺑﺎﺳﺗﺧدام ﺟﻣﻠﺔ ‪select‬‬
‫‪ Insert‬ﻫو إﻋطﺎء ﺻﻼﺣﻳﺔ إﺿﺎﻓﺔ ﺳﺟﻝ ﺟدﻳد ﻋﻠﻰ اﻟﺟداوﻝ‬
‫‪ Update‬إﻋطﺎء ﺻﻼﺣﻳﺔ اﻟﺗﺣدﻳث ﻋﻠﻰ ﺳﺟﻝ ﻓﻲ اﻟﺟدوﻝ‬
‫‪ Delete‬إﻋطﺎء ﺻﻼﺣﻳﺔ اﻟﺣذف ﻟﺳﺟﻝ ﻣن اﻟﺟدوﻝ‬
‫‪ References‬إﻋطﺎء ﺻﻼﺣﻳﺔ ﻹﻧﺷﺎء اﻟـ ‪Constraints‬‬
‫‪ Alter‬إﻋطﺎء ﺻﻼﺣﻳﺔ اﻟﺗﻌدﻳﻝ ﻋﻠﻰ اﻟﺟدوﻝ‬
‫‪ Index‬إﻋطﺎء ﺻﻼﺣﻳﺔ ﻹﻧﺷﺎء اﻟـ ‪ index‬ﻋﻠﻰ اﻟﺟدوﻝ‬

‫اﻟﻘﺎﻋدة‪:‬‬
‫‪grant privileges on object to role_name‬‬

‫‪70‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

: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;

71
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

:‫ إﻟﻰ اﻟﻣﺳﺗﺧدم‬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 );

72
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

‫ﻣﻌﻠوﻣﺎت ﺗﻠﺧﻳﺻﻳﺔ‬

73
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2

74
www.abahe.co.uk
‫‪Arab British Academy for Higher Education.‬‬ ‫‪Oracle – Part 2‬‬

‫ﺗﻣرﻳن ﺣر‪:‬‬

‫‪ ‬أﻧــــﺷﺊ ﻣــــﺳﺗﺧدم ﺟدﻳــــد ﺑﺎﺳــــم ‪ ABAHE‬وﻛﻠﻣــــﺔ اﻟﻣــــرور ‪ DHID‬ﻣــــﻊ‬


‫اﻟﺻﻼﺣﻳﺎت اﻟﻣﻧﺎﺳﺑﺔ ﻟﻪ ﻟﻠﻌﻣﻝ‪.‬‬

‫‪ ‬ﺻــﻣم ﺟــداوﻝ ﻟﻠطــﻼب وﻧﺗــﺎﺋﺟﻬم وﻟــك ﺣرﻳــﺔ اﺧﺗﻳــﺎر اﻟﻌﻣﻠﻳــﺎت واﻟﻧﺗــﺎﺋﺞ اﻟﺗــﻲ‬
‫ﺗراﻫـــﺎ ﻣﻧﺎﺳـــﺑﺔ ﻟـــذﻟك ﻣـــﺳﺗﻔﻳداً ﺑﻣـــﺎ ﺳـــﺑق وﻣـــر ﻣﻌﻧـــﺎ وﻣـــن وﺟﻬـــﺔ ﻧظـــرك‬
‫ﻛﻣﺑرﻣﺞ‪...‬‬

‫‪ ‬اﺣﻔظ ﻛﻝ اﻷﻛواد ﻣﻊ اﻟﺷرح وأرﺳﻠﻬﺎ ﻷﺳﺗﺎذك اﻟﻣﺷرف‪.‬‬

‫ﻣﻊ ﲤﻨﻴﺎﺗﻨﺎ ﻟﻜﻢ ﺑﺎﻟﺘﻮﻓﻴﻖ ﻭﺍﻟﻨﺠﺎﺡ ﺍﻟﺪﺍﺋﻤﲔ‬


‫‪75‬‬
‫‪www.abahe.co.uk‬‬
Arab British Academy for Higher Education. Oracle – Part 2

76
www.abahe.co.uk

You might also like