Oracle
Oracle
Oracle – Part1
Oracle
Part 1
0
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺍﳉﺰء ﺍﻷﻭﻝ
ﺗﻌﺮﻳﻔﺎﺕ
ﻣﺎ ﻫﻲ ﺍﻷﻭﺭﻛﻞ
ﺍﻟﻌﻤﻠﻴﺎﺕ Processes
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ﻓ ــﻲ ﻧﻔ ــس
اﻟوﻗت.
ﻳﻘــوم ﻧظــﺎم اﻟﺗــﺷﻐﻳﻝ ﺑﺗﺣدﻳــد وﻗــت ﻣﻌــﻳن ﻟﻛــﻝ ﻋﻣﻠﻳــﺔ وطرﻳﻘــﺔ ﺗﻧﻔﻳــذﻫﺎ وأوﻟوﻳــﺔ
اﻟﺗﻧﻔﻳذ.
ﻗﺑـﻝ أن ﻧــﺻور اﻟﻛﻳﻔﻳــﺔ اﻟﺗــﻲ ﻳﻌﻣــﻝ ﺑﻬــﺎ ﺳــﻳرﻓر اﻷورﻛــﻝ ﻳﻧﺑﻐــﻲ ﺗوﺿــﻳﺢ ﻣﻌﻧــﻰ اﻟــﺳﻳرﻓر
واﻟذي ﻫو ﺑﺑﺳﺎطﺔ ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑراﻣﺞ واﻟﺗﻲ ﺗﺷﻛﻝ ﻧظﺎﻣﺎً ﻣﺗﻛﺎﻣﻼً ﺗرﻛب ﻋﻠـﻰ ﺟﻬـﺎز
5
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻛﻣﺑﻳوﺗر ﺑﻣواﺻﻔﺎت ﺧﺎﺻﺔ ﻛﻲ ﻳﺳﺗطﻳﻊ ﺗﻘدﻳم ﺧدﻣﺎت ﻣﻌﻳﻧﺔ إﻟﻰ ﺑراﻣﺞ أﺧـرى أو إﻟـﻰ
ﻋدة ﻣﺳﺗﺧدﻣﻳن ﻓﻲ ﻧﻔس اﻟوﻗت ﺗﻘرﻳﺑﺎً.
ﺳـﻳرﻓر أو ارﻛـﻝ Oracle Serverﻫـو ﻣﺟﻣوﻋـﺔ ﻣـن اﻟﺑـراﻣﺞ اﻟﺗـﻲ ﺗـﺷﻛﻝ ﻧظﺎﻣـﺎً ﺷـﺎﻣﻼً
ﻹدارة ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت .ﻣــن ﺧــﻼﻝ ﺗﻠــك اﻟﺑ ـراﻣﺞ ﻳــﺗم إﺟ ـ ارء ﻋﻣﻠﻳــﺎت ﻋدﻳــدة ﻓــﻲ اﻟــذاﻛرة
واﻟﺗــﻲ ﺗﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ اﻷورﻛــﻝ ﺑــﺷﻛﻝ ﺧــﺎص ﺣﻳــث ﺗــﺳﻣﺢ ﺗﻠــك اﻟﻌﻣﻠﻳــﺎت ﺑﺎﻟوﺻــوﻝ إﻟــﻰ
اﻟﻣﻠﻔﺎت اﻟﻣﺎدﻳﺔ اﻟﺗﻲ ﺗﺷﻛﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت واﻟﺗﻌﺎﻣـﻝ ﻣﻌﻬـﺎ ﺑﻛﻔـﺎءة .ﻳﻣﻛـن ﺗوﺿـﻳﺢ ﺗﻠـك
اﻟﻔﻛرة ﻋن طرﻳق اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ :
ﻣن ﺧﻼﻝ اﻟﻌرض اﻟﺳﺎﺑق ﻳﻣﻛن ﺗﺻور ﻣﻌﻣﺎرﻳﺔ اﻟﺳﻳرﻓر ﻷوراﻛﻝ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
.1اﻟﻌﻣﻠﻳﺎت Processes
ﻳﻧﺑﻐﻲ أن ﻧﻌﻲ اﻟﺗﻔرﻗﺔ ﺑـﻳن اﻷورﻛـﻝ ﻛـداﺗﺎﺑﻳز Databaseﺣﻳـث ﻳـﺷﻳر اﻟﻣـﺻطﻠﺢ إﻟـﻰ
ﻣﺟﻣوﻋﺔ ﻣﻧظﻣﺔ ﻣن اﻟداﺗﺎ ﻣﺧزﻧﺔ ﻓﻲ ﻣﻠﻔﺎت أﻣﺎ اﻟﻣﺛـﺎﻝ Instanceﻓﻬـو ﻣﺟﻣوﻋـﺔ ﻣـن
6
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
اﻟﻌﻣﻠﻳــﺎت Processesواﻟﺗــﻲ ﺗــﺗم ﻓــﻲ ﻣﻧــﺎطق ﻣﻌﻳﻧــﺔ ﻣــن اﻟــذاﻛرة ﺗﺣــددﻫﺎ أو ارﻛــﻝ ﻛــﻲ
ﻧــﺗﻣﻛن ﻣــن اﻟوﺻــوﻝ إﻟــﻰ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ اﻟﺗــﻲ ﺗــﺷﻛﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ.
أي أن:
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
أوﻝ ﻋﻣﻠﻳﺔ ﺗﻛون ﺟﺎﻫزة ﺳوف ﺗﻘوم ﺑﺄﺧذ اﻟطﻠب ﻣن اﻟطﺎﺑور ﻟﺗﻧﻔﻳذﻩ.
طﻠــب اﻟﻣــﺳﺗﺧدم ﺗــم ﺗﻧﻔﻳــذﻩ وﺗــم وﺿــﻊ ﻧﺗــﺎﺋﺞ اﻟﺗﻧﻔﻳــذ ﻓــﻲ طــﺎﺑور اﻻﻧﺗظــﺎر ﻣ ـرة
أﺧــرى ﺗﻣﻬﻳــداً ﻟﻌرﺿــﻪ ﻋﻠــﻰ اﻟﻣــﺳﺗﺧدم ﻳﻘــوم اﻟﻣــﺳﺗﻘﺑﻝ ﺑﺄﺧــذ ﻧﺗــﺎﺋﺞ اﻟطﻠــب ﻣــن
اﻟطﺎﺑور ﺛم ﻳﻘدﻣﻪ إﻟﻰ اﻟﻣﺳﺗﺧدم ﺛم ﻳﻐﻠق ﻗﻧﺎة اﻻﺗﺻﺎﻝ.
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وﻳﻛ ــون ﻋﻠ ــﻰ اﻟ ــﺷﻛﻝ اﻟﺗ ــﺎﻟﻲ
ﺣﻳث ﺗﺗم ﻗراءﺗﻪ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﺧدﻣﺔ اﻟﺳﺎﺑﻘﺔ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ
ﻫﻧﺎ ﻳﻘدم اﻟﻣﻠف اﻟﺳﺎﺑق ﻣﺟﻣوﻋﺔ ﻣن اﻟﻣﻌﻠوﻣﺎت اﻟﻣﻔﻳدة واﻟﺗﻲ ﺗﻌـﻳن ﻋﻠـﻰ ﺗﺣدﻳـد ﻣوﻗـﻊ
ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت اﻟﻣراد اﻻﺗﺻﺎﻝ ﺑﻬﺎ ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
اﻵن ُﻋــرف اﻟﺗطﺑﻳــق ﻓــﻲ ﺟﻬــﺎز اﻟﻣــﺳﺗﺧدم أﻳــن ﺳــوف ﻳﺗــﺻﻝ ﻓﻬــو ﻳــﺳﺗﺧدم ﺑروﺗوﻛــوﻝ
اﻻﺗــﺻﺎﻝ 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
ﻳﻌﻠم اﻟﻠﻳﺳﻧر ﺑﺎﻟـﺿﺑط اﻟﻣـﺳﺗﻘﺑﻼت اﻟﺗـﻲ ﺗﻌﻣـﻝ ﻋﻠـﻰ اﻟـداﺗﺎﺑﻳز وﻋﻧـدﻣﺎ ﻳطﻠـب اﻟﻣـﺳﺗﺧدم
اﻻﺗﺻﺎﻝ ﻳﻘوم اﻟﻠﻳﺳﻧر ﺑﺎﺧﺗﻳﺎر ﻣﺳﺗﻘﺑﻝ ﻣن ﺗﻠك اﻟﻣﺳﺗﻘﺑﻼت اﻟﺗـﻲ ﺗﻌﻣـﻝ ﺛـم ﻳﻌـود ﻟﻳﻘـدم
ﻟﻠﻣــﺳﺗﺧدم ﻣﻌﻠوﻣــﺎت ﻋــن ﻛﻳﻔﻳــﺔ اﻻﺗــﺻﺎﻝ ﺑﺎﻟﻣــﺳﺗﻘﺑﻝ وﻣﻧﻬــﺎ رﻗــم اﻟﺑواﺑــﺔ اﻟﻣﻔﺗوﺣــﺔ ٕواﻟــﻰ
ﻫﻧﺎ ﻳﻧﺗﻬﻲ دور اﻟﻠﻳﺳﻧر ﻓﻳﻧﻘطﻊ اﻻﺗﺻﺎﻝ ﺑﻳﻧﻪ وﺑﻳن اﻟﻣﺳﺗﺧدم ﻟﻳﺑدأ اﻟﻣﺳﺗﺧدم اﻻﺗﺻﺎﻝ
ﻣﺑﺎﺷرة ﺑﺎﻟﻣﺳﺗﻘﺑﻝ ﻛﻣﺎ ﻳﺗﺑﻳن ذﻟك ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ.
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
ﺑﺑــﺳﺎطﺔ ﻳﻣﻛــن اﻟﻧظــر إﻟــﻰ أو ارﻛــﻝ ﺳــﻳرﻓر ﻋﻠــﻰ أﻧــﻪ ﻋﺑــﺎرة ﻋــن ﻣﺛــﺎﻝ ﻣرﺑــوط ﺑﻣﻠﻔــﺎت
ﻣﺎدﻳـﺔ 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
ﻳﺗﺣﻛم ﻣﻠف اﻟﺑﺎرﻣﺗر ﻓﻲ ﻓﺗﺢ اﻟﻣﺛﺎﻝ ﺣﻳث ﻳﻌطﻰ اﻟﺗﻌرﻳﻔـﺎت اﻟﺧﺎﺻـﺔ ﺑ ـ SGA
وﺗﻌﻳﻳن ﻣﺳﺎﺣﺗﻬﺎ ﻛﻣﺎ ﻳﺗﺿﻣن اﺳم ﻣﻠف اﻟﺗﺣﻛم اﻟﺧﺎص ﺑﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت وأﻳﺿﺎً
ﻓﻲ وﺿـﻊ ﺗﻌرﻳﻔـﺎت اﻟﻌﻣﻠﻳـﺎت اﻟﺧﺎﺻـﺔ ﺑﺄو ارﻛـﻝ ﻓـﻲ اﻟﺧﻠﻔﻳـﺔ .وﻳوﺟـد ﻧـوﻋﻳن ﻣـن
اﻟﻣﻠﻔــﺎت اﻷوﻝ ﻳــﺳﻣﻰ ﻣﻠــف اﻟﺑــﺎرﻣﺗر PFILEوﻣﻠــف Server ) SPFILE
.(Paramater file
ﻳﻣﻛن ﺗﺣدﻳد اﻛﺛر ﻣن 250ﻗﻳﻣﺔ ﻓﻲ ﻛـﻼً ﻣـن اﻟﻣﻠﻔـﻳن وﻓـﻲ أو ارﻛـﻝ g10ﺗﻘـﺳم
اﻟﻘـﻳم إﻟـﻰ ﻧــوﻋﻳن أوﻟﻬﻣـﺎ أﺳﺎﺳــﻲ وﻳﺣﺗـوى ﻋﻠــﻰ 30ﻗﻳﻣـﺔ ﻳﻧﺑﻐــﻲ ﺗﺣدﻳـدﻫﺎ وﺑﻘﻳــﺔ
اﻟﻘﻳم ﻟﻼﺧﺗﻳﺎرات اﻟﻣﺗﻘدﻣﺔ.
اﻟﻣﻠف اﻟرﺋﻳﺳﻲ ﻟﻠﺗﺣﻛم ﻓﻲ ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺣﻳث ﻳﺣدد ذﻟـك اﻟﻣﻠـف ﻣواﺿـﻊ
اﻟﻣﻠﻔ ــﺎت اﻟﻣﺎدﻳ ــﺔ ﻟﻘﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت واﺳ ــم ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت وﻟﻐ ــﺔ ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت
وﺣﺟــم اﻟﺑﻠــوك اﻟﻣــﺳﺗﺧدم ﻓــﻲ ﺗﺧـزﻳن اﻟﻣﻠﻔــﺎت ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ ﻣﻌﻠوﻣــﺎت ﻻ ﻏﻧــﻰ
ﻋﻧﻬ ــﺎ ﻟﻌﻣﻠﻳ ــﺎت اﻹﺻ ــﻼح ٕواﻋ ــﺎدة اﺳـــﺗرﺟﺎع اﻟﺑﻳﺎﻧ ــﺎت ﻓ ــﻲ ﺣﺎﻟ ــﺔ ﻓ ــﺷﻝ ﻗﺎﻋـــدة
اﻟﺑﻳﺎﻧﺎت .وﺗﻌﺗﺑر ﻣﻠﻔﺎت اﻟﺗﺣﻛم ﻣن اﻷﺟزاء اﻟﺗﻲ ﻻ ﻳﻣﻛن اﻻﺳﺗﻐﻧﺎء ﻓـﻲ ﻗﺎﻋـدة
اﻟﺑﻳﺎﻧﺎت ﺣﻳث ﺗﻘوم ﺑﺗﺧزﻳن ﻣﻌﻠوﻣﺎت ﺣﻳوﻳﺔ ﻋن اﻟداﺗﺎﺑﻳز وﻣﻧﻬﺎ :
17
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻣﻠﻔ ــﺎت اﻟ ــﺗﺣﻛم ﻳ ــﺗم إﻧ ــﺷﺎءﻫﺎ أﺛﻧ ــﺎء ﻋﻣ ــﻝ ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت وﻓ ــﻰ اﻟﻣﻛ ــﺎن اﻟ ــذي ﻳﺣ ــددﻩ
اﻟﺑﺎرﻣﺗر Control Filesﻓﻲ ﻣﻠف اﻟﺑﺎرﻣﺗر .وﻣن أﺟﻝ أﻫﻣﻳﺔ اﻟﻣﻠف ﻳراﻋﻰ وﺟود ﻣﺎ
ﻳﺳﻣﻰ ازدواج ﻣﻠف اﻟﺗﺣﻛم Multiplexﺣﻳث ﻳﺗم إﻧـﺷﺎء ﻧـﺳﺦ ﻣـن ﻣﻠﻔـﺎت اﻟـﺗﺣﻛم ﻓـﻲ
أﻣﺎﻛن ﻣﺧﺗﻠﻔﺔ وﻳﺗم ﺗﺣدﻳﺛﻬﺎ أﺗوﻣﺎﺗﻳﻛﻳﺎ ﺑﺂﺧر اﻟﺗﻌدﻳﻼت واﻟذي ﺗﻘوم ﺑﻪ ﺧﺻﻳﺻﺎً ﻋﻣﻠﻳـﺔ
ﺑﺄو ارﻛــﻝ ﺗــﺗم ﻓــﻲ اﻟﺧﻠﻘﻳــﺔ ﺗــﺳﻣﻰ .CHKPﻳﻣﻛــن ﻣــن ﺧــﻼﻝ Viewاﻻﺳــﺗﻌﻼم ﻋــن
ﻣﻠﻔﺎت اﻟﺗﺣﻛم وﻫﻲ
;SQL> select name from v$controlfile
ﺗﻌﺗﺑــر ﻣﻠﻔــﺎت اﻟــداﺗﺎ ﻫــﻲ أﻫــم ﻣﻛــون ﻣــن ﻣﻛوﻧــﺎت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺣﻳــث ﺗﺣــوى
ﺟﻣﻳــﻊ اﻟﺟــداوﻝ واﻟﻔﻬــﺎرس واﻟﺗــﻲ ﺗﺧــزن ﺑﻬــﺎ اﻟﺑﻳﺎﻧــﺎت ﻋﻠــﻰ ﻫﻳﺋــﺔ ﺻــﻔوف .ﺗﻠــك
اﻟﻣﻠﻔــﺎت ﻻ ﻳﻣﻛــن ﻗراءﺗﻬــﺎ ﻣﺑﺎﺷ ـرة ﺑواﺳــطﺔ أﻳــﺔ وﺳــﻳﻠﺔ ﻣــن ﻣﺣــررات اﻟﻧــﺻوص
اﻟﻌﺎدﻳﺔ ٕواﻧﻣﺎ ﻳﺗم اﻟﺗﻌﺎﻣﻝ ﻣﻌﻬﺎ ﺑواﺳطﺔ أوراﻛﻝ ﻋـن طرﻳـق ﺗﻧﻔﻳـذ ﺟﻣـﻝ اﺳـﺗﻌﻼم
ﻣﻌﻳﻧﺔ .إن ﺗﻠك اﻟﻣﻌﻠوﻣﺔ ﻫﺎﻣﺔ ﻟﻠﻐﺎﻳﺔ ﻓﺈﻧﻧﺎ ﻻ ﻧﻣﻠك اﻟﺳﻳطرة ﻋﻠﻰ ﻛﻳﻔﻳـﺔ ﺗﺧـزﻳن
اﻟــداﺗﺎ ﻓــﻲ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ ﻓﻬــذا دور أو ارﻛــﻝ وﻟﻛﻧﻧــﺎ ﻓﻘــط ﻧــﺳﺗطﻳﻊ اﻟﺗﻌﺎﻣــﻝ ﻣــﻊ
اﻟﺑﻳﺎﻧـ ــﺎت ﻣـ ــن ﺧـ ــﻼﻝ ﺗﻧﻔﻳـ ــذ ﺟﻣـ ــﻝ SQLﻋﻠـ ــﻰ ﻫﻳﻛـ ــﻝ اﻓﺗ ارﺿـ ــﻲ ﻣﻛـ ــون ﻣـ ــن
اﻟﻣ ـ ــﺳﺎﺣﺎت اﻟﺟدوﻟﻳ ـ ــﺔ TableSpacesواﻟﺗ ـ ــﻲ ﺗﻧ ـ ــﺷﺄ ﻓﻳﻬ ـ ــﺎ ﺟـ ـ ـداوﻝ Tables
وﻓﻬﺎرس Indexesﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ:
18
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
اﻟﻬﻳﻛﻝ اﻟﻣﺎدي ﻟﻠﻣﻠﻔﺎت ﻣﻛون ﻣن ﻋدة ﻣﻠﻔﺎت Data Filesوﻫﻰ ﻣﻠﻔـﺎت ﺗوﺟـد
ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ ﺗﺷﻛﻝ اﻟوﻋﺎء اﻟﻣﺎدي ﻟﻠﺑﻳﺎﻧﺎت.
ﻻ ﻳﻣﻛــن إدارة ﺗﻠــك اﻟﻣﻠﻔــﺎت ﺑــﺻورة ﻣﺑﺎﺷ ـرة ﺑــﻝ ﺗــﺗم ﻣــن ﺧــﻼﻝ أو ارﻛــﻝ ﺣﻳــث
ﺗﻧــﺷﺊ ﻫﻳﻛ ــﻝ اﻓﺗ ارﺿ ــﻲ ﻟﻠﻣﻠﻔــﺎت ﻣﻛوﻧ ــﺎً ﺑ ــﺻﻔﺔ أﺳﺎﺳــﻳﺔ ﻣ ــن ﻣ ــﺳﺎﺣﺎت ﺟدوﻟﻳ ــﺔ
.TableSpaces
ﻣ ــن ﺧ ــﻼﻝ ﺗﻠ ــك اﻟﺟ ــداوﻝ واﻟﻣﻧ ــﺎظﻳر وﺑواﺳ ــطﺔ ﺗﻧﻔﻳ ــذ ﺟﻣ ــﻝ SQLﻳ ــﺗم ﺗﻧظ ــﻳم
اﻟﺑﻳﺎﻧﺎت اﻟﻔﻌﻠﻳﺔ ٕوادارﺗﻬﺎ.
ﻛﻝ ﻣﻠف داﺗـﺎ DataFileﻳـرﺗﺑط ﺑﻣـﺳﺎﺣﺔ ﺟدوﻟﻳـﺔ واﺣـدة ﻓﻘـط ﺑﻳﻧﻣـﺎ اﻟﻣـﺳﺎﺣﺎت
اﻟﺟدوﻟﻳﺔ ﻧﻔﺳﻬﺎ ﻳﻣﻛن أن ﺗﻛون ﻣرﺗﺑطﺔ ﺑﺄﻛﺛر ﻣن ﻣﻠف داﺗﺎ.
ﻻﺣ ــظ أﻧﻧ ــﺎ ﻻ ﻳﻣﻛﻧ ــﺎ اﻟ ــﺳﻳطرة ﻋﻠ ــﻰ ﻣﻛ ــﺎن وﺿ ــﻊ اﻟﺟ ــداوﻝ أو اﻟﻔﻬ ــﺎرس ﻋﻠ ــﻰ
ﻣﻠﻔﺎت اﻟداﺗﺎ اﻟﻣﺎدﻳﺔ .DataFiles
19
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
أﻣﺎ ﻋن ﻣﻠﻔﺎت اﻟداﺗﺎ ﻧﻔﺳﻬﺎ ﻓـﺄﻫم ﻣـﺎ ﻳﻣﻛـن أن ﻳﻘـﺎﻝ ﻋﻧﻬـﺎ ﻫـو أن ﻛـﻝ ﻣﻠـف داﺗـﺎ ﻳﺧـزن
ﺑﻪ رﻗم ﻣوﻟد ﺑواﺳطﺔ أوراﻛﻝ ) System Change Number (SCNﻳدﻝ ﻋﻠﻰ آﺧر
ﻋﻣﻠﻳـﺔ ﺗﻐﻳﻳــر ﺣــدﺛت وﺗﻣــت ﻋﻠــﻰ ﻣــﺳﺗوى ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت وﻫــذا اﻟـرﻗم ﻟــﻪ أﻫﻣﻳﺗــﻪ اﻟﻛﺑﻳـرة
ﻓﻌ ــن طرﻳﻘ ــﻪ ﻳﻣﻛ ــن ﻷو ارﻛ ــﻝ أن ﺗﻌ ــرف أﻳ ــﺔ ﺗﻐﻳﻳـ ـرات ﻳﻧﺑﻐ ــﻲ ﺗﺄﻛﻳ ــدﻫﺎ وﺗﺧزﻳﻧﻬ ــﺎ ﻋﻠ ــﻰ
اﻟﻣﻠﻔــﺎت وﺑﺎﻟﺗــﺎﻟﻲ ﻓــﺎن ذﻟــك اﻟـرﻗم ﻻ ﻳﻣﻛــن اﻻﺳــﺗﻐﻧﺎء ﻋﻧــﻪ ﻓــﻲ ﺣﺎﻟــﺔ اﻟﻧــﺳﺦ اﻻﺣﺗﻳــﺎطﻲ
ﻟﻠﻣﻠﻔﺎت ٕواﺻﻼح واﺳﺗﻌﺎدة ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺣﺎﻟﺔ ﺣدوث أﺧطﺎء.
ﺑﻘــﻲ أن ﻧﻌــرف أن ﻣﻠﻔــﺎت اﻟــداﺗﺎ ﻳــﺗم ﺗﺣدﻳ ــدﻫﺎ وﺣﺟزﻫــﺎ ﻋﻠــﻰ ﻧظــﺎم اﻟﺗــﺷﻐﻳﻝ ﺑ ــﺎﻟﺣﺟم
اﻟﻛﻠﻰ واﻟذي ﺗم ﺗﺣدﻳـدﻩ ﻓـﻲ أﻣـر إﻧـﺷﺎءﻫﺎ ﻓﻠـو ﺣـددﻧﺎ ﻣـﺛﻼً أن ﺣﺟـم اﻟﻣـﺳﺎﺣﺔ اﻟﺟدوﻟﻳـﺔ
Tablespaceﺳﻳﻛون M100ﻓﺎﻧﻪ ﺳﻳﺗم إﻧﺷﺎء وﺣﺟز ﻣﻠف داﺗﺎ ﻋﻠﻰ ﻧظﺎم اﻟﺗﺷﻐﻳﻝ
ﺑﻧﻔس اﻟﻘﻳﻣﺔ ﺣﺗﻰ وﻟو ﻛﺎن اﻟﻣﻠف ﻻ ﻳوﺟد ﺑﻪ أﻳﺔ ﺑﻳﺎﻧﺎت ﺑﻌد.
ﺗﺧــزن ﻓﻳﻬــﺎ أﻳــﺔ ﺗﻐﻳ ـرات ﺗﺣــدث ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﻣــﺛﻼً إدﺧــﺎﻝ ﻣﻌﺎﻣﻠــﺔ ﺟدﻳــدة
New transactionأو اﻟﺗﻌــدﻳﻝ ﻓﻳﻬــﺎ أو إﻟﻐﺎءﻫــﺎ وﻫــذﻩ اﻟﻣﻠﻔــﺎت أﺳﺎﺳــﻳﺔ ﻓــﻲ
ﺣﺎﻟــﺔ ﻓــﺷﻝ اﻟوﺻــوﻝ إﻟــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﺗــﺳﺗﺧدم ﺗﻠــك اﻟﻣﻠﻔــﺎت ﻓــﻲ اﻹﺻــﻼح
ٕواﻋﺎدة اﻟوﺿﻊ إﻟﻰ ﻣﺎ ﻛﺎن ﻋﻠﻳﻪ.
20
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
اﻟﻘطﺎع 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و
ﻳﺗﺷﻛﻝ ﻛﻝ اﻣﺗداد ﻣن ﺑﻠوﻛﺎت ﻣﺗﺟﺎورة.
ﻛﻝ ﺑﻠوك ﻓﻲ اﻟداﺗﺎﺑﻳز ﻳﻛون ﺣﺟﻣـﺎ ﺛﺎﺑﺗـﺎ ﻛﻣـﺎ أن اﻟﺑﻠوﻛـﺎت ﻟﻬـﺎ ﻧﻔـس اﻟﺗﻛـوﻳن اﻟﻌـﺎم
ﺣﻳث ﻳﺗﻛون اﻟﺑﻠوك ﻛﻣﺎ ﻳوﺿﺢ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ:
oﻳﺣﺗــوى رأس اﻟﺑﻠــوك Headerﻋﻠــﻰ ﻣﻌﻠوﻣــﺎت ﺗوﺿــﺢ ﻧــوع اﻟﺑﻠــوك ﺳ ـواء ﻛــﺎن
ﺑﻠوك ﺟداوﻝ Table Blockأو ﺑﻠوك ﻓﻬرس .Index Block
22
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
oﻳﺣﺗــوى اﻟــدﻟﻳﻝ إن وﺟــد ﻋﻠــﻰ ﻣﻌﻠوﻣــﺎت ﻋــن اﻟﺟــداوﻝ واﻟﺗــﻲ ﺗﺧــزن ﺻــﻔوف ﻓــﻲ
ذﻟ ــك اﻟﺑﻠ ــوك أو ﻣﺟﻣوﻋ ــﺔ اﻟﺟ ــداوﻝ إذا ﻛﺎﻧ ــت أﻛﺛ ــر ﻣ ــن ﺟ ــداوﻝ ﺗﺧ ــزن ﻋﻠ ــﻰ
ﺻﻔوف ﻋﻠﻰ ﻫذا اﻟﺑﻠوك.
oﻳﺣﺗ ــوى ﻋﻠ ــﻰ ﻣﻌﻠوﻣ ــﺎت ﺗ ــﺷﻳر إﻟ ــﻰ أﻣ ــﺎﻛن وﺟ ــود اﻟ ــﺻﻔوف ﻓ ــﻲ اﻟﺑﻠ ــوك ﻋ ــن
اﻟﺻﻔوف اﻟﻣوﺟودة ﻓﻲ اﻟﺑﻠوك.
ﻳﻣﻛ ــن ﺗ ــﺷﺑﻳﻬﻬﺎ ﺑوﻋ ــﺎء ﻛﺑﻳ ــر ﺣ ــﺎوي ﻟﺟﻣﻳ ــﻊ اﻟﻘطﺎﻋ ــﺎت ﻓﻛ ــﻝ ﻗط ــﺎع 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
24
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺑﻔرض أﻧﻧﺎ ﻧﺣﺗﺎج إﻟﻰ زﻳﺎدة ﻣﺳﺎﺣﺔ إﺿﺎﻓﻳﺔ ﻓﻳﻛون أﻣﺎﻣﻧﺎ أﺣد أﻣرﻳن :
ﻗﺑﻝ أوراﻛﻝ 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
ﻗدﻣت أوراﻛﻝ ﻣﻔﻬوم ﺟدﻳد اﺑﺗداء ﻣـن اﻹﺻـدار 8.1.5وﻫـو اﻹدارة اﻟﻣﺣﻠﻳـﺔ locally
managed tablespaceﻓــﻲ ﻣﻘﺎﺑــﻝ إدارة اﻟﻣــﺳﺎﺣﺎت اﻟﺟدوﻟﻳــﺔ ﻋــن طرﻳــق اﻟﻛــﺎﺗﻠوغ
dictionary managedاﻟـﺳﺎﺑق ﻓﻳﻘـوم اﻷﺳـﻠوب اﻟﺟدﻳـد ﻋﻠـﻰ أن اﻟﻣـﺳﺎﺣﺔ اﻟﺟدوﻟﻳـﺔ
TableSpaceﺗﻘ ــوم ﺑ ــﺈدارة اﻻﻣﺗ ــدادات extentsاﻟﺧﺎﺻ ــﺔ ﺑﻬ ــﺎ ﺣﻳ ــث ﻳ ــﺗم اﻻﺣﺗﻔ ــﺎظ
ﺑﻘﻳﻣــﺔ Bitmapﻋﻠــﻰ ﻛــﻝ ﻣﻠــف داﺗــﺎ ﻟﺗــدﻝ ﻋﻠــﻰ ﺣﺎﻟــﺔ اﻟﺑﻠوﻛــﺎت اﻟﻣﺧزﻧــﺔ ﻋﻠــﻰ ﺗﻠــك
اﻟﻣﻠﻔﺎت ﻫﻝ ﻫـﻲ ﺧﺎﻟﻳـﺔ أم ﺷـﺎﻏرة ﻓـﺈذا ﻛﺎﻧـت ﺧﺎﻟﻳـﺔ ﻓﺎﻧـﻪ ﻳـﺗم اﺳـﺗﻐﻼﻟﻬﺎ ﻣـرة أﺧـرى .أن
أوراﻛﻝ ﺗﻘوم ﺑﺎﺳﺗﻣرار ﺑﺗﺣدﻳث ﺗﻠك اﻟﻘﻳﻣﺔ دون اﻻﺳﺗﻌﺎﻧﺔ ﺑﺎﻟﻛﺗﺎﻟوج.
ﺗﻌﺗﺑر ﺗﻠك اﻟﻣﻠﻔﺎت ﺣﻳوﻳﺔ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧـﺎت ﻓﻬـﻲ ﺗﺣـوي ﺳـﺟﻼت اﻟﻌﻣﻠﻳـﺎت اﻟﺗـﻲ
ﺗﻣت ﻋﻠﻰ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻻ ﺗـﺳﺗﺧدم ﺗﻠـك اﻟﻣﻠﻔـﺎت إﻻ ﻓـﻲ ﻋﻣﻠﻳـﺎت إﺻـﻼح واﺳـﺗﻌﺎدة
أﻳــﺔ أﺧطــﺎء ﻓــﻲ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﻌﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ ﻟــو ﺣــدث اﻧﻘطــﺎع اﻟﺗﻳــﺎر اﻟﻛﻬرﺑــﺎﺋﻲ
ﻋن اﻟﺟﻬﺎز اﻟﻣوﺟود ﺑﻪ اﻟﺳﻳرﻓر ﻓﺎن ذﻟك ﺳﻳﺳﺑب ﻓﻲ اﻷﻏﻠـب ﻓـﻲ ﺣـدوث أﺧطـﺎء ﻓـﻲ
اﻟﻣﺛـﺎﻝ Instance Failureوﻫﻧـﺎ ﺗـﺳﺗﺧدم أو ارﻛـﻝ ﻣﻠـف اﻟﺗ ارﺟـﻊ OnLine Redo
Logﻹﻋــﺎدة اﺳــﺗرﺟﺎع اﻟﻧظــﺎم إﻟــﻰ اﻟﻧﻘطــﺔ اﻟﺗــﻲ ﻛﺎﻧــت ﻗﺑــﻝ اﻧﻘطــﺎع اﻟﺗﻳــﺎر اﻟﻛﻬرﺑــﺎﺋﻲ.
ٕواذا ﺣــدث ﻋﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ أن ﻗﻣﻧــﺎ ﺑﺗﺄﻛﻳــد إﻟﻐــﺎء ﺟــداوﻝ ﻓﺎﻧــﻪ ﻳﻣﻛــن ﻣــﻊ اﺳــﺗﺧدام
26
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻧــﺳﺧﺔ اﺣﺗﻳﺎطﻳــﺔ ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ ﻣﻠﻔــﺎت اﻟﺗ ارﺟــﻊ أن ﻧﻌﻳــد ﻣــﺎ ﻓﻘــد ﻣــن
ﺑﻳﺎﻧﺎت.
ﻛـﻝ ﻋﻣﻠﻳـﺔ ﺗﻘرﻳﺑـﺎً ﺗـﺗم ﻓـﻲ أو ارﻛـﻝ ﻳـﺗم ﺗـﺳﺟﻳﻠﻬﺎ ﻓـﻲ ﻣﻠﻔـﺎت اﻟرﻳـدو ONLINE Redo
ﻓﻌﻠﻰ ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﻋﻧدﻣﺎ ﻧدﺧﻝ ﺻﻔﺎً ﺟدﻳداً أو ﻋﻧدﻣﺎ ﻧﻠﻐﻲ ﺻـﻔﺎً ﻓـﺈن ذﻟـك ﻳـﺳﺟﻝ ﻓـﻲ
ﻣﻠﻔﺎت اﻟرﻳدو .ﻳوﺟد ﻧوﻋﻳن ﻣن ﻣﻠﻔﺎت اﻟرﻳدو وﻫﻣﺎ
ﺗﺣﺗــوى ﻗﺎﻋــدة ﺑﻳﺎﻧــﺎت أروا ﻛـﻝ ﻋﻠــﻰ اﺛﻧــﻳن ﻣــن ﻣﻠﻔــﺎت اﻟرﻳــدو ﻋﻠــﻰ اﻷﻗــﻝ وﻫــﻲ
ﻣﻠﻔــﺎت ذات ﺣﺟــم ﺛﺎﺑــت وﻳــﺗم اﻟﺗــﺳﺟﻳﻝ ﻋﻠﻳﻬــﺎ ﺑطرﻳﻘــﺔ داﺋرﻳــﺔ ﺑﻣﻌﻧــﻰ أن ﻗﺎﻋــدة
اﻟﺑﻳﺎﻧ ــﺎت ﺳ ــوف ﺗ ــﺳﺟﻝ ﻓ ــﻲ اﻟﻣﻠ ــف اﻷوﻝ ﺣﺗ ــﻰ اﻣﺗﻼﺋ ــﻪ ﺛ ــم ﻳ ــﺗم اﻟﺗﺣوﻳ ــﻝ إﻟ ــﻰ
اﻟﻣﻠــف اﻟﺛــﺎﻧﻲ وﻓــﻰ ﺣﺎﻟــﺔ اﻣﺗﻼﺋــﻪ ﻳــﺗم إﻋــﺎدة اﻟﻛﺗﺎﺑــﺔ ﻋﻠــﻰ اﻟﻣﻠــف اﻷوﻝ وﻫﻛــذا.
ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ:
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
وﻫــذا ﻳﻌﻧــﻰ أن ﻛﺎﺗــب اﻟﻠــوغ ﻟــم ﻳﻧﺗــﻪ ﻣــن ﻋﻣﻠــﻪ ﺑﻌــد وﻗــد اﻣﺗﻠــﺊ ﻣﻠــف اﻟﻠــوغ ﻓــﻼ ﻳــﺳﺗطﻳﻊ
اﺳﺗﻘﺑﺎﻝ ﺳﺟﻼت ﺟدﻳدة وﻫﻧﺎ ﻳﻛون ﻋﻠﻰ ﻣدﻳر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت أن ﻳزﻳد ﺑﻘـدر اﻟﻣـﺳﺗطﺎع
ﻣن ﺳﻌﺔ ﻣﻠﻔﺎت اﻟرﻳدو ﻟوج.
ﻳﻣﻛــن أن ﺗﻌﻣــﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑﺈﺣــدى أﺳــﻠوﺑﻳن وﻫﻣــﺎ إﻣــﺎ ﻋــدم اﻟــﺳﻣﺎح ﺑﺗﻛــوﻳن ﻧــﺳﺦ
اﺣﺗﻳﺎطﻳـﺔ ﻋﻠـﻰ اﻟدﻳـﺳك ﻣـن ﻣﻠﻔـﺎت اﻹﻋـﺎدة واﻟﺗ ارﺟـﻊ 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
ﺗﻣﺛﻝ اﻟﻌﻣﻠﻳﺔ ﺳﻠﺳﻠﺔ ﻣن اﻷواﻣر أو اﻟﺧطوات اﻟﺗﻲ ﻳـﺗم ﺗﻧﻔﻳـذﻫﺎ ﺑـﺻورة ﻣﺗﺎﺑﻌـﺔ وﺗﺣﺟـز
ﻣﻛﺎﻧﺎً ﺧﺎﺻﺎً ﺑﻬﺎ ﻓﻲ اﻟذاﻛرة ﺣﻳث ﻳﺗم ﺗﻧﻔﻳذﻫﺎ وﻓﻰ ﺑﻳﺋـﺔ اﻟﻌﻣـﻝ اﻟﺗـﻲ ﺗﺗﻣﻳـز ﺑﺎﻟﻌدﻳـد ﻣـن
اﻟﻣــﺳﺗﺧدﻣﻳن ﻳﻌﻠﻣــون ﻓــﻲ ﻧﻔــس اﻟوﻗــت ﻳــﺗم ﺗﻧﻔﻳــذ اﻟﻌدﻳــد ﻣــن اﻟﻌﻣﻠﻳــﺎت ﻓــﻲ ﻧﻔــس اﻟوﻗــت
ﺑﺻورة ﻣﺗوازﻳﺔ )ﻛﻝ ﻣﻧﻬﺎ ﻳﻌﻣﻝ ﺑﺻورة ﻣـﺳﺗﻘﻠﺔ ﻋـن اﻷﺧـرى وﺗﻘرﻳﺑـﺎً ﻓـﻲ ﻧﻔـس اﻟـزﻣن(.
ﻳﻣﻛن ﺑﺻورة ﻋﺎﻣﺔ وﺿﻊ ﺗـﺻور ﻋـﺎم ﻟﻣـﺎ ﺗﻘـوم ﺑـﻪ أو ارﻛـﻝ ﻣـن ﻣﻬـﺎم وﻋﻣﻠﻳـﺎت رﺋﻳـﺳﻳﺔ
ﻋﻠﻰ اﻟﻧﺣو اﻟﺗﺎﻟﻲ:
ﺗﻘ ـ ـ ـ ـ ـ ـ ـ ـ ــوم
31
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
اﻟﻣﺟﻣوﻋﺔ اﻷوﻟﻰ ﻣن اﻟﻌﻣﻠﻳﺎت ﺗﻘوم ﺑﺗﻠﺑﻳﺔ طﻠﺑﺎت اﻟﻣـﺳﺗﺧدم ﺣﻳـث ﻳﻣﻛـن اﻟﻧظـر إﻟﻳﻬـﺎ
ﻛراﺑطــﺔ أو ﺣﺑــﻝ ﻳــﺷدك إﻟــﻰ أو ارﻛــﻝ ﻓﻌﻧــدﻣﺎ ﺗﺣﺗــﺎج إﻟــﻰ ﻣﻌﻠوﻣــﺎت ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت
ﺳوف ﺗﺄﻣر ﺗﻠك اﻟﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﻳﺎت ﻛـﻲ ﺗﻘـوم ﺑرﺑطـك ﺑﻘﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت ﺛـم ﺗﺣـﺿر
ﻣــﺎ طﻠﺑﺗــﻪ ﻣــن ﻣﻌﻠوﻣــﺎت ٕواذا ﻣــﺎ ﻗﻣــت ﺑﺗﻌــدﻳﻼت أو ﺗﺣــدﻳﺛﺎت ﻓﺈﻧﻬــﺎ ﺗــﺄﻣر ﺑﺎﺳــﺗدﻋﺎء
ﻋﻣﻠﻳﺎت أﺧرى ﻟﺗﺳﺟﻝ ﺗﻠك اﻟﺗﻌدﻳﻼت ﻓﻲ ﻣﻧﺎطق ﺧﺎﺻـﺔ ﻓـﻲ اﻟـذاﻛرة ﺗﻣﻬﻳـداً ﻟﻧﻘـﻝ ﺗﻠـك
اﻟﺗﺣدﻳﺛﺎت ﻓﻳﻣﺎ ﺑﻌد إﻟﻰ اﻟﻣﻠﻔﺎت اﻟﺧﺎﺻﺔ ﺑﺎﻟداﺗﺎﺑﻳز.
أﻣــﺎ اﻟﻣﺟﻣوﻋــﺔ اﻟﺛﺎﻧﻳـــﺔ ﻣــن ﺗﻠــك اﻟﻌﻠﻣﻳــﺎت ﻓﻬــﻲ ﺗﻌﻧــﻰ ﺑوﺿــﻊ وﻛﺗﺎﺑــﺔ اﻟﺑﻳﺎﻧــﺎت ﻋﻠــﻰ
اﻟﻣﻠﻔــﺎت اﻟﻣﻛوﻧــﺔ ﻟﻠــداﺗﺎﺑﻳز Data Filesﻓﻛﻣــﺎ ﻗﻠﻧــﺎ ﻣــن ﻗﺑــﻝ ﻓــﺎن اﻟﻣﻌﻠوﻣــﺎت ﺗﺧــزن
ﻣﺑدﺋﻳﺎً ﻓﻲ ﻣﻧﺎطق ﺗﺣددﻫﺎ اﻷورﻛﻝ ﻓﻲ اﻟذاﻛرة ِ Shared Memoryﺛم ﺗﻧﻘـﻝ ﺑواﺳـطﺔ
ﺗﻠك اﻟﻌﻣﻠﻳﺎت ﺑﻌد وﻗت ﻣﻌـﻳن إﻟـﻰ اﻟﻣﻠﻔـﺎت وﻳـﺗم إﺧـﻼء اﻟﻣﻧطﻘـﺔ ﻟﺗـوﻓﻳر ﻗـدر اﻛﺑـر ﻣـن
ﻣﺳﺎﺣﺔ اﻟذاﻛرة.
وﺗﺧــﺗص اﻟﻣﺟﻣوﻋــﺔ اﻟﺛﺎﻟﺛــﺔ ﺑﻛﺗﺎﺑــﺔ ﻣــﺎ ﻳﺣــدث ﻋﻠــﻰ اﻟﺑﻳﺎﻧــﺎت ﻣــن ﺗﻌــدﻳﻼت ﻓــﻲ ﻣﻠﻔــﺎت
اﻟﻠــوغ ﺣﻳــث ﺗــﺳﻣﺢ ﺗﻠــك اﻟﻣﻠﻔــﺎت ﺑﺎﺳــﺗﻌﺎدة آﺧــر ﻣــﺎ ﺗــم ﻋﻠــﻰ اﻟﺑﻳﺎﻧــﺎت ﻣــن ﺗﻌــدﻳﻼت ﻓــﻲ
ﺣﺎﻟﺔ ﻓﺷﻝ اﻟوﺻوﻝ إﻟﻰ اﻟداﺗﺎﺑﻳز واﻟذي ﻳﺣدث ﻧﺗﻳﺟـﺔ اﻟﻌدﻳـد ﻣـن اﻷﺳـﺑﺎب وﻣﻧﻬـﺎ ﺗﻠـف
وﺣدات اﻟﺗﺧزﻳن.
32
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ُﺗﻘــﺳم اﻟﻌﻣﻠﻳــﺎت اﻟﺗــﻲ ﺗﻘــوم ﺑﻬــﺎ أوراﻛــﻝ إﻟــﻰ ﻧــوﻋﻳن أﺳﺎﺳــﻳن ﻣــن وﺟﻬــﺔ اﻟﻣــﺳﺗﺧدم
اﻟذي ﻳرﻳد اﻻﺗﺻﺎﻝ ﺑﺄوراﻛﻝ:
Processes
ٕواذا ﻧظرﻧــﺎ إﻟــﻰ اﻟﻣــﺳﺗﺧدم اﻟــذي ﻳرﻳــد اﻻﺗــﺻﺎﻝ ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻧﺟــد أن ﻫﻧــﺎك ﻧــوﻋﻳن
ﻣن اﻟﻌﻣﻠﻳﺎت ﻣﺧﺻﺻﻳن ﻟﺿﻣﺎن اﺗﺻﺎﻝ اﻟﻣﺳﺗﺧدم ﺑﻣﺛـﺎﻝ اﻷورﻛـﻝ وﺑﺎﻟﺗـﺎﻟﻲ ﻟﻼﺗـﺻﺎﻝ
ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ .ﻳﻘــوم اﻟﻣــﺳﺗﺧدم ﺑﺗــﺷﻐﻳﻝ ﺗطﺑﻳــق وﻟــﻳﻛن ﻣــﺛﻼً ﺑرﻧــﺎﻣﺞ
ﻟــﺷؤون اﻷﻓ ـراد واﻟــذي ﻳﺗطﻠــب اﻟﺣــﺻوﻝ ﻋﻠــﻰ داﺗــﺎ ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﺗﻘــوم اﻷورﻛــﻝ
ﺑﺗــﺷﻐﻳﻝ ﻋﻣﻠﻳــﺎت ﺧﺎﺻــﺔ ﻟﺧدﻣــﺔ ﻫــذا اﻟﻣــﺳﺗﺧدم User Processﺣﻳــث ﺗﻘــوم ﺗﻠــك
اﻟﻌﻠﻣﻳﺎت ﺑﻌﻣﻝ ﻗﻧﺎة اﺗﺻﺎﻝ ﺗﺳﻣﺢ ﺑرﺑط اﻟﻣﺳﺗﺧدم ﺑﻣﺛﺎﻝ اﻷورﻛﻝ وﻋﻧدﻣﺎ ﻳـﺗم ﻓـﺗﺢ ﺗﻠـك
اﻟﻘﻧﺎة ﺗﻘوم أوراﻛﻝ ﺑﺗـﺷﻐﻳﻝ ﻋﻣﻠﻳـﺎت إﺿـﺎﻓﻳﺔ Server Processﻋﻠـﻰ ﺳـﻳرﻓر اﻷورﻛـﻝ
ﻧﻔﺳﻪ واﻟﺗﻲ ﺗﻛون ﻣﺳؤوﻟﺔ ﻓﻌﻠﻳﺎً ﻋن ﺗﻌﺎﻣﻝ اﻟﻣﺳﺗﺧدم ﻣـﻊ ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻳﺗـﺿﺢ ذﻟـك
ﻣن اﻟرﺳم اﻟﺗﺎﻟﻲ:
33
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
اﻟﻣــﺳﺗﺧدم ﻳﺑــدأ ﻓــﻲ ﺗــﺷﻐﻳﻝ ﺗطﺑﻳــق ﻳﺣﺗــﺎج إﻟــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﺗﺑــدأ ﻋﻣﻠﻳــﺎت
اﻟﻣﺳﺗﺧدم ﻓﻲ اﻟﺗﺷﻐﻳﻝ .User Process
ﺑﻣﺟرد ﺗﺄﻛﻳد اﻻﺗﺻﺎﻝ ﻳﺗم اﻟﺗﻌﺎﻣﻝ اﻟﻣﺑﺎﺷر ﺑﻳن اﻟﻣﺳﺗﺧدم وﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت ﻋـن
طرﻳق ﻋﻣﻠﻳﺎت اﻟﺳﻳرﻓر Server Processواﻟﺗﻲ ﺗﺗﻌﺎﻣﻝ ﻣﻊ اﻟﻣﺛﺎﻝ Oracle
Instanceو ﺗﻛون ﻓﻲ ﺧدﻣﺗﻪ.
34
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻳوﺟد ﻧوﻋﻳن رﺋﻳﺳﻳن ﻣن اﻟﻌﻣﻠﻳﺎت اﻟﺗﻲ ﺗﺧﺗص ﺑﺗﻠك اﻟوظﻳﻔﺔ اﻟﻬﺎﻣﺔ أوﻟﻬﻣﺎ:
ﺣﻳــث ﺗﻘــوم ﺗﻠــك اﻟﻌﻣﻠﻳــﺔ ﺑﻛﺗﺎﺑــﺔ ﺑﻠوﻛــﺎت اﻟﺑﻳﺎﻧــﺎت اﻟﻣﻌدﻟــﺔ ﻣــن اﻟــذاﻛرة إﻟــﻰ
اﻟﻣﻠﻔﺎت اﻟﻣﻛوﻧﺔ ﻟﻠداﺗﺎﺑﻳز ﻛﻣﺎ ﻳظﻬر ﻓﻲ اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ واﻟذي ﻳوﺿـﺢ اﻧﺗﻘـﺎﻝ
اﻟﺑﻳﺎﻧــﺎت ﻣــن اﻟــذاﻛرة اﻟﻣؤﻗﺗــﺔ Database Buffer cacheإﻟــﻰ اﻟﻣﻠﻔــﺎت
0Dataوﻳﻼﺣ ــظ أﻧ ــﻪ ﺑﺎﻟﻧ ــﺳﺑﺔ اﻟﻣﺎدﻳ ــﺔ اﻟﻣﻛوﻧ ــﺔ ﻟﻘﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت files
ﻟﻠﻣـﺳﺗﺧدم ﻳﻣﻛـن أن ﻳﻛـون ﻫﻧـﺎك اﻛﺛـر ﻣـن ﻛﺎﺗـب ﻳﻌﻣـﻝ ﻓـﻲ اﻟﺧﻠﻔﻳـﺔ ﻟﺗﻔــﺎدي
اﻹﺧﺗﻧﺎﻗﺎت اﻟﺗﻲ ﻣﻣﻛن أن ﺗﺣدث أﺛﻧﺎء اﻧﺗﻘﺎﻝ اﻟﺑﻳﺎﻧﺎت.
ﺗﻘــوم ﺗﻠــك اﻟوظﻳﻔــﺔ ﺑﺗﺣــدﻳث ﻣﻠــف اﻟــﺗﺣﻛم Control Fileورأس ﻣﻠﻔــﺎت اﻟــداﺗﺎ
Data filesواﻟﻣﻛوﻧــﺔ ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑ ـرﻗم ﻳــﺳﻣﻰ System Change
) Number (SCNوﻫــو رﻗــم ﻳــﺗم ﺗوﻟﻳــدﻩ ﻣــن اﻟﻧظــﺎم ﻟﻳــدﻝ ﻋﻠــﻰ آﺧــر ﻣﻌﺎﻣﻠــﺔ
ـﺎء ﻋﻠــﻰ
ﺗﻣــت ﺑﻧﺟــﺎح ﻋﻠــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت .إن ﻫــذﻩ اﻟوظﻳﻔــﺔ ﺗﻔَُﻌــﻝ ﺗﻠﻘﺎﺋﻳــﺎً ﺑﻧـ ً
ﺣــدث ﻳــﺳﻣﻰ اﻟﺗﺣﻘــق Checkpointواﻟــذي ﻳﺣــدث ﻛﻠﻣــﺎ ﺣــدث ﺗﺑــدﻳﻝ ﻟﻠﻛﺗﺎﺑــﺔ
ﺑﻳن ﻣﻠف ﻟوغ إﻟﻰ ﻣﻠف ﻟوغ آﺧر.
35
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻣﻬﻣﺗــﻪ اﻷﺳﺎﺳــﻳﺔ ﺗﺗرﻛــز ﻓــﻲ ﻋﻣــﻝ ﻧــﺳﺦ اﺣﺗﻳﺎطﻳـﺔ ﻣــن ﻣﻠﻔــﺎت اﻟﻠــوغ إﻟــﻰ ﻣﻠﻔــﺎت
اﻷرﺷــﻳف واﻟﺗــﻲ ﺗﺣﻔــظ ﻋﻠــﻰ ﺷ ـرﻳط أو دﻳــﺳك آﺧــر .ﺗﺑــدأ ﺗﻠــك اﻟوظﻳﻔــﺔ ﻋﻧــدﻣﺎ
ﺗﻛــون اﻟــداﺗﺎﺑﻳز ﻓــﻲ وﺿــﻌﻳﺔ اﻷرﺷــﻳف وذﻟــك ﻋــن طرﻳــق اﻷﻣــر Alter log
System Archiveأو أﺗوﻣﺎﺗﻳﻛﻳﺎً ﻋﻧدﻣﺎ ﻳﺗم ﻓﺗﺢ ﻣﺛﺎﻝ اﻷورﻛﻝ ﺑواﺳطﺔ ﻣﻠـف
اﻟﺑﺎرﻣﺗر واﻟذي ﻳﻛون ﻣوﺟوداً ﻓﻳﻪ اﻟﺑﺎرﻣﺗر log_archive_start = true
36
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺗوﺟــد ﺛﻼﺛــﺔ ﻋﻣﻠﻳــﺎت رﺋﻳــﺳﻳﺔ ﻓــﻲ ﺗﻠــك اﻟﻣﺟﻣوﻋــﺔ ﻓﺂﻣــﺎ اﻷوﻟــﻰ ﻓﻬــﻲ ) (SMON
ودورﻫﺎ ﺗﺣرﻳر ﻣﺛﺎﻝ اﻷورﻛﻝ ﻣن أﻳـﺔ اﺧﺗﻧﺎﻗـﺎت وأﺧطـﺎء أﺛﻧـﺎء ﺑـدء ﺗـﺷﻐﻳﻝ اﻟﻣﺛـﺎﻝ
أو ﻓﻲ أي وﻗت ﻳﺗطﻠب ذﻟك أﻣـﺎ اﻟوظﻳﻔـﺔ اﻟﺛﺎﻧﻳـﺔ ) (PMONﻓﻬـﻲ اﻟوظﻳﻔـﺔ اﻟﺗـﻲ
دورﻫﺎ ﺗﺣرﻳر وﻣﺳﺢ ﻣﺎ ﻳﻧﺟم ﻋن ﻓﺷﻝ أﻳﺔ ﻋﻣﻠﻳﺔ ﻣن ﻋﻣﻠﻳﺎت اﻟﻣﺳﺗﺧدم
وظﻳﻔﺔ اﻟﻌﻣﻠﻳـﺔ ﻣراﻗﺑـﺔ ﻣﺛـﺎﻝ اﻷورﻛـﻝ واﻟﺗﻌﺎﻣـﻝ ﻣـﻊ أﻳـﺔ أﺧطـﺎء ﺗﺣـدث ﻧﺗﻳﺟـﺔ ﻓـﺗﺢ
اﻟﻣﺛــﺎﻝ ﻓﻬــﻲ ﻋﻠــﻰ ﺗﻘــوم ﻋﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ ﺑﺎﻟﺗﺄﻛــد ﻣــن ﻓــﺗﺢ اﻟﻣﺛــﺎﻝ ﻗــد ﺗــم ﺑــﺻورة
طﺑﻳﻌﻳﺔ ٕواذا ﻟم ﻳﻛن ﺗﺣﺎوﻝ إﺟـراء إﺻـﻼح واﺳـﺗﻌﺎدة اﻟوﺿـﻊ ﻋﻣـﺎ ﻛـﺎن ﻋﻠﻳـﻪ ﻗﺑـﻝ
ﺣدوث اﻟﺧطﺄ ﻓﺈذا ﻟم ﻳﻛن اﻟﻣﺛﺎﻝ ﻗـد ﺗـم إﻏﻼﻗـﻪ ﺑـﺻورة طﺑﻳﻌﻳـﺔ ShutDown
normalﻓﺈﻧﻪ ﻗـد ﻳﻛـون ﻫﻧـﺎك ﺑﻌـض اﻟﻣﻌـﺎﻣﻼت واﻟﺗـﻲ ﺗـﺳﺟﻝ ﺑﻌـد ﻋﻠـﻰ ﻣﻠﻔـﺎت
اﻟــداﺗﺎ وﺑﺎﻟﺗــﺎﻟﻲ ﺗﺗطﻠــب إﻋــﺎدة اﻻﺳــﺗرﺟﺎع وﺗﺣرﻳــر ﻋﻣﻠﻳــﺎت اﻟﻔﻬرﺳــﺔ وﻧﻘــﻝ ﺗﻠــك
37
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ ﻓﺎﻟوظﻳﻔﺔ اﻟﺳﺎﺑﻘﺔ ﻣﻌدة ﻟﻛـﻲ ﺗﻌﻣـﻝ ﻓـﻲ ﺣﺎﻟـﺔ إذا ﻣـﺎ ﻛـﺎن
اﻟﻣﺛﺎﻝ ﻓﻲ ﺣﺎﺟﺔ إﻟﻰ ﺑﻌض اﻟﺗﺣرﻳر واﻹﺧﻼء ﻓﻣﺛﻼً ﺗﻘوم اﻟوظﻳﻔﺔ ﺑـﺎﻟﺗﺣﻘق ﻣـن
وﺟـــود ﻗطﺎﻋـ ــﺎت ﻣؤﻗﺗـ ــﺔ ﻏﻳـ ــر ﻣـ ــﺳﺗﻐﻠﺔ ﻓﺗﻘـ ــوم ﺑﺗﺣرﻳـ ــر ﺗﻠـ ــك اﻟﻣـ ــﺳﺎﺣﺎت ودﻣـ ــﺞ
اﻟﻣﺳﺎﺣﺎت ﻛﻣﺎ ﺗﻌﻣﻝ اﻟوظﻳﻔﺔ أﻳﺿﺎ ﻓﻲ ﺣﺎﻟﺔ اﺣﺗﻳﺎج ﻛﺎﺗب اﻟداﺗﺎ Database
Temporyﻓﻬـ ــو ﻳطﻠـ ــب ﻣـ ــن Writerإﻟـ ــﻰ ﻣـ ــﺳﺎﺣﺎت ﻣؤﻗﺗـ ــﺔ Sgments
اﻟوظﻳﻔﺔ ﺗﺣرﻳر ٕواﺧﻼء ﺑﻌض اﻟﻣﺳﺎﺣﺎت اﻟﻣﺳﺗﻐﻠﺔ اﻟﻼزﻣﺔ ﻷداء ﻋﻣﻠﻪ ﺑﻛﻔﺎءة.
38
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻳﺧـ ــﺻص وﻗﺗـ ــﻪ ﻛﻠـ ــﻪ ﻟﻌﻣﻠﻳـ ــﺔ اﻹﺧـ ــﻼء واﻟﺗﺣرﻳـ ــر ﺑﻌـ ــد إﺗﻣـ ــﺎم ﻋﻣـ ــﻝ ﻋﻣﻠﻳـ ــﺎت
اﻟﻣﺳﺗﺧدم User Processesﻓﻬﻲ ﻋﻠﻰ ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﺗﻘوم ﺑﺎﻟﺗﺎﻟﻲ:
إ ازﻟــﺔ ٕواﺧــﻼء أﻳــﺔ ﻋﻧﺎﺻــر ﻣــن ذاﻛ ـرة اﻟﻛــﺎش ﺗﻛــون ﻧﺎﺗﺟــﺔ ﻋــن ﻋﻣﻠﻳــﺎت
ﺳﺎﺑﻘﺔ.
39
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻛــﻝ ﻣﺛــﺎﻝ ﻣــن أو ارﻛــﻝ ﻳﺗﻛــون ﻣــن ﺟــزء ﺿــﺧم ﻣــن اﻟــذاﻛرة ﺗﻌﻳﻧــﻪ أو ارﻛــﻝ ﻳــﺳﻣﻰ ﻣﻧطﻘــﺔ
اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ System global Areaوﻳــﺗم إﺟ ـراء ﻋﻣﻠﻳــﺎت أروا ﻛ ـﻝ ﻓﻳــﻪ ﻛــﻲ
ﻳﺳﺗطﻳﻊ اﻟﻌدﻳد ﻣن اﻟﻣﺳﺗﺧدﻣﻳن اﻟﺗﻌﺎﻣﻝ ﻣﻊ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت .وﺗﺄﺧـذ ﺗﻠـك اﻟﻣﻧطﻘـﺔ ﺣﻳـ اًز
ﻣن اﻟذاﻛرة ﻳﺗراوح ﺑﻳن ﻋدد ﻣﺣدود ﻣن اﻟﻣﻳﺟﺎ ﺑﺎﻳت ﻓﻲ ﺣﺎﻟﺔ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت ﻷﻏـراض
اﻻﺧﺗﺑﺎر ﺑﻳﻧﻣﺎ ﻳﺑﻠﻎ ﻓـﻲ اﻷﻧظﻣـﺔ اﻟﻛﺑﻳـرة اﻟﻣﻌﻘـدة ﻣـﺳﺎﺣﺎت ﺗﻘـدر ﺑﺎﻟﺟﻳﺟـﺎ ﺑﺎﻳـت .ﺗﺗﻛـون
ﻣﻧطﻘــﺔ اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ ﻣــن ﻣﺟﻣوﻋــﺔ ﻣــن ﻣﻧــﺎطق اﻟــذاﻛرة واﻟﺗــﻲ ﻳــﺗم ﻣــﺷﺎرﻛﺗﻬﺎ ﻣــن ﻗﺑــﻝ
اﻟﻣﺳﺗﺧدﻣﻳن واﻟرﺳم اﻟﺗﺎﻟﻲ ﻳوﺿﺢ ذﻟك:
ﻣﻘد اًر ﺛﺎﺑت ﻣن اﻟذاﻛرة ﻳﺧﺻص ﻟﻠﺟﺎﻓﺎ اﻟﺗﻲ ﺗﻌﻣﻝ ﻋﻠﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت JVM
ﺗﺣﺗوى ﺗﻠك اﻟﻣﻧطﻘﺔ ﻋﻠﻰ اﻹﺟراءات اﻟﺗﻲ ﻳﺗﺷﺎرك ﻓﻳﻬﺎ اﻟﻌدﻳد ﻣن اﻟﻣـﺳﺗﺧدﻣﻳن
Shared Proceduresو ﻣﻌﻠوﻣ ــﺎت اﻟﻛ ــﺎﺗﻠوغ dictionary cachesو
اﻟﻛﻳرﺳور ....اﻟﺦ
41
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
واﻟﺟدوﻝ اﻟﺗﺎﻟﻲ ﻳوﺿﺢ أﻫم اﻟﺑﺎرﻣﺗر اﻟﺗﻲ ﺗؤﺛر ﻋﻠﻰ ﺗﺣدﻳد ﺷﻛﻝ :SGA
اﻟﺗﺄﺛﻳر اﻟﺑﺎرﻣﺗر
ﺗــﺷﻐﻝ ﺣﻳ ـ اًز ﺛﺎﺑﺗــﺎً ﻣــن ﻣﻧطﻘــﺔ اﻟﻧظــﺎم اﻟــﺷﺎﻣﻠﺔ SGAوﻣﻘــدار ذﻟــك اﻟﺣﻳــز ﻳﺗﻔــﺎوت ﻣــن
ﻧظﺎم ﺗﺷﻐﻳﻝ ﻵﺧـر أو ﺣﺗـﻰ ﻋﻠـﻰ ﺣـﺳب إﺻـدا ارت أو ارﻛـﻝ ﻧﻔـﺳﻬﺎ .إن أو ارﻛـﻝ ﺗـﺳﺗﺧدم
ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻟﺗــﺿﻊ ﻓﻳﻬــﺎ ﻣﺗﻐﻳـرات وﻗــﻳم ﺗــﺷﻳر إﻟــﻰ ﻣﻛوﻧــﺎت أﺧــرى ﻣــن ﻣﻧطﻘــﺔ اﻟﻧظــﺎم
اﻟﺷﺎﻣﻠﺔ .إﻧﻬﺎ ﻣﻧطﻘﺔ ﺗﺳﺗﺧدﻣﻬﺎ أوراﻛﻝ ذاﺗﻬﺎ وﻻ ﻧﺳﺗطﻳﻊ اﻟﺗﺣﻛم ﻓﻳﻬﺎ ﺗﻣﺎﻣﺎً.
42
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻧﺣن اﻵن ﻧزور أﻛﺑر وأﻫم ﻗﺳم إﻧﻬـﺎ ﻏرﻓﺔ اﻟﻛـﺎش اﻟﻣﺧﺻـﺻﺔ ﻟﺗﺧـزﻳن ﺑﻠوﻛـﺎت ﻗﺎﻋـدة
اﻟﺑﻳﺎﻧﺎت Database buffer cacheﻣؤﻗﺗﺎً .ﻳﻣﻛﻧﻧﺎ ﺗﺻور ﻋﻣﻠﻬـﺎ ﻛـﺳﺎﺣﺔ اﻧﺗظـﺎر أو
ﻧــزﻝ ﺑــﻳن اﻟﻣــﺳﺗﺧدم وﺑــﻳن ﻣﻠﻔــﺎت اﻟــداﺗﺎ اﻟﻣﻛوﻧــﺔ ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻓﻔﻳﻬــﺎ ﺗﻧﺗظــر ﺑــﺻورة
ﻣؤﻗﺗﺔ ﺑﻠوﻛﺎت اﻟداﺗﺎ واﻟﻣﻛوﻧﺔ ﻣن ﺳـﺟﻼت ﻣـن اﻟﺟـداوﻝ اﻟﻣﺧﺗﻠﻔـﺔ اﻟﺗـﻲ ﻳـﺗم اﺳـﺗدﻋﺎءﻫﺎ
ﻟﺣــﺳﺎب ﻣــﺳﺗﺧدم ﻣﻌــﻳن أو اﻟﺑﻠوﻛــﺎت اﻟﺗــﻲ ﺳــﻳﺗم إرﺟﺎﻋﻬــﺎ ﻣـرة أﺧــرى إﻟــﻰ اﻟﻣﻠﻔــﺎت ﺑﻌــد
إﺗﻣﺎم وﺗﺄﻛﻳد اﻟﺗﻌدﻳﻼت اﻟﺗﻲ ﺗﻣـت ﻋﻠﻳﻬـﺎ .وﻫﻧـﺎ ﻳﺗﻌـﻳن ﺗﺣدﻳـد ﺗﻠـك اﻟﻐرﻓـﺔ ﺑﻛـﻝ دﻗـﺔ ﻓﻠـو
ﻛـﺎن اﻟﺣﺟـم ﻋﻠــﻰ ﺳـﺑﻳﻝ اﻟﻣﺛــﺎﻝ أﻗـﻝ ﻣﻣــﺎ ﻳﻧﺑﻐـﻲ ﻓــﺳﻳﺗﻌﻳن ﻋﻠﻳﻧـﺎ أن ﻧﻧﺗظــر طـوﻳﻼً ﻟﻧــرى
ﻧﺗﻳﺟــﺔ ﺗﻧﻔﻳــذ ﺟﻣــﻝ اﺳــﺗﻌﻼم وﻏﻳرﻫــﺎ وﻟــو ﻛــﺎن اﻟﺣﺟــم أﻛﺑــر ﻣــن اﻟــﻼزم ﻓــﺳﻧرﻫق ﺑﻘﻳــﺔ
ﻋﻣﻠﻳﺎت أوراﻛﻝ ورﺑﻣﺎ ﻻ ﺗﻌﻣﻝ ﻣن اﻷﺻﻝ!.
وﺣﻳ ــث أن ﺳ ــﺎﺣﺔ اﻻﻧﺗظ ــﺎر ﻻ ﺗوﺟ ــد ﺑﻬ ــﺎ أﻣ ــﺎﻛن ﺗ ــﺳﻊ ﻟﻠﻛ ــﻝ ﻳﺑ ــدو اﻟﻘـ ـرار ﺻ ــﻌﺑﺎً وﻫ ــو
ﻣﺣﺎوﻟﺔ طرد ﺑﻌض اﻟﻧزﻻء واﺳﺗﻘﺑﺎﻝ ﻗﺎدﻣﻳن ﺟدد.
ﻫﻧﺎ ﺗﺗﺧذ أوراﻛﻝ اﻟﻘرار اﻟﺻﻌب وﻓﻘﺎً ﻟﻣﻧطق ﺑﺳﻳط وﻫو أن ﻳﺑﻘـﻰ ﻛـﻝ ﻣـﺎ ﻛـﺎن ﻟـﻪ ﻓﺎﺋـدة
وﻳرﺣــﻝ ﻣــن ﻻ ﻳﻌﻣــﻝ 0LRUﻓﺗﻧــﺷﺊ أو ارﻛــﻝ ﻗﺎﺋﻣــﺔ ﺗــﺳﻣﻰ اﻷﻛﺛــر وﻋﻧــدﻣﺎ ﻳــﺳﺗدﻋﻰ
ﺳﺟﻝ ﻣن ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑواﺳطﺔ ﺟﻣﻠﺔ اﺳﺗﻌﻼم ﻓﺈﻧﻪ ﻳذﻫب ﻣﺑﺎﺷرة إﻟﻰ ﻣﻧطﻘﺔ اﻟـذاﻛرة
واﻟﺗــﻲ أطﻠﻘﻧــﺎ ﻋﻠﻳﻬــﺎ ﺳــﺎﺣﺔ اﻻﻧﺗظــﺎر وﻳوﺿــﻊ ﻓــﻲ ﻗﺎﺋﻣــﺔ اﻷﻛﺛــر اﺳــﺗﺧداﻣﺎ ﻓــﻲ ﻧﻬﺎﻳــﺔ
اﻟﻘﺎﺋﻣﺔ .وﻛﻠﻣﺎ اﺳﺗﺧدم ذﻟك اﻟﺳﺟﻝ ﻳﺗم ﺗرﻗﻳﺗﻪ إﻟﻰ ﺗرﺗﻳب أﻋﻠـﻰ ﻓـﻲ اﻟﻘﺎﺋﻣـﺔ ﻓـﺈذا اﻣﺗﻠـﺊ
اﻟﻛﺎش ﺑﺑﻠوﻛﺎت ﺟدﻳدة ﻧﺗﻳﺟﺔ ﺟﻣﻝ اﺳﺗﻌﻼم أﺧرى وأوﺷـك اﻟﻛـﺎش ﻋﻠـﻰ اﻻﻣـﺗﻼء ﺗﻣﺎﻣـﺎً
ﺑﻧﺎء ﻋﻠﻰ اﻟﻧظر ﻓﻲ اﻟﻘﺎﺋﻣﺔ اﻟﺳﺎﺑﻘﺔ ﺑﺈﻋﺎدة اﻟﻛﺗﺎﺑﺔ ﻋﻠـﻰ اﻷﺟـزاء
ﻓﺎن أوراﻛﻝ ﺗﺗﺧذ ﻗ ار اًر ً
اﻟﻐﻳر ﻣﺳﺗﺧدﻣﺔ ﺣﺎﻟﻳﺎً.
ﻳﺗوﻟﻰ ﻛﺎﺗب اﻟﺑﻠوك وﻫو ﻋﻣﻠﻳﺔ ﻣن ﻋﻣﻠﻳﺎت اﻷورﻛﻝ اﻟﺗﻲ ﺗﻌﻣﻝ ﻓﻲ اﻟﺧﻠﻔﻳﺔ ﻛﻣﺎ ذﻛرﻧـﺎ
ﻣــن ﻗﺑــﻝ ﺑﻛﺗﺎﺑــﺔ ﺗﻠــك اﻟﺑﻠوﻛــﺎت إﻟــﻰ اﻟﻣﻠﻔــﺎت اﻟﻣﺎدﻳــﺔ Data Filesو اﻟﻣﻛوﻧــﺔ ﻟﻘﺎﻋــدة
اﻟﺑﻳﺎﻧــﺎت وﻫﻧــﺎ ﺗــدار ﺗﻠــك اﻟﺑﻠوﻛــﺎت اﻟﺗــﻲ ﺗﺣﺗــﺎج ﻹﻋﺎدﺗﻬــﺎ إﻟــﻰ اﻟﻣﻠﻔــﺎت ﺑواﺳــطﺔ اﻟﻛﺎﺗــب
DBWRوﻳطﻠق ﻋﻠﻳﻬﺎ ﻣﺻطﻠﺢ .Dirty Blocks
43
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺗﺧزن ﻓﻳﻬﺎ ﺑـﺻورة ﻣؤﻗﺗـﺔ ﻣﻌﻠوﻣـﺎت اﻟﺗ ارﺟـﻊ واﻹﻋـﺎدة Redoﻗﺑـﻝ ﻧﻘﻠﻬـﺎ ﺑواﺳـطﺔ ﻛﺎﺗـب
اﻟــوغ LGWRإﻟــﻰ ﻣﻠﻔــﺎت اﻟرﻳــدو OnLine Redo Logوﺣﻳــث أن اﻟﺗﻌﺎﻣــﻝ ﻣــﻊ
اﻟـ ــذاﻛرة ﻳﻛـ ــون أﺳـ ــرع ﻣـ ــن اﻟﺗﻌﺎﻣـ ــﻝ ﻣـ ــﻊ اﻟدﻳـ ــﺳك ﻓـ ــﺎن اﺳـ ــﺗﺧدام ﺗﻠـ ــك اﻟـ ــذاﻛرة اﻟﻣؤﻗﺗـ ــﺔ
ﻟﻣﻌﻠوﻣﺎت اﻟﺗراﺟﻊ ﻳؤدى إﻟﻰ ﺳرﻋﺔ اﻟﺗﻌﺎﻣﻝ ﻣﻊ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت .أن اﻟداﺗﺎ ﻟن ﺗﺑﻘـﻰ ﻓـﻲ
ﺗﻠك اﻟﻣﻧطﻘـﺔ ﻟﻼﺑـد وﻓـﻰ اﻟﺣﻘﻳﻘـﺔ ﻓـﺎن ﻣﺣﺗوﻳﺗﻬـﺎ ﺗﻔـرغ ﻛـﻝ ﺛـﻼث ﺛـوان أو ﻋﻧـدﻣﺎ ﻳـﺻدر
أﻣــر اﻟﺗﺄﻛﻳــد Commitأو ﻓــﻲ ﺣﺎﻟــﺔ اﻣﺗﻼءﻫــﺎ ﺑﺛﻠــث ﺣﺟﻣﻬــﺎ .ﺣﺟــم ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻣــن
اﻟـ ــذاﻛرة ﻳـ ــﺗﺣﻛم ﻓﻳـ ــﻪ اﻟﺑـ ــﺎرﻣﺗر LOG_BUFFERوﻳﻌﺗﺑـ ــر اﻟﺣـ ــد اﻷﻗـ ــﻝ ﻣـ ــن ﺗﻠـ ــك
اﻟﻣــﺳﺎﺣﺔ ﻫــو أرﺑﻌــﺔ أﺿــﻌﺎف ﺣﺟــم ﺑﻠوﻛــﺎت اﻟــداﺗﺎﺑﻳز وﻳﻣﻛــن ﺗﻘــدﻳرﻩ ﺑــﺎﻟﻛﻳﻠو ﺑﺎﻳـت ﻋــن
طرﻳق اﻟﻣﻌﺎدﻟﺔ ) *128ﻋدد ( CPUs
ﺗﺧــزن ﻓﻳﻬــﺎ ﺑــﺻورة ﻣؤﻗﺗــﺔ ﻛــﻝ ﻣــﺎ ﻳﺗﻌﻠــق ﺑــﺄﻛواد اﻟﺟﺎﻓــﺎ واﻟــداﺗﺎ .ﺗــﺳﺗﺧدم ﺗﻠــك اﻟﻣﻧطﻘــﺔ
ﺑط ــرق ﻣﺧﺗﻠﻔ ــﺔ وﻳﺗوﻗ ــف ذﻟ ــك ﻋﻠ ــﻰ اﻷﺳ ــﻠوب اﻟ ــذي ﻳﻌﻣ ــﻝ ﺑ ــﻪ اﻟ ــﺳﻳرﻓر وﺗوﺟ ــد وﺳ ــﻳﻠﺔ
ﻷو ارﻛــﻝ ﺗﻌطﻳﻧــﺎ إﺣــﺻﺎﺋﻳﺎت ﻋــن طرﻳﻘــﺔ اﺳــﺗﺧدام ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻟﻠــذاﻛرة وﺗﺗﻧﺑــﺄ ﺑﻣــدى
ﺗــﺄﺛﻳر اﻟﺗﻐﻳﻳــر ﻓــﻲ ﺣﺟــم ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻋﻠــﻰ اﻷداء وﺗﻔﻌــﻝ ﺗﻠﻘﺎﺋﻳــﺎً ﻋﻧــدﻣﺎ ﻳﻛــون اﻟﺑــﺎرﻣﺗر
statistics_levelﻋﻠﻰ اﻟوﺿﻊ TYPICAL
ﺗﻌﺗﺑر ﺗﻠك اﻟﻣﻧطﻘﺔ ﻣن اﻟذاﻛرة ﻣن أﻫم ﻣﻧﺎطق اﻟـ SGAواﻟﺗﻲ ﺗؤﺛر ﻋﻠـﻰ أداء اﻟﻧظـﺎم
ﻛﻛــﻝ ﻓــﺻﻐر ﺣﺟــم ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻋــن اﻟﺣــد اﻟﻣﻌﻘــوﻝ ﻳــؤدى اﻟﺗــﻲ ﺗﻘﻠﻳــﻝ اﻷداء ﺑدرﺟــﺔ
ﻣﻠﺣوظﺔ ورﺑﻣﺎ ﺗﻌطﻝ اﻟﻧظﺎم ﺗﻣﺎﻣﺎً ﺑﻳﻧﻣﺎ ﺗﺧﺻﻳص ﺣﻳـز أﻛﺑـر ﻣـن اﻟﺣـد اﻟﻣﻼﺋـم ﻳـؤدي
إﻟــﻰ ﻧﻔــس اﻟﻛﺎرﺛــﺔ .وﻟﻛــن ﻣــﺎ ﻫــﻲ ﺗﻠــك اﻟﻣﻧطﻘــﺔ .إﻧﻬــﺎ ﺑﺑــﺳﺎطﺔ اﻟﻣﻛــﺎن اﻟــذي ﺗﺧــزن ﻓﻳــﻪ
أو ارﻛــﻝ ﺑــﺻﻔﺔ ﻣؤﻗﺗــﺔ اﻷﻛ ـواد واﻟﺑﻳﺎﻧــﺎت اﻟﺧﺎﺻــﺔ اﻟﻣﺗﻌﻠﻘــﺔ ﺑــﺎﻟﺑراﻣﺞ ﻓﻌﻠــﻰ ﺳــﺑﻳﻝ اﻟﻣﺛــﺎﻝ
ﻋﻧـدﻣﺎ ﻧﻧﻔـذ ﺟﻣﻠـﺔ اﺳـﺗﻌﻼم ﻓـﺈن أو ارﻛـﻝ ﺳــوف ﺗﺟﻬـز ﺟﻣﻠـﺔ اﻻﺳـﺗﻌﻼم ﺗﻠـك وﺗﺣﻘـق ﻣــن
ﺳﻼﻣﺔ اﻷﻣر ﺛم ﺗرى ﻫﻝ ﻳوﺟـد اﺳـﺗﻌﻼم آﺧـر ﺑـﻧﻔس اﻟـﺻﻳﻐﺔ وﺗﺧـزن ﻧﺗـﺎﺋﺞ ذﻟـك ﻣؤﻗﺗـﺎ
ﻓﻲ ﺗﻠك اﻟﻣﻧطﻘﺔ .ﻟو ﻓرﺿﻧﺎ أن ﻫﻧﺎك أﻛﺛـر ﻣـن 1000اﺗـﺻﺎﻝ ﺑﻘﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻛﻠﻬـﺎ
44
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺗﻧﻔــذ ﻧﻔــس ﺟﻣﻠــﺔ اﻻﺳــﺗﻌﻼم SQLﻓــﺎﻟﻣطﻠوب ﻓﻘــط ﻫــو ﻧــﺳﺧﺔ واﺣــدة ﺗوﺿــﻊ ﻓــﻲ ﺗﻠــك
اﻟﻣﻧطﻘﺔ ﺑﺻورة ﻣؤﻗﺗﺔ ﺛم ﻳﺗم إﺟراءﻫﺎ ﻋﻠﻰ اﻟﻛﻝ وﻳﺗم ﺗﺷﺎرك ﻧﺗﺎﺋﺟﻬﺎ.
أن اﻛواد ﻟﻐﺔ PL/sqlواﻟﺗﻲ ﻳﺗم ﺗﻧﻔﻳـذﻫﺎ ﺗﺧـزن أﻳـﺿﺎ ﻓـﻲ ﺗﻠـك اﻟﻣﻧطﻘـﺔ .أو ارﻛـﻝ أﻳـﺿﺎ
ﺗﺧزن ﺑﺻورة ﻣؤﻗﺗﺔ ﺟﻣﻳﻊ اﻟﺑﺎرﻣﺗر اﻟﺧﺎﺻﺔ ﺑﺎﻟﻧظﺎم ﻓﻲ ﺗﻠك اﻟﻣﻧطﻘﺔ ﻛﻣﺎ ﺗﺧـزن أﻳـﺿﺎً
ﻣﻌﻠوﻣــﺎت ﻋــن اﻟﻛــﺎﺗﻠوغ The data dictionaryﻓــﻲ ﺗﻠــك اﻟﻣﻧطﻘــﺔ أﻳــﺿﺎً .وﺑﻌﺑــﺎرة
أﺧــرى إﻧﻬــﺎ ﺑﻣﺛﺎﺑــﺔ اﻟﻣطــﺑﺦ اﻟــذي ﻳــﺗم طــﺑﺦ ﻛــﻝ اﻟــداﺗﺎ اﻟﻣﺗﻌﻠﻘــﺔ ﺑــﺎﻷﻛواد ﻓﻳــﻪ .وﺳــﻧدرس
ﻣﻧﻬﺎ اﻟﺗﺎﻟﻲ:
ﺗــﺳﺗﺧدم ﻟﺗﺧـزﻳن ﺟﻣــﻝ SQLاﻟﻣﺗــﺷﺎرﻛﺔ ﻓﻬﻧــﺎ ﺗﺧــزن ﺑــﺻورة ﺧطــﺔ ﺗﻧﻔﻳــذ ﺟﻣــﻝ
اﻻﺳـﺗﻌﻼم parse tree and the executionﻟﻛـﻝ ﺟﻣﻠـﺔ .وﻟـو ﻛﺎﻧـت ﻫﻧـﺎك
ﻋ ــدة ﻣ ــن اﻟﺗطﺑﻳﻘ ــﺎت أﺻ ــدرت ﻧﻔ ــس اﻟﺟﻣﻠ ــﺔ ﻓ ــﺈن ﺗﻠ ــك اﻟﻣﻧطﻘ ــﺔ ﺗ ــﺷﺎرك ﻧﻔ ــس
اﻟﺟﻣﻠﺔ ﻟﺗﻘﻠﻳﻝ ﺣﺟم اﻟذاﻛرة ﻓﻳﻣﺎ ﻟو ﺗم إﺻدار ﻧﻔس اﻟﺟﻣﻠﺔ ﻟﻌدة ﺗطﺑﻳﻘـﺎت ﻋﻠـﻰ
ﺣدة.
45
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺗﺣﺗــوي ﺗﻠــك اﻟﻣﻧطﻘــﺔ ﻋﻠــﻰ اﻟــداﺗﺎ وﻣﻌﻠوﻣــﺎت اﻟــﺗﺣﻛم ﻋــن ﻋﻣﻠﻳــﺎت اﻟــﺳﻳرﻓر وﺣﺟﻣﻬــﺎ
وﻣﻛوﻧﺎﺗﻬـﺎ ﺗﺗﺣــدد ﺑﻧــﺎء ﻋﻠــﻰ اﺧﺗﻳــﺎرات اﻟــﺳﻳرﻓر اﻟﺗــﻲ ﺗــم ﺗﺣدﻳـدﻫﺎ وﺗﺗﻛــون ﻣــن اﻟﻣﻧــﺎطق
اﻟﺗﺎﻟﻳﺔ :
ﺗﺣﺗ ــوى ﻋﻠ ــﻰ ﻣﺗﻐﻳـ ـرات اﻻﺗ ــﺻﺎﻝ واﻟ ــدﺧوﻝ 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ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻷﻋﻣ ــﺎﻝ اﻟﻣرﺗﺑط ــﺔ ﻛوﺣ ــدة
واﺣدة ﻧرﻳـد أن ﺗﻧﻔـذﻫﺎ أو ارﻛـﻝ وﺗﺗﻛـون اﻟﻣﻌﺎﻣﻠـﺔ ﻣـن واﺣـد أو اﻛﺛـر ﻣـن ﺟﻣـﻝ اﻟ ـ SQL
واﻟﺗــﻲ ﺗﻧﺗﻬــﻲ داﺋﻣــﺎً ﺑﺟﻣﻠــﺔ ﻟﺗﺄﻛﻳــد ﺗﻧﻔﻳــذﻫﺎ ﺗــﺳﻣﻰ ﺟﻣﻠــﺔ اﻟﺗﺄﻛﻳــد Commitأو ﻟﻠﺗ ارﺟــﻊ
ﻋن ﺗﻧﻔﻳذﻫﺎ .Rollbackإن ﻣﺛﻠﻧﺎ ﻳﻔﺗرض أﻧﻧﺎ ﻧﻌﻣﻝ ﻓـﻲ ﺑﻳﺋـﺔ ﻋﻣـﻝ )اﻟﻣـزود /اﻟﺧـﺎدم
( client /serverﻛﻣﺎ ﻳﺗﺿﺢ ﻣن اﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ:
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
ﻛﻣﺎ ذﻛرﻧﺎ ﻣن ﻗﺑﻝ ﻳﻣﺛﻝ اﻟﻣﺛﺎﻝ ﻣﻌﻣﺎرﻳﺔ ﻣﻌﻳﻧـﺔ ﻟﻠـذاﻛرة ﺑﺎﻹﺿـﺎﻓﺔ إﻟـﻰ ﻋﻣﻠﻳـﺎت ﺗـﺗم ﻓـﻲ
اﻟﺧﻠﻔﻳــﺔ واﻟﺗــﻲ ﺗﺟﻌــﻝ اﻟﻣــﺳﺗﺧدم ﻗــﺎد اًر ﻋﻠــﻰ اﻻﺗــﺻﺎﻝ ﺑﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت واﻟﺗﻌﺎﻣــﻝ ﻣﻌﻬــﺎ.
ﻋﻧــدﻣﺎ ﺗﺑــدأ أو ارﻛــﻝ ﻓــﻲ اﻟﻌﻣــﻝ ﻓﺈﻧﻬــﺎ ﺗﺑــدأ ﻓــﻲ ﺗﻬﻳﺋــﺔ ﻣﻌﻣﺎرﻳــﺔ اﻟــذاﻛرة وﺗــﺷﻐﻳﻝ ﻋﻣﻠﻳــﺎت
اﻟﺧﻠﻔﻳﺔ اﺳﺗﻌدادا ﻟدﺧوﻝ اﻟﻣﺳﺗﺧدﻣﻳن ﻋﻠﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧـﺎت .وﻫﻛـذا ﻓـﺎن ﻫﻧـﺎك ﻋـدد ﻣـن
اﻟﻣ ارﺣ ـ ــﻝ ﺣﺗ ـ ــﻰ ﻳ ـ ــﺗم اﻟﺗﺄﻛ ـ ــد ﻣ ـ ــن أن ﻗﺎﻋ ـ ــدة اﻟﺑﻳﺎﻧ ـ ــﺎت ﺟ ـ ــﺎﻫزة ﺗﻣﺎﻣ ـ ــﺎً ﻟﺗﻠﻘ ـ ــﻰ طﻠﺑ ـ ــﺎت
اﻟﻣﺳﺗﺧدﻣﻳن .أن ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺗﻣر ﻋﻠﻰ اﻵﺗﻲ:
ﻳﺗم ﻓﺗﺢ اﻟﻣﺛﺎﻝ وﺗﺟﻬﻳزﻩ ﻟﻔﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻗﺑﻝ اﻻرﺗﻘﺎء إﻟﻰ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺣﻳـث ﻳـﺗم
ﻗراءة ﻣﻠف اﻟﺑﺎرﻣﺗر اﻟﻣﺳؤوﻝ ﻋن إﻋدادات اﻟﻣﺛـﺎﻝ ٕواﻋـداد اﻟـذاﻛرة وﻓﻘـﺎً ﻟﻠﻣﻌﻣﺎرﻳـﺔ اﻟﺗـﻲ
ﺗﺗطﻠﺑﻬﺎ أوراﻛﻝ ﻛﻣﺎ ﺗﺄﺧذ ﻋﻣﻠﻳﺎت اﻟﺧﻠﻔﻳـﺔ وﺿـﻊ اﻻﺳـﺗﻌداد ﻟﻠﻔـﺗﺢ واﻟﺗـﺷﻐﻳﻝ وﻟﻛـن دون
51
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
اﻻﺗــﺻﺎﻝ ﺑﺎﻟﻬﻳﻛــﻝ اﻟﻣــﺎدي ﻟﻠﻣﻠﻔــﺎت 0Data Filesوﻓــﻰ ﻫــذﻩ اﻟﻣرﺣﻠــﺔ ﻻ ﺗﻛــون ﻗﺎﻋــدة
اﻟﺑﻳﺎﻧﺎت ﻣﺗﺎﺣﺔ ﺑﻌد ﻟﻼﺳـﺗﺧدام .ﻋﻧـدﻣﺎ ﻧﻛـون ﻓـﻲ ﺗﻠـك اﻟوﺿـﻌﻳﺔ ﻧـﺳﺗطﻳﻊ إﺟـراء ﺑﻌـض
اﻟﻣﻬﺎم وأﻛﺛرﻫﺎ ﺷﻳوﻋﺎ ﺗﺷﻐﻳﻝ اﻷواﻣر Scriptsواﻟﺗﻲ ﻧﺳﺗطﻳﻊ ﻣن ﺧﻼﻟﻬـﺎ ﻋﻣـﻝ ﻗﺎﻋـدة
ﺑﻳﻧــﺎت ﺟدﻳــدة أن ﻟــم ﺗوﺟــد واﺣــدة ﻣــن ﻗﺑــﻝ .ﻓــﻲ ﺗﻠــك اﻟﻣرﺣﻠــﺔ ﻣــن اﻟﻣﻣﻛــن أن ﺗﺣــدث
ﺑﻌض اﻟﻣﺷﺎﻛﻝ ﻓﻲ ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت أن ﻛﺎﻧت ﻣوﺟودة وﻫﻰ ﻋﻠﻰ ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﻋـدم
اﻟوﺻــوﻝ ﺑــﺷﻛﻝ ﺳــﻠﻳم إﻟــﻰ ﻣﻠــف اﻟــﺗﺣﻛم ﻓــﻲ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت Control Fileوﻫﻧــﺎ ﻻ
ﻳﻣﻛن ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت إﻻ ﺑﻌد ﻣﻌﺎﻟﺟﺔ ﺗﻠك اﻟﻣﺷﻛﻠﺔ
ﺗــﺗم ﺟﻣﻳــﻊ ﻋﻣﻠﻳــﺎت اﻟﻣرﺣﻠــﺔ اﻟــﺳﺎﺑﻘﺔ ﺑﺎﻹﺿــﺎﻓﺔ إﻟــﻰ إﻣﻛﺎﻧﻳــﺔ اﻻﺗــﺻﺎﻝ ﺑﻬﻳﻛــﻝ اﻟﻣﻠﻔــﺎت.
ﻓ ــﻲ ﻫ ــذﻩ اﻟﻣرﺣﻠ ــﺔ ﻳ ــﺗم اﻟوﺻ ــوﻝ إﻟ ــﻰ ﻣﻠ ــف اﻟ ــﺗﺣﻛم وﻗراءﺗ ــﻪ واﻟﺣ ــﺻوﻝ ﻋﻠ ــﻰ ﺟﻣﻳ ــﻊ
اﻟﻣﻌﻠوﻣــﺎت ﻋــن ﻫﻳﻛــﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت اﻟﻣـراد ﻓﺗﺣﻬــﺎ .ﻳوﺟــد ﺑﻌــض وظــﺎﺋف إدارة ﻗﺎﻋــدة
اﻟﺑﻳﺎﻧﺎت اﻟﻣﺣددة اﻟﺗﻲ ﻳﻣﻛن إﺟراءﻫﺎ ﻓﻲ ﺗﻠك اﻟوﺿﻌﻳﺔ وﻣﻧﻬﺎ وظﺎﺋف اﻹﺻـﻼح ﻓﻌﻠـﻰ
ﺳﺑﻳﻝ اﻟﻣﺛﺎﻝ ﺗﻐﻳﻳر أﻣﺎﻛن اﻟﻣﻠﻔﺎت ﻋﻠﻰ اﻟدﻳﺳك أو إﻋداد ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻓﻲ اﻟوﺿـﻌﻳﺔ
archive log mode
إذا ﻣــرت اﻟﻣ ارﺣــﻝ اﻟــﺳﺎﺑﻘﺔ ﻛﻠﻬــﺎ ﺑــدون ﻣــﺷﺎﻛﻝ ﺗﻛــون ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣﻔﺗوﺣــﺔ وﺟــﺎﻫزة
ﺗﻣﺎﻣــﺎً ﻟــدﺧوﻝ اﻟﻣــﺳﺗﺧدﻣﻳن وﻋﻠــﻰ اﻟــرﻏم ﻣــن أن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣﺗﺎﺣــﺔ ﻟﻠﺟﻣﻳــﻊ إﻻ اﻧــﻪ
ﻳﻣﻛــن ﺗــﺷﻐﻳﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑــﺑﻌض اﻻﺧﺗﻳــﺎرات اﻹﺿــﺎﻓﻳﺔ إذا واﺟﻬﺗﻧــﺎ ﻣواﻗــف ﻣﺣــددة
وﻫﻰ :
ﻳﻣﻛﻧ ــك ﺗﺑﻧ ــﻲ ذﻟ ــك اﻻﺧﺗﻳ ــﺎر إذا واﺟﻬﺗ ــك ﺑﻌ ــض اﻟﻣ ــﺷﺎﻛﻝ أﺛﻧ ــﺎء ﻓ ــﺗﺢ ﻗﺎﻋ ــدة
اﻟﺑﻳﺎﻧﺎت ﺑطرﻳﻘﺔ طﺑﻳﻌﻳﺔ ﻓﻌﻠﻰ ﺳـﺑﻳﻝ اﻟﻣﺛـﺎﻝ إذا ﺣـدث اﻧﻘطـﺎع ﻟﻠﻛﻬرﺑـﺎء ﻣﻔـﺎﺟﺊ
52
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
وﺗوﻗﻔـت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑﻌــد اﻟﻔـﺗﺢ ﻓﻬﻧــﺎ ﺗﻛــون ﻣﺣﺎوﻟـﺔ ﺗﺟرﺑـﺔ ﺗﻠــك اﻟﺧطــوة أﻣـ اًر
ﺿــرورﻳﺎً ﻳــﺳﺗﺣق اﻟﻣﺣﺎوﻟــﺔ .وﻫﻧــﺎ ﻻ ﻳﺗوﻗــف ﻫــذا اﻻﺧﺗﻳــﺎر ﻋﻠــﻰ أﻳــﺔ وﺿــﻌﻳﺔ
ﻛﺎﻧ ـ ــت ﻋﻠﻳﻬ ـ ــﺎ ﻗﺎﻋ ـ ــدة اﻟﺑﻳﺎﻧ ـ ــﺎت ﺳـ ـ ـواء ﻛﺎﻧ ـ ــت أﻏﻠﻘ ـ ــت ﺑطرﻳﻘ ـ ــﺔ ﻏﻳ ـ ــر طﺑﻳﻌﻳ ـ ــﺔ
shutdown abort and then restarts the database
53
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻻ ﻳﺳﻣﺢ ﺑﺄﻳﺔ اﺗﺻﺎﻻت ﺟدﻳدة ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺑﻌد إﺻدار اﻷﻣر.
ﺗﻧﺗظر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﺧروج ﺟﻣﻳﻊ اﻟﻣﺗﺻﻠﻳن ﺣﺎﻟﻳﺎً ﺑﻬﺎ ﻗﺑﻝ أن ﺗﻐﻠق.
ﻳــﺗم إﻋــﺎدة ﻓــﺗﺢ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣــن ﺟدﻳــد ﺑــﺻورة طﺑﻳﻌﻳــﺔ ﻓــﻼ ﺗﺣﺗــﺎج ﻷي ﻧــوع
ﻣن اﻹﺻﻼح.
ﻟﻛﻲ ﻧﺑدأ ﻋﻣﻠﻳﺔ ﻧﺳﺦ اﺣﺗﻳﺎطﻲ ﺑﺻورة أﺗوﻣﺎﺗﻳﻛﻳﺔ ﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت .
ﻋﻧــدﻣﺎ ﺗﻌﻣــﻝ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺑــﺻورة ﻏﻳــر طﺑﻳﻌﻳــﺔ وﻧﻛــون ﻏﻳــر ﻗــﺎدرﻳن ﻋﻠــﻰ
ﺧروج اﻟﻣﺳﺗﺧدﻣﻳن ﺑﺻورة طﺑﻳﻌﻳﺔ Log Off
54
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻻ ﻳـﺳﻣﺢ ﺑﺄﻳــﺔ اﺗــﺻﺎﻻت ﺟدﻳــدة ﻋﻠــﻰ ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻛﻣــﺎ ﻻ ﻳــﺳﻣﺢ ﺑــﺈﺟراء أﻳــﺔ
ﻋﻣﻠﻳﺎت ﺟدﻳدة.
rolled أﻳــﺔ ﻋﻣﻠﻳــﺎت ﻏﻳــر ﻣؤﻛــدة Committedﺳــوف ﻳــﺗم اﻟﺗ ارﺟــﻊ ﻋﻧﻬــﺎ
. back
ﻻ ﺗﻘــوم أروا ﻛـﻝ ﺑﺎﻻﻧﺗظــﺎر ﺣﺗــﻰ ﻳﺧــرج اﻟﻣــﺳﺗﺧدﻣﻳن اﻟﺣــﺎﻟﻳﻳن ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت
ﻋﻧﻬﺎ ﺑﻝ ﺗﻘطﻊ ﻋﻧﻬم اﻻﺗﺻﺎﻝ.
instance ﻋﻧ ــد إﻋ ــﺎدة اﻟﻔ ــﺗﺢ ﻣ ــن ﺟدﻳ ــد ﻻ ﻳﺣﺗ ــﺎج اﻟﻣﺛ ــﺎﻝ ﻹﻋ ــﺎدة إﺻ ــﻼح
.recovery
اﻹﻏﻼق ﻣﻊ اﻻﺧﺗﻳﺎر:
Shutting Down with the TRANSACTIONAL Option
ﻳﺳﺗﺧدم ذﻟـك اﻻﺧﺗﻳـﺎر ﻋﻧـدﻣﺎ ﻧرﻳـد إﻏـﻼق ﻗﺎﻋـدة اﻟﺑﻳﺎﻧـﺎت وﻟﻛـن ﺑﻌـد إﺗﻣـﺎم اﻟﻣﻌـﺎﻣﻼت
اﻟﺣﺎﻟﻳﺔ Active Transactionﻗﺑﻝ اﻹﻏﻼق ﺣﻳث ﻧﺻدر اﻷﻣر اﻟﺗﺎﻟﻲ:
SHUTDOWN TRANSACTIONAL
ﻳﻌﺗﺑــر ﻫــذا إﻏﻼﻗــﺎً ﻏﻳــر طﺑﻳﻌﻳــﺎً ﻟﻘﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﺣﻳــث ﻳــﺗم اﻟﺧــروج ﻓــو اًر ﻣــن اﻟﻣﺛــﺎﻝ وﻻ
ﻳﺳﺗﺧدم إﻟﻰ ﻓﻲ اﻟﺣﺎﻻت اﻟﺗﺎﻟﻳﺔ:
55
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ﻻ ﺗﻌﻣﻝ ﺑﺻورة طﺑﻳﻌﻳﺔ وﻟم ﺗﻔﻠﺢ اﻟطرق اﻟﺳﺎﺑﻘﺔ ﻓﻲ ﻏﻠﻘﻬﺎ.
ﺣﺎﻟﺔ اﻻﻧﻘطـﺎع اﻟﻔـوري ﻟﻠطﺎﻗـﺔ ﻓﻣـﺛﻼ إذا ﻛﻧـﺎ ﻧﻌﻠـم أن اﻟﺗﻳـﺎر اﻟﻛﻬرﺑـﺎﺋﻲ ﺳـﻳﻧﻘطﻊ
ﻓﻲ ﺧﻼﻝ دﻗﻳﻘﺔ واﺣدة.
ﻳﺧــرج اﻟﻣــﺳﺗﺧدﻣون اﻟﺣــﺎﻟﻳﻳن ﻣــن ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻋﻠــﻰ اﻟﻔــور وﻳــﺗم إﻧﻬــﺎء أﻳــﺔ
ﻋﻣﻠﻳﺎت ﻛﺎﻧوا ﻳﻘوﻣون ﺑﻬﺎ ﺣﺗﻰ وﻟو ﻛﺎﻧت ﻏﻳر ﻣﻛﺗﻣﻠﺔ.
أﻳﺔ ﻋﻣﻠﻳﺎت ﻏﻳر ﻣؤﻛدة ﻻ ﻳﺗم اﻟﺗراﺟﻊ ﻋﻧﻬﺎ not rolled back
وﻓــﻰ ﻫــذﻩ اﻟﺣﺎﻟــﺔ ﺳــﻧﺣﺗﺎج إﻋــﺎدة إﺻــﻼح اﻟﻣﺛــﺎﻝ Instance recoveryﻋﻧــد إﻋــﺎدة
اﻟﻔﺗﺢ.
56
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺟﻣﻳ ــﻊ اﻟﺗﻌرﻳﻔ ــﺎت اﻟﺧﺎﺻ ــﺔ ﺑﻛ ــﻝ اﻟﻣﺧطط ــﺎت 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
أن ﻣﻌﻠوﻣﺎت اﻟﻛﺗﺎﻟوغ ﺗﻛون ﻣﺗﺎﺣﺔ ﻷوراﻛﻝ ﻋﻧد ﻓﺗﺢ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت وﻫـﻲ ﺗوﺟـد
ﻋﻠ ــﻰ اﻟﻣ ــﺳﺎﺣﺔ اﻟﺟدوﻟﻳـ ـﺔ اﻟﻣ ــﺳﻣﺎة SYSTEM tablespaceوﻟ ــذﻟك ﻓﺗﻠ ــك
اﻟﻣﺳﺎﺣﺔ ﺗﺑﻘﻰ Onlineﺑﺎﺳﺗﻣرار.
واﻟﺗــﻲ ﺗﺧــزن ﻓﻳﻬــﺎ ﻗــﻳم وداﺗــﺎ ﺧﺎﺻــﺔ ﺑﻣــﺎ ﻗﻠﻧــﺎﻩ ﺳــﺎﺑﻘﺎ .أروا ﻛـﻝ ﻓﻘــط ﻫــﻲ وﺣــدﻫﺎ
اﻟﺗ ــﻲ ﺗﻣﻠ ــك ﻗـ ـراءة وﺗﻌ ــدﻳﻝ ﺗﻠ ــك اﻟﺟ ــداوﻝ ﻧظـ ـ ار ﻟﺧطورﺗﻬ ــﺎ وﺗﺄﺛﻳرﻫ ــﺎ ﻋﻠ ــﻰ ﻓ ــﺗﺢ
وﺳﻼﻣﺔ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت.
ﺗـ ــﺳﺗﺧدم ﻓـ ــﻲ ﺗﻠﺧـ ــﻳص وﻋـ ــرض اﻟﻣﻌﻠوﻣـ ــﺎت ﻋـ ــن ﻣﺟﻣوﻋـ ــﺔ اﻟﺟـ ــداوﻝ اﻟﻣﻛوﻧـ ــﺔ
ﻟﻠﻛﺗــﺎﻟوغ ﻓﻬــﻲ ﺗﺗــرﺟم ﻣﻌﻠوﻣــﺎت اﻟﺟــداوﻝ اﻟــﺳﺎﺑﻘﺔ إﻟــﻰ ﺻــورة ﻳــﺳﺗطﻳﻊ ﻗراءاﺗﻬــﺎ
اﻟﻣــﺳﺗﺧدم .وﻣــن أﻣﺛﻠﺗﻬــﺎ أﺳــﻣﺎء اﻟﻣــﺳﺗﺧدﻣﻳن اﻟﻣوﺟــودﻳن ﻋﻠــﻰ ﻗواﻋــد اﻟﺑﻳﺎﻧــﺎت
واﻟﺻﻼﺣﻳﺎت اﻟﻣﻣﻧوﺣﺔ ﻟﻬم.
ﺗـوﻓر أو ارﻛــﻝ 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
60
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
Oracleﻳوﺟ ــد ﺣـ ـواﻟﻲ 350ﻣ ــن ﺗﻠ ــك اﻟﻣﻧ ــﺎظﻳر وﻣﻌظ ــم ﺗﻠ ــك وﻓ ــﻲ أو ارﻛ ــﻝ 10g
اﻟﻣﻧﺎظﻳر ﺗﺳﻣﻰ ﺑﺄﺳﻣﺎء ﺗﺑﺗدئ ﺑـ V$اﻟﺟدوﻝ اﻟﺗﺎﻟﻲ ﻳﺑﻳن أﻣﺛﻠﺔ ﻣﻧﻬﺎ:
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
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
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
OraHome90 : اﻻﺳم
< C> or <D> or.. :\Oracle\ora90: اﻟﻣﺳﺎر
-: وذﻟك ﻛﻣﺎ ﻓﻲ اﻟﺷﺎﺷﺔ اﻟﺗﺎﻟﻳﺔ
Next ﺛم
68
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻳﻣﻛن ﺗﻐﻳﻳر أﺳﻣﺎء وﻣوﻗﻊ اﻹﻋداد ﻟﻛن أﻫم ﺷﻲ أن ﻻ ﺗﻛون ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت واﻟدﻳﻔﻠوﺑر
ﻓــﻲ ﻣﻛــﺎن واﺣــد " أي ﻓــﻲ ﻧﻔــس اﻟﻣﻠــف أو اﻟﻣﺟﻠــد" وﻳﻣﻛــن أن ﻳﻛوﻧـوا اﻻﺛﻧــﺎن ﻓــﻲ ﺟــزء
واﺣد ﻓﻲ اﻟﻬﺎرد دﻳﺳك ﻣﺛﻝ اﻟﺟزء C:أو D:وﻟﻛن ﻫﻧﺎ ﺗم اﺧﺗﻳﺎر اﻷﻣﺎﻛن اﻻﻓﺗراﺿﻳﺔ
ﻟﻛ ــﻲ ﻳ ــﺗم ﻓﻬ ــم اﻟﻣﺛ ــﺎﻝ وﺗوﺻ ــﻳﻠﻪ ﺑطرﻳﻘ ــﻪ واﺿ ــﺣﺔ ﻟﻠﺟﻣﻳ ــﻊ ,ﻛﻣ ــﺎ ﻳﺟ ــب أن ﻳ ــﺗم إﻋ ــداد
اﻟدﻳﻔﻠوﺑر ﻗﺑﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت.
ﻗم ﺑﺎﺧﺗﻳﺎر ﻧوع ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ اﻟذي ﺗرﻳد ﺗﻧﺻﻳﺑﻪ ﻓﻲ ﺟﻬﺎزك:
69
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﺛم ﻗم ﺑﺎﺧﺗﻳﺎر ﻧوع اﻟﺗﻧـﺻﻳب اﻻﺧﺗﻳـﺎر اﻷوﻝ أﻓـﺿﻝ ﻟﻐﻳـر اﻟﺧﺑـراء ﻓـﻲ أﻧـواع اﻟﺗﻧـﺻﻳب
اﻟﻣﺗﻘدﻣﺔ General Purpose
ﻗم ﺑﺗﺣدﻳد أﺳم ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت ) (SIDو Global database nameﻟﻘﺎﻋدة اﻟﺑﻳﺎﻧﺎت
70
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
71
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻧﺣدد اﻵن ﻧوع ﻗﺎﻋدة ﺑﻳﺎﻧﺎت أوراﻛﻝ اﻟﻣراد ﺗﻧﺻﻳﺑﻬﺎ واﻷدوات اﻟﺗﻲ ﺳوف ﻳﺗم ﺗﻧـﺻﻳﺑﻬﺎ
ﻣﻌﻬﺎ ﻛﻣﺎ ﻓﻲ اﻟﺷﻛﻝ:
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
74
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
ﻗــم ﺑﻠــﺻق اﻟﻣﻠــف اﻟــﺳﺎﺑق ﻓــﻲ اﻟﻣوﻗــﻊ اﻟﺗــﺎﻟﻲ اﻟﻣوﺟــود ﺑــﻪ ﻣﻠــف ﺑــﻧﻔس اﻻﺳــم واﻟﻣوﻗــﻊ
ﻫو ORANT\net80\admin
أOracle\Ora90\network\admin -
بORANT\net80\admin -
Username: system
76
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part1
Password: manager
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ﻣدﻳر ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت:
2
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
اﻷﻣر :CONNECT
ﺳﻳﺗم اﻻﺗﺻﺎﻟـ ﻫﻧﺎ ﺑﺎﻟﻣـﺳﺗﺧدم اﻟﻣـﺳﻣﻰ Azzamوﻛﻠﻣـﺔ اﻟـﺳر 236وﺳـوف ﺗظﻬـر ﻟﻧـﺎ
رﺳﺎﻟﺔ ﺑﺄﻧﻪ ﺗم اﻻﺗﺻﺎﻝ.
:DUMMY TABLE
ﻫــو ﺟــدوﻝ أﻧــﺷﺄﺗﻪ أو ارﻛــﻝ ﻟﻛــﻲ ﻧ ـﺳﺗﻌﻳن ﺑــﻪ ﺑــﺑﻌض اﻟﻌﻣﻠﻳــﺎت ﻓﻬــو ﻳﺗﻌﺎﻣــﻝ ﻣــﻊ ﻗﺎﻋــدة
اﻟﺑﻳﺎﻧﺎت ﻣﺑﺎﺷرة ﻣﺛﻝ اﺳﺗﻌراض اﻟﺗﺎرﻳﺦ واﺳم ﻫذا اﻟﺟدوﻝ ﻫو .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
ﺑﻌـ ــد أن ﺗﻌرﻓﻧـ ــﺎ ﻋﻠـ ــﻰ طرﻳﻘـ ــﺔ إﻧـ ــﺷﺎء اﻟﺟـ ــداوﻝ ﺳـ ــﻧرى اﻵن طرﻳﻘـ ــﺔ رﺑطﻬـ ــﺎ ﻧـ ــﺳﺗﺧدم
اﻟﻣﺣددات أو ﻣﺎ ﻳﺳﻣﻰ ﺑـ CONSTRAINTSطﺑﻌﺎ اﻟﻣﺣددات أﻧواع وأﺷﻛﺎﻟـ ﺳـوف
ﻧطــرق إﻟــﻰ ﻣــﺎ ﻳﻠزﻣﻧــﺎ وﻫــو اﻟـــ PRIMARY KEYوﻫــو اﻟﻣﻔﺗــﺎح اﻷﺳﺎﺳــﻲ وﻫــو
ﻋﺑﺎرة ﻋن ﺣﻘﻝ وﺣﻳد ﻳﺗم ﺗﺣدﻳدﻩ ﺑﺎﻟﺟـدوﻝ وﻫـذا اﻟﺣﻘـﻝ ﻧﻘـوم ﺑﺗﻌﻳﻳﻧـﻪ ﺑﻬـدف ﻋـدم ﺗﻛـرار
اﻟﺑﻳﺎﻧـﺎت وﻫـو ﻻ ﻳﺄﺧـذ ﻗﻳﻣـﺔ ﻓﺎرﻏـﺔ ٕواﻧﻣـﺎ ﻳﺄﺧــذ ﻣﺟﻣوﻋـﺔ وﻛـذﻟك ﻳﻣﻛـن ﺗﺣدﻳـد اﻛﺛـر ﻣــن
ﺣﻘﻝ ﻓﻲ اﻟﺟدوﻝ ﻟﺗﻌﻳﻧﻬم ﻋﻠﻰ أﻻ ﻳﺗﻛـرروا وﻟﻛـن ﻛوﺣـدة واﺣـدة وﻋﻣوﻣـﺎً واﻟﺟـدوﻝ داﺋﻣـﺎً
ﻳﺣﺗوي ﻋﻠﻰ PRIMARY KEYواﺣد.
4
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:CONSTRAINT
ﻫﻧﺎ ﻧﻬﻳﺄ اﻟﺟدوﻝ وﻧذﻛر اﺳـﻣﻪ ﺛـم ﻧـذﻛر ﻧوﻋـﻪ وﻣـﺎ ﻫـﻲ اﻟﺣﻘـوﻝ اﻟﺗـﻲ ﺗرﻳـد ﺗﺣدﻳـدﻫﺎ ﻣـﻊ
اﻷﺧذ ﺑﻌﻳن اﻻﻋﺗﺑـﺎر أن ﻫـذﻩ اﻟﺣﻘـوﻝ ﻻ ﻳﻣﻛـن أن ﺗﺗﻛـرر وﻟﻧوﺿـﺢ ﺷـﻳﺋﺎً ﻣﻬﻣـﺎ أﻧﻧـﺎ ﻟـو
ﺣددﻧﺎ ﻣﺛﻼً رﻗم اﻟﻣوظف وﺗﺎرﻳﺦ ﻣﻳﻼدﻩ ﻋﻠﻰ أﻧﻬﺎ ﻣﻔﺗﺎح أﺳﺎﺳﻲ ﻓﻬﻧﺎ ﻧﻼﺣظ ﻣﺎﻳﻠﻲ:
ﻫ ــﻝ ﺳ ــﺗﻘﺑﻝ )ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت( ﻫ ــذﻩ اﻟﻌﻣﻠﻳ ــﺔ اﻟﺟـ ـواب..؟ ﻧﻌ ــم واﻟ ــﺳﺑب أﻧﻧ ــﺎ ﺣ ــددﻧﺎ ﻓ ــﻲ
اﻟﻣﻔﺗــﺎح اﻷﺳﺎﺳــﻲ أن رﻗــم اﻟﻣوظــف وﺗــﺎرﻳﺦ ﻣــﻳﻼدﻩ ﻫﻣــﺎ واﺣــد وﻳﻣﻧــﻊ اﻟﺗﻛـرار ﻓــﻲ ﺣﺎﻟــﺔ
ﺗﺷﺎﺑﻬﻣﺎ ﻟذﻟك ﻳﺟب أن ﻧﻛون ﺣذرﻳن ﻓﻲ ﺣﺎﻟﺔ ﺗﺣدﻳد اﻟﻣﻔﺗﺎح اﻷﺳﺎﺳﻲ.
أﻣﺎ اﻟﻧـوع اﻟﺛـﺎﻧﻲ ﻓﻬـو FOREIGN KEYوﻫـو اﻟﻣﻔﺗـﺎح اﻟﻣرﺟﻌـﻲ وﻓـﻲ ﻫـذا اﻟﻧـوع
ﻓﻘــط ﺗﺣــدد أن اﻟﺣﻘــﻝ اﻟــذي ﺑﺎﻟﺟــدوﻝ اﻷوﻝ ﺗــﺎﺑﻊ ﻟﻠﺣﻘــﻝ اﻷﺳﺎﺳــﻲ ﻓــﻲ اﻟﺟــدوﻝ اﻟﺛــﺎﻧﻲ
وﻟﻠﺗوﺿﻳﺢ أﻛﺛـر ﻣـﺛﻼً رﻗـم اﻟﺟﻧـﺳﻳﺔ ﻓـﻲ ﺟـدوﻝ اﻟﻣـوظﻔﻳن ﺗـﺎﺑﻊ رﻗـم اﻟﺟﻧـﺳﻳﺔ ﻓـﻲ ﺟـدوﻝ
اﻟﺟﻧﺳﻳﺎت ﻟذﻟك ﻓـﺎﻟﻔروض أن ﻳﻛـون أﺳﺎﺳـﻲ واﻟﻬـدف ﻣـن ﻫـذا ﻛﻠـﻪ ﻫـو إﻟـزام اﻟﻣـﺳﺗﺧدم
ﺑﺈدﺧﺎﻟـ أرﻗﺎم أو ﺑﻳﺎﻧﺎت ﻣﺣددﻩ وﺗﻔﺎدي إدﺧﺎﻟـ ﺑﻳﺎﻧﺎت ﻏﻳر ﻣوﺟود وﺗﺻﺑﺢ ﺑﻳﺎﻧﺎﺗـك أﻗـوى
وﺑرﻧﺎﻣﺟك أﻗوى ﻣﻊ ﻣﻼﺣظﺔ اﻧـﻪ ﻋﻧـد إﻧـﺷﺎء ﻫـذا اﻟﻧـوع ﻣـن اﻟﻣﺣـددات ﻳﺟـب أن ﻳﻛـون
اﻟﺟ ــدوﻝ اﻟﻣﻧ ــﺷﺄ ﻣوﺟ ــود ﻋﻠ ــﻰ ﻗﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت .ﻓﻣ ــﺛﻼً ﻋﻧ ــدﻣﺎ ﻧرﻳ ــد رﺑ ــط رﻗ ــم اﻟﺟﻧ ــﺳﻳﺔ
ﺑﺟــدوﻝ اﻟﻣــوظﻔﻳن ﺑ ـرﻗم اﻟﺟﻧــﺳﻳﺔ ﺑﺟــدوﻝ اﻟﺟﻧــﺳﻳﺎت ﻳﺟــب أن ﻳﻛــون ﺟــدوﻝ اﻟﺟﻧــﺳﻳﺎت
ﻣﻧﺷﺄ ﻗﺑﻝ ﺟدوﻝ اﻟﻣوظﻔﻳن وﻫﻛذا وﻳﻣﻛن اﻟرﺟوع إﻟﻰ أﻛﺛر ﻣن ﺣﻘـﻝ ﻓـﻲ ﻛـﻼ اﻟﺟـدوﻟﻳن
وﻛذﻟك ﻳﺟب أن ﻳﻛون ﻣن ﻧﻔس اﻟﻧوع.
5
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
وﻫﻧﺎ ﻧﺣدد أﺳﻣﺎء اﻟﺣﻘوﻝ ﻣﻊ ذﻛر اﺳم اﻟﺟدوﻝ اﻟﻣراد اﻟرﺟوع إﻟﻳﻪ
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
ﻓﻬــﻲ ﺗﻔﻳــد ﻓــﻲ ﺣﺎﻟــﺔ ﺗــﺎرﻳﺦ إﻧــﺷﺎء اﻟﺣﻘــﻝ, NAT_CRE_DATE أﻣــﺎ ﺑﺎﻟﻧــﺳﺑﺔ إﻟــﻰ
ﻓﺗﻔﻳ ــد ﺑﺈﺿ ــﺎﻓﺔ اﺳ ــم اﻟﻣ ــﺳﺗﺧدم اﻟ ــذي ﻗ ــﺎم ﺑﺈﻧ ــﺷﺎء ﻫ ــذاNAT_CRE_NAME أﻣ ــﺎ
.اﻟﺣﻘﻝ
7
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
وﻧﻼﺣــظ إن NAT_NOوﻫــو رﻗــم اﻟﺟﻧــﺳﻳﺔ وﺿــﻊ ﺑﺎﺳــم ﻣﺧﺗﻠــف ﻷﻧــﻪ ﺗــﺎﺑﻊ ﻟﺟــدوﻝ
أﺳﺎﺳــﻲ وﻫــو ﺟــدوﻝ اﻟﺟﻧــﺳﻳﺎت وﻛــذﻟك اﻟﺣﺎﻟـ ـ ﺑﺎﻟﻧــﺳﺑﺔ ﻝ DPT_NOوﻫــو ﻳرﻣــز إﻟــﻰ
رﻗم اﻹدارة .أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ إﻟﻰ EMP_CRE_DATEﻓﻬﻲ ﺗﻔﻳد ﻓﻲ ﺣﺎﻟﺔ ﺗﺎرﻳﺦ إﻧـﺷﺎء
اﻟﺣﻘــﻝ أﻣــﺎ EMP_CRE_NAMEﻓﺗﻔﻳــد ﺑﺈﺿــﺎﻓﺔ اﺳــم اﻟﻣــﺳﺗﺧدم اﻟــذي ﻗــﺎم ﺑﺈﻧــﺷﺎء
ﻫذا اﻟﺣﻘﻝ طﺑﻌﺎً ﻳﺟب اﻷﺧذ ﺑﻌﻳن اﻻﻋﺗﺑﺎر أﻧﻧـﺎ ﻋﻧـدﻣﺎ ﻧرﻳـد أن ﻧـرﺑط ﺣﻘـﻝ ﻓـﻲ ﺟـدوﻝ
ﻣﻌﻳن ﺑﺣﻘﻝ آﺧر ﻓﻳﺟب أن ﻳﻛون ﻣن ﻧﻔس اﻟﻧوع.
وﻫو أﻣر ﻳﻘوم ﺑﻌرض اﻟﺣﻘوﻝ اﻟﺗﻲ ﺑﺎﻟﺟدوﻝ وﻧوع ﻛﻝ ﺣﻘﻝ وﺳوف ﻧﻼﺣـظ ﻫـذﻩ اﻟﻘﻳﻣـﺔ
NOT NULLأي اﻧﻪ ﻻ ﻳﻘﺑﻝ ﻗﻳﻣﺔ ﻓﺎرﻏﺔ وﻫو اﻟﻣﻔﺗﺎح اﻷﺳﺎﺳﻲ اﻟذي ﻗﻣﻧﺎ ﺑﺗﺣدﻳـدﻩ
8
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
9
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
اﻷﺳﺋﻠﺔ:
-1ﺑﻳن ﻛﻳف ﻳﺗم إﻧﺷﺎء ﺟدوﻝ ﻟﻠطﻼب ﻣﻛون ﻣن ﺛﻼﺛﺔ ﺣﻘوﻝ ﺣﻳـث ﻳﻘﺑـﻝ رﻗـم اﻟطﺎﻟـب
أﺣرف وأرﻗﺎم وطوﻟﻪ 5واﺳم اﻟطﺎﻟب ﻳﻘﺑﻝ أﺣرف وأرﻗﺎم وﻣﻛون ﻣن 20ﺣـرف وﺗـﺎرﻳﺦ
ﻣﻳﻼد اﻟطﺎﻟب ؟
3ـ ّﺑﻳن ﺑﻣﺛﺎﻟـ ﻛﻳف ﻳﺗم رﺑط ﺟدوﻟﻳن ﺑﺑﻌﺿﻬﻣﺎ ﺑﺎﺳﺗﺧدام اﻟـ .FOREIGN KEY
ﻳوﺟــد ﻟــدﻳﻧﺎ ﺟــدوﻝ ﻣﻛــون ﻣــن ﺣﻘﻠــﻳن أﺳﺎﺳــﻳﻳن PRIMARY KEYوﻟﻧﻔــرض اﻧﻬﻣــﺎ
رﻗم اﻟﻣوظف ورﻗم إدارﺗﻪ ﻓﻬﻝ ﺗﻘﺑﻝ ﻗﺎﻋدة اﻟﺑﻳﺎﻧﺎت اﻹﺿﺎﻓﺔ ﻟو ﻗﻣﻧﺎ ﺑﺈﺿﺎﻓﺔ:
10
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
اﻟﻣﻘ ــﺻود ﺑﺎﻹﺿ ــﺎﻓﺔ ﻫ ــو ﻋﻣﻠﻳ ــﺔ إﺿ ــﺎﻓﺔ ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺑﻳﺎﻧ ــﺎت ﻋﻠ ــﻰ ﻣﺟﻣوﻋ ــﺔ ﻣ ــن
اﻟﺣﻘــوﻝ ﻓــﻲ ﺟــدوﻝ ﻣﻌــﻳن وﺗﻛــون طرﻳﻘــﺔ اﻹﺿــﺎﻓﺔ ﺑطﺑﺎﻋــﺔ اﻷﻣــر 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
ﻣﺛﺎﻝ:
ﻫﻧﺎ ﺳﻧﻘوم ﺑﺣذف ﺟﻣﻳﻊ ﺳﺟﻼت ﺟدوﻝ اﻹدا ارت وﺟدوﻝ اﻟﺟﻧﺳﻳﺎت.
;DELETE DEPARTMENTS
;DELETE FROM NATIONALITY
;COMMIT
وﻟﻛن ﻳﻔﺿﻝ اﺳﺗﺧدام اﻟﺷرط ﺣﻳث ﺗﺣدد اﻟﺣﻘﻝ اﻟذي ﺗرﻳد ﺣذﻓﻪ.
13
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
ﻫ ــو اﻟﻘﻳ ــﺎم ﺑﻌﻣ ــﻝ ﺗﻌ ــدﻳﻝ ﻋﻠ ــﻰ اﻟﺣﻘ ــوﻝ أﻳ ــﺿﺎً وﻋﻠ ــﻰ اﻟﺟ ــدوﻝ ﻛ ــﺎﻣﻼً وﻟﻠﻘﻳ ــﺎم ﺑﺎﻟﺗﻌ ــدﻳﻝ
ﻧﻛﺗب 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ﻋﻠـﻰ إﻧﻬـﺎ أﻣـر ﻣـن ﺧﻼﻟـﻪ ﻳﺗـﻳﺢ ﻟﻧـﺎ إﺣـﺿﺎر ﺑﻳـﺎن أو
ﻣﺟﻣوﻋﺔ ﺑﻳﺎﻧﺎت ﻣن ﺟدوﻝ واﺣد أو أﻛﺛر وﺑطـرق ﻣﺧﺗﻠﻔـﺔ وﺣـﺳب اﻟـﺷرط اﻟـذي ﺗـﺿﻌﻪ
ﻛﻣﺎ ﻳﻣﻛن اﺳﺗﺧدام اﻟـ statement selectﻓﻲ ﻣﻌﺎﻟﺟﺔ اﻟﻌﻣﻠﻳـﺎت ﻋﻠـﻰ اﻟﺟـداوﻝ وﻫـﻲ
Update Delete Insertوﻛذﻟك ﻳﻣﻛـن اﺳـﺗﺧداﻣﻬﺎ ﻣـﻊ ﻋـدة functionواﻗـﺻد ﺑﻬـﺎ
ﻣﻌﺎدﻻت ﺟﺎﻫزة.
ﻧﻛﺗــب SELECTﺛــم اﺳــم اﻟﺣﻘــوﻝ أو إذا ﻛﻧــت ﺗرﻳــد ﻋــرض ﻛــﻝ اﻟﺣﻘــوﻝ اﻛﺗــب * أي
ﻧﺟﻣﺔ ﺛم FROMوﻫﻧﺎ ﺗﻌطﻲ إﻳﻌﺎز أن ﺗﺣـدد اﺳـم اﻟﺟـدوﻝ ﺑﻌـد اﻟ ـ FROMﻓﺗـﺻﺑﺢ
ﺑﺎﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ:
* SELECT
;>FROM <table name
ﻣﺛﺎﻟـ :
SELECT * FROM NATIONALITY
ﻫذا اﻟﻣﺛﺎﻟـ ﻳﻌرض ﻟﻧﺎ ﺟﻣﻳﻊ ﻣﺣﺗوﻳﺎت ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت.
15
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
SELECT DPT_NO,DPT_NAME FROM DEPARTMENTS
وﺗﺣــدد ﺑﺎﻟﻣﻘﺎﺑــﻝ ﺟﻣﻠــﺔ اﻟـ ـINSERT ﻳــﺗم اﻹﺿــﺎﻓﺔ ﻋﻠــﻰ اﻟﺟــدوﻝ ﺑﺎﺳــﺗﺧدام ﺟﻣﻠــﺔ اﻟـ ـ
وﻫــذﻩ اﻟﺣﺎﻟــﺔ ﺗؤﺧــذ إذا ﻛﻧ ـﺎ ﻧرﻳــد ﻧــﺳﺦ ﺑﻳﺎﻧــﺎت ﺟــدوﻝ ﻣــن آﺧــر ﻟﻺﺿــﺎﻓﺔSELECT
.SELECT داﺧﻝ ﻧﻔس اﻟﺟدوﻝ وذﻟك ﺣﺳب اﻟﺑﻳﺎن اﻟذي ﻳﺄﺗﻲ ﻣن
16
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
17
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:اﻟﻘﺎﻋدة
CREATE TABLE new_table
AS (SELECT column_1, column2, ... column_n
FROM old_table_1, old_table_2, ... old_table_n);
:ﻣﺛﺎﻝ
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
:ALIASESوﺗــﺳﻣﻰ ﺑﺎﻷﺳــﻣﺎء اﻟﻣــﺳﺗﻌﺎرة ﻳﻌﻧــﻲ ﻧـﺳﺗﺑدﻝ اﺳــم اﻟﺣﻘــﻝ ﺑــﺄي اﺳــم ﻧﺣــن
ﻧﺣددﻩ ﻛﻲ ﺗﻌرض ﻓﻲ اﻟﻌﻧﺎوﻳن.
;select sysdate as "My Date" from dual
My Date
--------
22-10-06
:DISTINCTوﺗ ـ ـ ــﺳﺗﺧدم ﻟﺗ ـ ـ ــﺻﻧﻳف اﻟﺑﻳﺎﻧ ـ ـ ــﺎت اﻟﻣﺗﻛ ـ ـ ــررة وﺗ ـ ـ ــﺄﺗﻲ ﺑﻌ ـ ـ ــد ﺟﻣﻠ ـ ـ ــﺔ اﻟ ـ ـ ـ ـ
SELECTﻣﺑﺎﺷ ـرة وﻣــن ﻣﻣﻳزاﺗﻬــﺎ إﻧﻬــﺎ ﺗﺗﻌﺎﻣــﻝ ﻣــﻊ اﻟﺑﻳﺎﻧــﺎت اﻟﻣﺗــﺷﺎﺑﻪ ﺑــﺎﻟﺣﻘوﻝ اﻟﺗــﻲ
ﺗﺄﺗﻲ ﺑﺟﻣﻠﺔ اﻟـ .SELECTﻓﻠو ﻛﺎﻧت ﻟدﻳﻧﺎ اﻟﺑﻳﺎﻧﺎت اﻟﺗﺎﻟﻳﺔ:
واﺳـ ــﺗﺧدﻣﻧﺎ ﺟﻣﻠـ ــﺔ اﻟـ ـ ـ SELECTﻓـ ــﻲ إﺣـ ــﺿﺎر اﺳـ ــم اﻟﻣوظـ ــف وﺗـ ــﺎرﻳﺦ ﻣـ ــﻳﻼدﻩ ﻣـ ــﻊ
DISTINCTﻧﻼﺣــظ اﻧــﻪ ﺳــوف ﻳرﺟــﻊ اﻟﻘﻳﻣﺗــﻳن واﻟــﺳﺑب ﻷن ﺗــﺎرﻳﺦ اﻟﻣــﻳﻼد ﻣﺧﺗﻠــف
ﺑﻳﻧﻣــﺎ اﻻﺳــم ﻣﺗــﺷﺎﺑﻪ .ﻟﻛــن ﻟــو طﻠﺑﻧــﺎ إﺣــﺿﺎر اﺳــم اﻟﻣوظــف ﻓﻘــط ﻓــﺳوف ﻳﺣــﺿر ﻗﻳﻣــﺔ
واﺣدة وﻫﻲ اﺳم اﻟﻣوظف وﻗﺎﻋدة اﺳﺗﺧداﻣﻬﺎ ﻫﻲ:
SELECT DISTINCT CLOUMN1...,COLUMN2.. FROM
TABLE_NAME
19
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:اﻟﻘﺎﻋدة
SELECT UPPER(CLOUMN OR STRING) FROM TABLE NAME
SELECT LOWER(CLOUMN OR STRING) FROM TABLE NAME
:ﻣﺛﺎﻝ
إﻟ ــﻰ ﻗ ــﻳم ﻧﺣ ــن ﻧﺣ ــددﻫﺎ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
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
ﻻ ﻧــﺳﺗﺧدم ﻣــﻊ COUNTاﻟ ـ GROUP BYﻓــﻲ ﺣﺎﻟــﺔ إذا ﻛﻧــﺎ ﻧــﺳﺗرﺟﻊ ﻓﻘــط ﻋــدد
ﺷﻲء ﻣﻌﻳن.
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;
:ﻣﺛﺎﻝ
SELECT department, SUM (sales) as "Total sales"
FROM order_details
GROUP BY department;
ﺣﻳث ﻳرﺟﻊ اﻗﻝ ﻗﻳﻣﺔ ﺑﻳن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﻳﺎﻧﺎتMAX وﻫو ﻋﻛس اﻟـ:MIN
23
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
SELECT MIN(salary) as "Lowest salary"
FROM employees;
ﻷﻧـــﻪ ﻋﺑ ــﺎرة ﻋ ــن رﻣ ــز ﻓ ــردي أﻣـــﺎDPT_NAME وﻧﻼﺣ ــظ ﻛﻳ ــف اﻧ ــﻪ وﺿ ــﻌﻧﺎ اﻟ ـ ـ
GROUP BY ﻋﺑﺎرة ﻋن ﻣﺟﻣوﻋﺔ ﻟذﻟك ﻳﺳﺗﺧدم ﻣﻌﻬﺎ اﻟـCOUNTDPT_NO
: اﻟﻘﺎﻋدة
SELECT column1, column2, ... column_n, aggregate_function
(expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
24
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:أﻣﺛﻠﺔ
25
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
SELECT *
FROM suppliers
WHERE supplier_id between 4000 and 4500;
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ـ ﻣﺎ ﻫﻲ أﻓﺿﻝ اﻟطرق ﻓﻲ ﻋﻣﻠﻳﺔ اﻟﺣذف أو اﻟﺗﻌدﻳﻝ:
3ـ ّﺑﻳن ﻛﻳف ﻳﻣﻛن ﺗﻌدﻳﻝ أﻛﺛر ﻣن ﻗﻳﻣﺔ ﻓﻲ ﺟدوﻝ ﻓﻲ ﺟﻣﻠﺔ ﺗﻌدﻳﻝ واﺣدة وﺑﺎﺳﺗﺧدام اﻟﺷرط؟
5ـ اﻛﺗب ﺟﻣﻠﺔ selectﺗﻌرض ﻣن ﺧﻼﻟﻬﺎ اﺳم اﻹدارة ورﻗﻣﻬﺎ وﺗرﺗﺑﻬﺎ ﺣﺳب اﻹدارة؟
6ـ اﻛﺗب ﺟﻣﻠﺔ selectﺗﻌرض اﻟﺑﻳﺎﻧﺎت ﻏﻳر اﻟﻣﻛررة ﻟﺟﻧﺳﻳﺔ اﻟﻣوظف ﻣن ﺟدوﻝ اﻟﺟﻧﺳﻳﺎت؟
7ـ أﻋطﻲ ﻣﺛﺎﻝ ﻋﻠﻰ إﻧﺷﺎء ﺟدوﻝ ﺑﺎﺳﺗﺧدام ﺟﻣﻠﺔ اﻟـ selectﻋﻠﻰ أن ﺗﻛون اﻹدارة رﻗم .DP01
8ـ أﻋطﻲ ﻣﺛﺎﻝ ﻋﻠﻰ إﺿﺎﻓﺔ وﺣذف وﺗﻌدﻳﻝ اﻟﺟدوﻝ ﺑﺎﺳﺗﺧدام اﻟـ statement select؟
9ـ أﻋطﻲ ﻣﺛﺎﻝ ﺗﺑﻳن ﻓﻳﻪ ﺷﻛﻝ اﻟﺗﺎرﻳﺦ 2006-01ﺣﻳث إن 01ﻫو اﻟﺷﻬر و 2006ﻫو اﻟﺳﻧﺔ
ﻣن ﺧﻼﻝ اﺳﺗﺧدام داﻟﺔ to_char؟
10ـ ﺑﻳن ﺑﺎﺳﺗﺧدام اﻟدواﻝ اﻟﺗﺎﻟﻳﺔ nvlو initcapﻛﻳف ﻳﻣﻛن اﺳﺗﻐﻼﻟﻬﺎ ﻓﻲ ﺟﻣﻠﺔ select؟
11ـ ﺑﻳن ﺑﻣﺛﺎﻝ ﻛﻳف ﻳﻣﻛن أن ﻧﺟﻣﻊ ﺑﻳﺎﻧﺎت ﻏﻳر ﻣﻛررة ﺑﺎﺳﺗﺧدام sum؟
:TO_DATEﺗﻘــوم ﻫــذﻩ اﻟداﻟ ـﺔ ﺑﺗﺣوﻳــﻝ اﻟـ ـ STRINGإﻟــﻰ ﺗــﺎرﻳﺦ ﻓﻠــو أﺧــذﻧﺎ ﻫــذﻩ
ﻋﻠﻰ أﺳﺎس إﻧﻬﺎ STRINGﻓﻳﻣﻛن أن ﻧﺣوﻟﻬﺎ إﻟﻰ . DATE
27
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
ﻫــو ﻋﺑــﺎرة ﻋــن اﻟ ـﺻﻳﻐﺔ اﻟﻣ ـراد ﺗﺣوﻳــﻝ اﻟﺗــﺎرﻳﺦ إﻟﻳﻬــﺎ وﻗــد: FROMAT_MASK
.STRING اﺳﺗﻌرﺿﻧﺎ ﻓﻳﻣﺎ ﺳﺑق اﺳﺗﺧداﻣﺎت أو ﺗﺣوﻳﻼت اﻟﺗﺎرﻳﺦ إﻟﻰ
:ﻣﺛﺎﻝ
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('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('01-Aug-03', 'TUESDAY')
29
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
)' 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رﻏم ﺗﻛرارﻫﺎ
30
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
ً وﺗﺳﺗﺧدم ﻟزﻳﺎدة ﻋدد ﻣـن اﻟﻔ ارﻏـﺎت أو ﺗﻛـرار اﻟﻛﻠﻣـﺔ ﻣـن ﺟﻬـﺔ اﻟﻳـﺳﺎر طﺑﻌـﺎ: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('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.
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
ﺣﻳــث ﺗﺑــﻳن ﻫﻧــﺎ أن اﻟﻛﻠﻣــﺔ اﻟﻣ ـراد اﺳــﺗﺑداﻟﻬﺎ وﻫــﻲ ﺗــﺷﺑﻪ اﻟـ ـ TRANSLATEﺗﻘرﻳﺑــﺎً
واﻟﻔرق ﻫو إن اﻟ ـ TRANSLATEﺗﺑـدﻝ اﻷﺣـرف ﻓﻘـط أﻣـﺎ اﻟ ـ REPLACEﺗﻌﻣـﻝ
ﻋﻠ ــﻰ اﻟﺣ ــذف واﻻﺳ ــﺗﺑداﻝ إذا ﻟ ــم ﻧﺣ ــدد ﻟﻬ ــﺎ اﻷﺣ ــرف اﻟﻣ ــراد اﻻﺳ ــﺗﺑداﻝ ﺑﻬ ــﺎ ﻓﻳﻣ ــﺎ ﻟ ــو
اﺳﺗﺧدﻣت ﻓﻘط ﺑﺎﻟﺷﻛﻝ اﻟﺗﺎﻟﻲ:
'replace('123123tech', '123'); would return 'tech
'replace('123tech123', '123'); would return 'tech
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
36
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
اﻷﺳﺋﻠﺔ:
ﻟ ــدﻳﻧﺎ اﻟﺟ ــدوﻝ اﻟﺗ ــﺎﻟﻲ ﻳﺣﺗ ــوي ﻋﻠ ــﻰ اﺳ ــم اﻟﻣوظ ــف ورﻗ ــم اﻟﻣوظ ــف واﻟﺑﻳﺎﻧ ــﺎت ﺑﺎﻟ ــﺷﻛﻝ
اﻟﺗﺎﻟﻲ:
37
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
ﻧﻼﺣظ أن ﻣﺣور اﻟﺣدث ﻛﻠﻪ ﺣوﻝ WHEREواﺳﺗﺧدﻣﻧﺎ اﻟـ INﻟﺗوﺿﻳﺢ ﻣﻔﻬوم ﻫـﻝ
ﻫذا اﻟﺑﻳﺎن ﻣوﺟود ﺿﻣن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺟدوﻝ آﺧـر وﻛﺄﻧﻧـﺎ ﻧﻘـوﻝ اﺳـﺗﻌرض
ﻟﻧﺎ ﺟﻣﻳﻊ اﻟﺑﻳﺎﻧـﺎت ﻣـن اﻟﺟـدوﻝ all_tablesﻋﻠـﻰ أن ﻳﻛـون ﻣـﺛﻼً اﺳـم اﻟﺟـدوﻝ ﻣوﺟـود
ﺿﻣن ﺟﻣﻠﺔ selectأﺧرى ﺑﺣﻳث ﺗرﺟﻊ ﺟﻣﻳﻊ أﺳﻣﺎء اﻟﺟداوﻝ.
)where cols.column_name in (select * from table_name
ﻣﺛﺎﻝ ﺗوﺿﻳﺣﻲ:
ﻫﻧــﺎ ﺳــوف ﻳﻌــرض أﺳــﻣﺎء اﻟﻣــوظﻔﻳن اﻟــذﻳن ﻳﻧﺗﻣــون إﻟــﻰ اﻹدارة رﻗــم 10ﻣــﺛﻼ ﻋﻠــﻰ أن
ﺗﻛون ﻫذﻩ اﻹدارة ﺿﻣن ﺟﻣﻠﺔ اﻟـ SELECTاﻟﺛﺎﻧﻳﺔ وﺗﻛون اﺳﻣﻪ )اﻹدارة اﻟﻌﺎﻣﺔ(.
38
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
......وﻫﻛذا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 اﻟﺣﻘوﻝ وﻟﻛن ﺗﻌﻧﻲ اﻟﺗرﺗﻳب ﻓﻠو وﺣدﻧﺎ اﻷﺳﻣﺎء ﻟﻛﺗﺑﻧﺎ اﻷﺳﻣﺎء ﺑﻌد
UNION
"company_name as "name ,select company_id
from companies
1000 < where company_id
[BY name;[/CODE ORDER
وﻟﻛن ﺗﻌرض ﺟﻣﻳﻊ اﻟﺑﻳﺎﻧﺎت ﻓﻲ اﻟﺟدوﻟﻳن ﻣﻊ اﻟﺗﻛرار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
وﻫ ــو دﻣ ــﺞ اﻟﺑﻳﺎﻧ ــﺎت ﻣ ــﻊ ﻓ ــﺎرق اﻧ ــﻪ ﻳﻌ ــرض اﻟﺑﻳﺎﻧ ــﺎت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;
41
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
وﻳﺟب أن ﻳﻛون ﻋـدد اﻟﺣﻘـوﻝ ﻣﺗـﺷﺎﺑﻪ واﻟﻧـوع ﻛـذﻟك .وﻣﻌﻧـﻰ اﻟﻣﺛـﺎﻝ اﻟـﺳﺎﺑق )اﺳـﺗﻌرض
اﻟﺑﻳﺎﻧﺎت ﻓﻲ ﺟﻣﻠﺔ اﻻﺳﺗﻌﻼم اﻷوﻟﻰ واﻟﻐﻳر ﻣوﺟودة ﺑﺎﻻﺳﺗﻌﻼم اﻟﺗﺎﻟﻲ( ﻛﺄن ﺗﻘـوﻝ ﻧرﻳـد
أن ﻧﻌرض أﺳﻣﺎء اﻟﻣوردﻳن اﻟذﻳن ﻟم ﻳﺗم اﻟطﻠب ﻋﻠﻰ ﻣﻧﺗﺟﺎﺗﻬم.
:ALTER TABLEﻫـﻲ ﻋﺑـﺎرة ﻋـن ﺗﻌﻠﻳﻣـﺔ أو أﻣـر ﻳـﺗم ﻣـن ﺧﻼﻟـﻪ اﻟﺗﻌـدﻳﻝ ﻋﻠـﻰ
ﻣﺣﺗوﻳﺎت اﻟﺟدوﻝ وﻫﻲ ﻋﻠﻰ أﻧواع:
اﻟﻘﺎﻋدة:
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
:اﻟﻘﺎﻋدة
ALTER TABLE table_name
MODIFY column_name column_type;
:ﻣﺛﺎﻝ
ALTER TABLE supplier
MODIFY supplier_name varchar2(100) not null;
43
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
: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
اﻷﺳﺋﻠﺔ:
45
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
اﻟﺗﻌﺎﻣــﻝ ﻣــﻊ أﻧـواع أﺧــرى ﻣــن اﻟﻣﺣــددات وﻛﻳﻔﻳــﺔ اﺳــﺗﻌراض ﻫــذﻩ اﻟﻣﺣــددات وﻛﻳﻔﻳــﺔ
ﺣذﻓﻬﺎ وﺗﻔﻌﻳﻠﻬﺎ وﻋدم ﺗﻔﻌﻳﻠﻬﺎ:
ﻫ ــو ﻋﺑ ــﺎرة ﻋ ــن ﺣﻘ ــﻝ وﺣﻳ ــد أو ﻣﺟﻣوﻋ ــﺔ ﺣﻘ ــوﻝ وﺣﻳ ــدة ﺑﺎﻟﺟ ــدوﻝ ﻻ ﺗﺗﻛ ــرر وﻳﻌرﻓ ــﺎن
اﺳﺗﺛﻧﺎﺋﻳﺎً ﻓﻲ ﺳﺟﻝ وﻣﻣﻛن أن ﻳﺣﺗوي ﻋﻠﻰ ﻗـﻳم ﻓﺎرﻏـﺔ وﻟﻛـن ﻫـذﻩ اﻟﻘـﻳم ﺗﻛـون ﻓرﻳـدة أي
ﻻ ﺗﺗﻛرر أي ﻗﻳﻣﺔ واﺣدة ﻓرﻳدة.
ﻻ ﻳوﺟد ﻓرق ﻛﺑﻳر ﻓﻛﻼﻫﻣـﺎ ﻻ ﻳﻘﺑـﻝ ﻗـﻳم ﻣﻛـررة وﻟﻛـن اﻟـذي ﻳﻣﻳـز اﻟ ـ 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 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
:ﻣﺛﺎﻝ
ALTER TABLE supplier
add CONSTRAINT supplier_unique UNIQUE (supplier_id,
supplier_name);
ﻳــﺳﻣﺢ ﻟﻧــﺎ ﺑوﺿــﻊ ﺷــرط ﻋﻠــﻰ ﻛــﻝ ﺣﻘــﻝ ﺑﺎﻟﺟــدوﻝ ﻳﻌﻧــﻲ ﻻ:Constraints Check
: ﻣﻊ ﻣراﻋﺎة.ﻳﻣﻛن اﻹﺿﺎﻓﺔ إﻻ ﺑﻌد اﻟﺗﺄﻛد ﻫﻝ ﻫو ﺿﻣن اﻟﺻﻼﺣﻳﺎت أم ﻻ
:ﻗﺎﻋدة إﻧﺷﺎﺋﻪ
:ﻣﺛﺎﻝ آﺧر
CREATE TABLE suppliers
( supplier_id numeric(4),
supplier_name varchar2(50),
CONSTRAINT check_supplier_name
CHECK (supplier_name = upper(supplier_name))
);
أو ﺣروﻓـﻪcapital وﻓﻲ ﻫـذا اﻟﻣﺛـﺎﻝ ﺣـددﻧﺎ أن اﺳـم اﻟﻣـورد ﻳﺟـب أن ﻳـﺳﺎوي اﻻﺳـم اﻟ ـ
.Capital ﺗﻛون
49
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
ALTER TABLE suppliers
drop CONSTRAINT check_supplier_id;
:ﻣﺛﺎﻝ
ALTER TABLE suppliers
enable CONSTRAINT check_supplier_id;
50
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
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
:RETURN return_datatype
ﻫﻧﺎ ﻧوع اﻟﻘﻳﻣﺔ اﻟﻣراد إرﺟﺎﻋﻬﺎ ﻓﻲ اﻟدواﻝ وﺗﻌﻧﻲ ﻧوع اﻟدواﻝ ﻫﻝ ﻫو رﻗم أو ﺣرف أو
ﻏﻳر ذﻟك.
53
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
][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;
55
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
ﻫذﻩ اﻟﺟزﺋﻳﺔ ﻫﻲ ﻋﺑﺎرة اﻟﺑﺎراﻣﻳﺗر اﻟداﺧﻝ أو اﻟﺧﺎرج ﻣن اﻹﺟراء ﺣﻳث ﻋﻧد اﺳﺗﺧدام
اﻟﺑﺎراﻣﻳﺗر وﺗﻌرﻳف ﻧوﻋﻪ ﻧﺳﺗﺧدم ﺛﻼث ﺣﺎﻻت وﻫﻲ:
INوﺗﻌﻧﻲ ﻗﻳﻣﺔ اﻟﺑﺎراﻣﻳﺗر اﻟداﺧﻠﺔ واﻟﻐﻳر ﻣرﺗﺟﻌﻪ ﺑﻬﺎ اﻟﻘﻳﻣﺔ .
OUTوﺗﻌﻧﻲ ﻗﻳﻣﺔ اﻟﺑﺎراﻣﻳﺗر اﻟﺧﺎرﺟﺔ أو اﻟﻧﺎﺗﺟﺔ.
IN OUTوﻫﻲ اﻟﻘﻳم اﻟداﺧﻠﺔ واﻟﺧﺎرﺟﺔ ﺣﻳث ﻳدﺧﻝ اﻟﺑﺎراﻣﻳﺗر ﺑﻘﻳﻣﺔ وﻳرﺟﻊ ﺑﻘﻳﻣﺔ
أﺧرى.
][declaration_section
: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];
:ﻣﺛﺎﻝ
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 ﺗﻌــرف اﻟ ـ
ﻣﻌ ــﻳن ﺑﻘﺎﻋ ــدة اﻟﺑﻳﺎﻧ ــﺎت ﻟﺗﻧﻔﻳ ــذ ﻣﺟﻣوﻋ ــﺔ ﻣ ــن اﻟﺗﻌﻠﻳﻣ ــﺎت أو ﻷﺧ ــذ ﻣﻌﻠوﻣ ــﺎت ٕواﺿ ــﺎﻓﺗﻬﺎ
ﺗــم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;
58
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:TYPE TRIGGER
Trigger Delete وUpdate Trigger وInsert Triggers وﻫﻲ أﻧواع
:وﺳوف ﻧﺳﺗﻌرض ﻫذﻩ اﻷﻧواع
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)
);
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
62
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
63
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
اﻷﺳﺋﻠﺔ:
2ـ ﻛﻳف ﻧﺳﺗطﻳﻊ ﺗﺣدﻳد ﻧوع اﻟﺑﺎراﻣﻳﺗر إذا ﻛﺎن داﺧﻝ أو ﺧﺎرج؟
5ـ ﻛﻳف ﻧﺳﺗطﻳﻊ ﺗﺣدﻳد ﻧوع اﻟﺑﺎراﻣﻳﺗر إذا ﻛﺎن داﺧﻝ أو ﺧﺎرج؟
64
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
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 ﻳﻣﻛن اﻟﺗﺣدﻳث ﻋﻠﻰ اﻟـ
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';
66
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
tables, ﻫــو ﻋﺑــﺎرة ﻋــن ﺑــدﻳﻝ ﻟﻣﺣﺗوﻳــﺎت ﻗﺎﻋــدة اﻟﺑﻳﺎﻧــﺎت ﻣﺛــﻝ اﻟـ ـSynonyms اﻟـ ـ
وﻏﻳرﻫـﺎ ﻣـن اﻟﻣﺣﺗوﻳـﺎت وﻓﺎﺋـدﺗﻬﺎ أن,views, sequences, stored procedures
.اﻟﻣﺳﺗﺧدم ﻳﺳﺗطﻳﻊ أن ﻳﺟﻠب أو ﻳﻌدﻝ
:ﻗﺎﻋدة اﻹﻧﺷﺎء
create [or replace] [public] synonym [schema .] synonym_name
for [schema .] object_name [@ dblink];
67
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
drop public synonym suppliers;
68
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:BY passwordﻫﻧــﺎ ﺗﻌﻧــﻲ أن اﻟﻣــﺳﺗﺧدم ﻳﺟــب أن ﻳــﺿﻊ ﻛﻠﻣــﺔ ﺳــر ﻗﺑــﻝ ﺗﻔﻌﻳــﻝ اﻟ ـ
role
:USING packageﻫﻧـﺎ ﺗﻛــون ﻗــد أﻧــﺷﺄت ﻣﺟﻣوﻋــﺔ ﻣــن roleوﻳﺟــب ﺗطﺑﻳﻘﻬــﺎ ﻣــن
ﺧﻼﻝ اﻟﺑرﻧﺎﻣﺞ.
: EXTERNALLYوﻫـ ـ ـ ـ ــذا ﻳﻌﻧـ ـ ـ ـ ــﻲ اﻧـ ـ ـ ـ ــك ﺗﺣﺗـ ـ ـ ـ ــﺎج إﻟـ ـ ـ ـ ــﻰ ﺗﻌرﻳـ ـ ـ ـ ــف ﺧـ ـ ـ ـ ــﺻﺎﺋص
EXTERNALLYﻗﺑﻝ ﺗﺷﻐﻳﻝ اﻟـ .role
ﻣﻊ ﻣﻼﺣظـﺔ إﻧﻧـﺎ إذا ﻟـم ﻧـﺿﻊ NOT IDENTIFIEDأو ﻧـﺿﻊ IDENTIFIED
ﺳوف ﻳﺗم إﻧﺷﺎء اﻟـ roleﻋﻠﻰ أﺳﺎس أﻧﻬﺎ .NOT IDENTIFIED
69
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
ﻣﺛﺎﻝ:
اﻟﻘﺎﻋدة:
grant privileges on object to role_name
70
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:ﻣﺛﺎﻝ
revoke execute on Find_Value from test_role;
71
www.abahe.co.uk
Arab British Academy for Higher Education. Oracle – Part 2
:اﻟﻘﺎﻋدة
GRANT role_name TO user_name;
:ﻣﺛﺎﻝ
GRANT test_role to smithj;
ﻗﺎﻋــدة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
ﺗﻣرﻳن ﺣر:
ﺻــﻣم ﺟــداوﻝ ﻟﻠطــﻼب وﻧﺗــﺎﺋﺟﻬم وﻟــك ﺣرﻳــﺔ اﺧﺗﻳــﺎر اﻟﻌﻣﻠﻳــﺎت واﻟﻧﺗــﺎﺋﺞ اﻟﺗــﻲ
ﺗراﻫـــﺎ ﻣﻧﺎﺳـــﺑﺔ ﻟـــذﻟك ﻣـــﺳﺗﻔﻳداً ﺑﻣـــﺎ ﺳـــﺑق وﻣـــر ﻣﻌﻧـــﺎ وﻣـــن وﺟﻬـــﺔ ﻧظـــرك
ﻛﻣﺑرﻣﺞ...
76
www.abahe.co.uk