TAHA
11-27-2009, 12:52 AM
پایگاه داده اراکل متشکل از قسمتهای مختلفی میباشد. بعضی از آنها ساختارهای حافظه میباشند و بعضی دیگر پردازشهایی در پشت صحنه میباشند که دقیقا وظایف خاصی را انجام میدهند و منابع به کار گرفته شده توسط هارد دیسک برای ذخیره کردن داده های یک سازمان و همچنین ابزارهایی طراحی شده برای بازیافت اطلاعات برای جلوگیری از بین رفتن آنها در اثر اشتباهات و خراب شدن دیسک میباشد. به مجموعه ساختار های حافظه و پردازشهای مربوط به انجام وظایف Oracle Instance میگویند. و به مجموعه این Instance و بقیه اجزاء Oracle Database میگویند.
Oracle Server Architecture
Memory Architecture
SGA : Oracle"s Primary Memory Component
در این بخش ابتدا به ساختارهای حافظه در یک Oracle Instance میپردازیم. به طور کلی دو ساختار اصلی از حافظه در اراکل وجود دارد. اولین قسمت و مهمترین قسمت System Global Area یا SGA میباشد . بیشتر اوقات وقتی از حافظه صحبت میشود منظور همان SGA میباشد. خود SGA تشکیل شده از قسمتهای مختلفی از جمله Buffer Cache, Shared Pool, Redo Log Buffer میباشد. البته اجزای دیگری در این قسمت وجود دارد که در فرصت مناسب به شرح آنها خواهیم پرداخت.
● Buffer Cache
این ساختار حافظه تشکیل شده از بافرهایی به اندازه های یکسان که به آن Database Block گفته میشود میباشد. که کار آن ذخیره داده هایی که است که توسط Sql به سمت کاربر بر میگردد. به طور کلی شما می تواننید Buffer Cache را را مجموعه ای از بافرها با سایزهای یکسان تصور کنید. به خاطر همین است که وقتی شما پارامترهای یک Database را تنظیم میکنید تعداد بافرها را مشخص میکنید نه سایز آن را به بایت. Datablock واحدی مجزا از حافظه در اراکل است که میتواند چندین سطر از یک Table را در خود جای دهد.
Buffer Cache دارای دو وظیفه اصلی میباشد. یکی برای افزایش کارایی اراکل برای جواب دادن به Select های تکراری از سمت کاربر و وظیفه دوم سرعت بخشیدن به تغییراتی است که کاربر در Database میدهد. این تغییرات ابتدا در حافظه ثبت شده و بعدا بر روی دیسک ذخیره میشود.
● Shared Pool
این ساختار تشکیل شده از سه قسمت میباشد که وجود دو قسمت آن لازم میباشد . قسمت اول Library Cache میباشد که محل نگهداری دستورهای تجزیه شده Sql و نگهداشتن آنها در حافظه برای استفاده مجدد میباشد و قسمت دوم Dictionary Cache میباشد که گاهی به آن Row Cache نیز گفته میشود و وظیفه آن نگهداری اطلاعات اخیر خوانده شده از Data Dictionary میباشد که به عنوان مثال شامل Usernames, Password, Previlages میباشد.
● Redo Log Buffer
این قسمت تغییرات ایجاد شده توسط DML و توسط کاربر ایجاد شده است را در خود نگهداری میکند. دستورهای DML شامل Update, Delete, Insert, Drop و... که توسط کاربر اجرا شده و باعث تغییرات در Database, Tables, Rows میشود. این تغییرات به صورت Redo Entry در حافظه نگهداری و سپس بر روی دیسک ذخیره میشوند که توسط آنها میتوان اشتباهاتی را که کاربران انجام میدهند و باعث از دست دادن اطلاعات میشود را توسط این Redo Entry ها بازیافت نمود. The PGA : The Oracle User"s Memory Area
ساختار دیگر حافظه در اراکل Program Global Area نام دارد. که کار آن نگهداشتن مقادیر متغییرهای تعریف شده توسط کاربران میباشد. اطلاعات هر کاربر نمیتواند Share باشد و باید فضای مخصوص به خودش را داشته باشد چون مقادیر واقعی متغییرهای درخواست شده توسط کاربر در این قسمت یافت میشود. Reading Data From Disk
● پردازش سرور
همیشه در اراکل چندین پردازش بطور همزمان با یکدیگر در حال اجرا شدن میباشند که شامل Background, Server, And Network Process میباشند که مهمترین آنها از نظر تاثیر گذار بودن بر کار کاربر server process میباشد که که اطلاعات در خواستی یک کاربر را از روی دیسک خوانده و آن را به Buffer Cache منتقل میکند. به طور کلی دو راه برای مدیران اراکل برای پیاده سازی Server Process وجود دارد. Shared Server And Dedicated Server
● Dedicated Server
در این روش برای هر کاربری که به اراکل متصل میشود.یک اداره کننده Handler برای پردازشهای کاربر در نظر گرفته میشود که اصطلاحا به آن Genie Handler میگویند و به ازای هر کاربر که به اراکل متصل میشود یک Handler نیز ایجاد میشود که مسئولیت خواندن دادههای درخواست شده از طرف کاربر و منتقل کردن آنها بر روی Buffer Cache را دارند و هر کاربر Handler مخصوص خودش را خواهد داشت. همچنین در این روش نیاز بیشتری به حافظه و استفاده از پردازشگر میباشد. اگر منابع سخت افزاری به اندازه کافی موجود باشد این روش انتخاب بسیاری از مدیران شبکه میباشد.
● Shared Server
در این روش بر خلاف روش قبل تعداد کمی Server Process در اراکل در حا اجرا شدن میباشند که به درخواستهای کاربران پاسخ میدهند. در این روش چندین کاربر با یک Server process اداره میشوند. و ارکل این عمل را با استفاده از یک Network Process به نام Dispatcher انجام میدهد. در خواست هر کاربر به یک Dispatcher اتصال مییابد و توسط آن به درخواستهای کاربران جواب داده میشود. Dispatcher تمام درخواستها را در یک صف قرار داده و به آنها جواب میدهد. این مساله به معنی صرفا یک Dispatcher در کل اراکل نمیباشد.
در این روش نیز شما قادر خواهید بود که Server Process And Dispatcher های متعددی را ایجاد نمایید. در این روش مصرف سخت افزاری کمتری نسبت به روش قبل لازم میباشد. در Dedicated Server برای هر کاربر که به پایگاه متصل میشود زمانی برای ایجاد یک Server Process لازم میباشد در حالی که در Shared Server، کاربران با استفاده از سرویس گرفتن از طریق یک Dispatcher موجود و یک Server Process در زمان صرفه جویی میکنند. به همین دلیل در پایگاههایی که تعداد متعددی از کاربران به آن متصل میشوند استفاده از این روش بهتر میباشد.
● User session Information
user session برای یک کاربر در اراکل در Shared pool ذخیره میشود اگر DBA اراکل را در حالت Shared Server تنظیم کرده باشد. در حالتی که اراکل در حالت Dedicated Server میباشد، User Session در PGA نگهداری میشود.
● Structures That Connect Users to Oracle Servers
اولین مرحله ای که درخواست کاربر به آن میرسد Oracle Listener میباشد که بر روی پورت خاصی به درخواستهای کاربران گوش میکند. وقتی که درخواست کاربر به اراکل Listener رسید، امکان انجام شدن دو عمل وجود دارد. اگر اراکل از Dedicated server استفاده میکند، Listener به اراکل دستور ایجاد یک Dedicated Server را میدهد و سپس درخواست کاربر را به آن واگذار میکند. اگر Multi Thread Server مورد استفاده اراکل باشد، Listener درخواست کاربر را به به یک پردازشگر که همان Dispatcher Process میباشد واگذار میکند. بعد از انجام هر کدام از اعمالی که ذکر کردم، Listener دیگر نقشی نخواهد داشت و آماده قبول کردن درخواست بعدی از کاربر میباشد.
وقتی که درخواست کاربر به اراکل میرسد اگر اراکل در حالت MTS باشد، وقتی که کاربر درخواستی را انجام میدهد، Dispatcher درخواست کاربر را در یک صف به نام Request Queue یا همان صف درخواست کاربران قرار میدهد. Request Queue در System Global Area قرار دارد که درخواستها را به ترتیب جواب میدهند و برای اینکار از الگوریتم معروف First-In-First-Out استفاده میکند.
هر Dispatcher در SGA صف مربوط به خود رادارد و به درخواستهای صف مربوط به خودش پاسخ میگوید وجواب پاسخها نیز در بازگشت به کاربر مربوطه بر میگردد.
● Stages in Processing Queries, Commits and Changes
زمانی که شما درخواست یک سری دادههای مشخص از اراکل را توسط یک Sql Select انجام میدهید، دستورات به گونهای است که شما درخواست اطلاعات دلخواه خود را صاذر میکنید. خروجی این دستورات باید یرای اراکل قابل فهم باشد. این کار توسط Relational Database Management System که همان RDBMS میباشد انجام میشود. RDBMS دستورات SQL شما را به گونهای برای اراکل که قابل فهم باشد ترجمه میکند. مراحل پردازش به صورت زیر میباشد:
▪ Search Shared Pool
RDBMS ابتدا سعی میکند که یک کپی از SQL ترجمه شده را در Library Cache پیدا کند.
▪ Validate Statement
RDBMS، درستی دستورات SQL را که توسط کاربر اجرا شده است را چک میکند.
Oracle Server Architecture
Memory Architecture
SGA : Oracle"s Primary Memory Component
در این بخش ابتدا به ساختارهای حافظه در یک Oracle Instance میپردازیم. به طور کلی دو ساختار اصلی از حافظه در اراکل وجود دارد. اولین قسمت و مهمترین قسمت System Global Area یا SGA میباشد . بیشتر اوقات وقتی از حافظه صحبت میشود منظور همان SGA میباشد. خود SGA تشکیل شده از قسمتهای مختلفی از جمله Buffer Cache, Shared Pool, Redo Log Buffer میباشد. البته اجزای دیگری در این قسمت وجود دارد که در فرصت مناسب به شرح آنها خواهیم پرداخت.
● Buffer Cache
این ساختار حافظه تشکیل شده از بافرهایی به اندازه های یکسان که به آن Database Block گفته میشود میباشد. که کار آن ذخیره داده هایی که است که توسط Sql به سمت کاربر بر میگردد. به طور کلی شما می تواننید Buffer Cache را را مجموعه ای از بافرها با سایزهای یکسان تصور کنید. به خاطر همین است که وقتی شما پارامترهای یک Database را تنظیم میکنید تعداد بافرها را مشخص میکنید نه سایز آن را به بایت. Datablock واحدی مجزا از حافظه در اراکل است که میتواند چندین سطر از یک Table را در خود جای دهد.
Buffer Cache دارای دو وظیفه اصلی میباشد. یکی برای افزایش کارایی اراکل برای جواب دادن به Select های تکراری از سمت کاربر و وظیفه دوم سرعت بخشیدن به تغییراتی است که کاربر در Database میدهد. این تغییرات ابتدا در حافظه ثبت شده و بعدا بر روی دیسک ذخیره میشود.
● Shared Pool
این ساختار تشکیل شده از سه قسمت میباشد که وجود دو قسمت آن لازم میباشد . قسمت اول Library Cache میباشد که محل نگهداری دستورهای تجزیه شده Sql و نگهداشتن آنها در حافظه برای استفاده مجدد میباشد و قسمت دوم Dictionary Cache میباشد که گاهی به آن Row Cache نیز گفته میشود و وظیفه آن نگهداری اطلاعات اخیر خوانده شده از Data Dictionary میباشد که به عنوان مثال شامل Usernames, Password, Previlages میباشد.
● Redo Log Buffer
این قسمت تغییرات ایجاد شده توسط DML و توسط کاربر ایجاد شده است را در خود نگهداری میکند. دستورهای DML شامل Update, Delete, Insert, Drop و... که توسط کاربر اجرا شده و باعث تغییرات در Database, Tables, Rows میشود. این تغییرات به صورت Redo Entry در حافظه نگهداری و سپس بر روی دیسک ذخیره میشوند که توسط آنها میتوان اشتباهاتی را که کاربران انجام میدهند و باعث از دست دادن اطلاعات میشود را توسط این Redo Entry ها بازیافت نمود. The PGA : The Oracle User"s Memory Area
ساختار دیگر حافظه در اراکل Program Global Area نام دارد. که کار آن نگهداشتن مقادیر متغییرهای تعریف شده توسط کاربران میباشد. اطلاعات هر کاربر نمیتواند Share باشد و باید فضای مخصوص به خودش را داشته باشد چون مقادیر واقعی متغییرهای درخواست شده توسط کاربر در این قسمت یافت میشود. Reading Data From Disk
● پردازش سرور
همیشه در اراکل چندین پردازش بطور همزمان با یکدیگر در حال اجرا شدن میباشند که شامل Background, Server, And Network Process میباشند که مهمترین آنها از نظر تاثیر گذار بودن بر کار کاربر server process میباشد که که اطلاعات در خواستی یک کاربر را از روی دیسک خوانده و آن را به Buffer Cache منتقل میکند. به طور کلی دو راه برای مدیران اراکل برای پیاده سازی Server Process وجود دارد. Shared Server And Dedicated Server
● Dedicated Server
در این روش برای هر کاربری که به اراکل متصل میشود.یک اداره کننده Handler برای پردازشهای کاربر در نظر گرفته میشود که اصطلاحا به آن Genie Handler میگویند و به ازای هر کاربر که به اراکل متصل میشود یک Handler نیز ایجاد میشود که مسئولیت خواندن دادههای درخواست شده از طرف کاربر و منتقل کردن آنها بر روی Buffer Cache را دارند و هر کاربر Handler مخصوص خودش را خواهد داشت. همچنین در این روش نیاز بیشتری به حافظه و استفاده از پردازشگر میباشد. اگر منابع سخت افزاری به اندازه کافی موجود باشد این روش انتخاب بسیاری از مدیران شبکه میباشد.
● Shared Server
در این روش بر خلاف روش قبل تعداد کمی Server Process در اراکل در حا اجرا شدن میباشند که به درخواستهای کاربران پاسخ میدهند. در این روش چندین کاربر با یک Server process اداره میشوند. و ارکل این عمل را با استفاده از یک Network Process به نام Dispatcher انجام میدهد. در خواست هر کاربر به یک Dispatcher اتصال مییابد و توسط آن به درخواستهای کاربران جواب داده میشود. Dispatcher تمام درخواستها را در یک صف قرار داده و به آنها جواب میدهد. این مساله به معنی صرفا یک Dispatcher در کل اراکل نمیباشد.
در این روش نیز شما قادر خواهید بود که Server Process And Dispatcher های متعددی را ایجاد نمایید. در این روش مصرف سخت افزاری کمتری نسبت به روش قبل لازم میباشد. در Dedicated Server برای هر کاربر که به پایگاه متصل میشود زمانی برای ایجاد یک Server Process لازم میباشد در حالی که در Shared Server، کاربران با استفاده از سرویس گرفتن از طریق یک Dispatcher موجود و یک Server Process در زمان صرفه جویی میکنند. به همین دلیل در پایگاههایی که تعداد متعددی از کاربران به آن متصل میشوند استفاده از این روش بهتر میباشد.
● User session Information
user session برای یک کاربر در اراکل در Shared pool ذخیره میشود اگر DBA اراکل را در حالت Shared Server تنظیم کرده باشد. در حالتی که اراکل در حالت Dedicated Server میباشد، User Session در PGA نگهداری میشود.
● Structures That Connect Users to Oracle Servers
اولین مرحله ای که درخواست کاربر به آن میرسد Oracle Listener میباشد که بر روی پورت خاصی به درخواستهای کاربران گوش میکند. وقتی که درخواست کاربر به اراکل Listener رسید، امکان انجام شدن دو عمل وجود دارد. اگر اراکل از Dedicated server استفاده میکند، Listener به اراکل دستور ایجاد یک Dedicated Server را میدهد و سپس درخواست کاربر را به آن واگذار میکند. اگر Multi Thread Server مورد استفاده اراکل باشد، Listener درخواست کاربر را به به یک پردازشگر که همان Dispatcher Process میباشد واگذار میکند. بعد از انجام هر کدام از اعمالی که ذکر کردم، Listener دیگر نقشی نخواهد داشت و آماده قبول کردن درخواست بعدی از کاربر میباشد.
وقتی که درخواست کاربر به اراکل میرسد اگر اراکل در حالت MTS باشد، وقتی که کاربر درخواستی را انجام میدهد، Dispatcher درخواست کاربر را در یک صف به نام Request Queue یا همان صف درخواست کاربران قرار میدهد. Request Queue در System Global Area قرار دارد که درخواستها را به ترتیب جواب میدهند و برای اینکار از الگوریتم معروف First-In-First-Out استفاده میکند.
هر Dispatcher در SGA صف مربوط به خود رادارد و به درخواستهای صف مربوط به خودش پاسخ میگوید وجواب پاسخها نیز در بازگشت به کاربر مربوطه بر میگردد.
● Stages in Processing Queries, Commits and Changes
زمانی که شما درخواست یک سری دادههای مشخص از اراکل را توسط یک Sql Select انجام میدهید، دستورات به گونهای است که شما درخواست اطلاعات دلخواه خود را صاذر میکنید. خروجی این دستورات باید یرای اراکل قابل فهم باشد. این کار توسط Relational Database Management System که همان RDBMS میباشد انجام میشود. RDBMS دستورات SQL شما را به گونهای برای اراکل که قابل فهم باشد ترجمه میکند. مراحل پردازش به صورت زیر میباشد:
▪ Search Shared Pool
RDBMS ابتدا سعی میکند که یک کپی از SQL ترجمه شده را در Library Cache پیدا کند.
▪ Validate Statement
RDBMS، درستی دستورات SQL را که توسط کاربر اجرا شده است را چک میکند.