Validate Data Source
RDBMS مطمئن میشود که تمام سطرها و ستونهای که کاربر دز دستورش به آنها اشاره کرده است وجود داشته باشد.
▪ Acquire Locks
RDBMS در این مرحله object های استفاده شده توسط دستور کاربر را تا پایان اجرای آن قفل میکند.
▪ Check Privileges
RDBMS مجوز کاربر را برای اجرای دستورات SQL را کنترل میکند.
▪ Pars Statement
RDBMS با تشکیل یک Parse Tree برای دستور SQL آن را در Library Cache قرار میدهد که شرکت اراکل بر این عقیده است که این روش بهینه برای اجرای دستورات اراکل میباشد. اینها مراحلی هستند که RDBMS آنها را انجام میدهد تا به دادههای مورد نظر کار بر برسد. اگر دستورات در Library Cache وجود داشت این مراحل قابل حذف میباشد.
▪ Execute Statement
RDBMS تمام پردازشهای لازم را برای اجرای Select Statement را انجام میدهد، در این لحظه Server Process دادههای مورد نظر را از روی دیسک به Buffer Cache منتقل میکند.
▪ Fetch Values From Cursor
زمانی که اجرای select statement پایان یافت دادهها در یک Cursor ذخیره شده و به Variable های مورد نظر الصاق میشوند و به User Process باز میگردند.
▪ Stages In Processing DML Statement
یکی دیگر از پردازشهای اراکل Undo Segment میباشد که کار آن ذخیره کردن ورژنهای قدیمی دادههایی میباشد که توسط دستورات DML که توسط کاربر اجرا شده است را انجام میدهد. این دستورات دستوراتی از قبیل Update, Insert، Delete میباشد.
● پردازش دستورات DML به شرح زیر میباشد:
▪ Parse Statements
RDBMS با تشکیل یک Parse Tree برای دستورات و قرار دادن آنها در Library Cache مراحل اجرای آنها را فراهم میکند. اگر Parse Tree در Library Cache وجود داشته باشد. این مرحله اجرا نمیشود.
▪ Execute Statement
RDBMS تمام پردازشها را برای اجرای دستورات DML انجام میدهد. برای آنجام Update و یا Delete پردازشگر سرور یا همان Server Process دادهها را از روی دیسک به Buffer Cache منتقل میکند و دادههای منتقل شده را تا پس از پایان تغییرات Lock میکند. که این عمل باعث میشود تا دیگر کاربران نتوانند روی این دادهها تغییرات ایجاد کنند. برای انجام Insert این بار Server Process یک Block خالی را از روی دیسک انتخاب کرده و اطلاعات جدید را بر روی آن قرار میدهد. در کنار انجام شدن این پردازش، پردازش Undo Segment نیز انجام میشود که اطلاعات قدیمی و جدید را ذخیره میکند.
▪ Generate Redo Information
با توجه به مطالبی که قبلا با هم مرور کردیم، Redo Log Buffer تغییراتی را که روی دادهها انجام میشود را ذخیره میکند. بعد از انجام و تغییرات روی دادهها که توسط DML انجام گرفته است حالا نوبت User Process میباشد که یک Redo Entry را در داخل Redo Log Buffer بنویسد. بدین ترتیب اراکل میتواند در مواقعی که دادهها از بین میروند و یا اینکه خراب میشوند، آنها را بازیابی کند. این Redo Entry ها بعدا بر روی دیسک ذخیره میشوند.
▪ Moving Data Changes From Memory To Disk
بعد از تغییرات دادهها و پایان اجرای دستورات، دادههای تغییر داده شده در Buffer Cache باید به روی دیسک انتقال داده شوند. به بافرهای تغییر کرده درون بافر اصطلاحا Dirty میگویند. همچنین اطلاعات در مورد تغییراتی که بر روی دادهها انجام شده است نیز در Redo Log Buffer وجود دارد. با ساختن تمام این تغییرات در حافظه اراکل قادر خواهد بود تا با سرعت بیشتری به DML Statement ها جواب دهد. به دلیل اینکه پیاده سازی و تغییرات بر روی حافظه سریع تر از ایجاد تغییرات بر روی دیسک میباشد.
و دلیل دیگر این است که کاربر دیگر نیازی ندارد تا منتظر انتقال دادههای ذخیره شده بر روی دیسک باشد. اراکل با اجرای دو پردازش در پشت صحنه تمام وظائف بالا را انجام میدهد.این دو پردازش DBW۰, LGWR نام دارند که کار انتقال دادهها از روی Buffer Cache و Redo Log Buffer را بر روی دیسک انجام میدهد. این پردازشها Asynchronous هستند بدین معنی که این پردازشها گاهی بعد از این که کاربران تغییرات را انجام میدهند بر روی دیسک نوشته میشود.
▪ Role of DBW
Data Base Writer Process نامیده میشود که وظیفه آن انتقال Dirty Data Block ها از روی بافر به روی دیسک میباشد. این پردازش در ورژنهای قبلی اراکل DBWR نامیده میشد که در ورژنهای جدید به علت وجود چندین Database Writer Process دیگر به کار برده نمیشود.
این پردازش به یکی از دلائل زیر انجام میشود:
۱) وقتی که Server Process به فضای بیشتری در Buffer Cache برای خواندن اطلاعات بیشتری احتیاج دارد.
۲) وقتی که LGWR به DBW۰ دستور نوشتن بدهد.
۳) هر سه ثانیه و زمانی که تعداد Dirty Buffer ها به مقدار بحرانی برسد.
ـ نکته: مسالهای که LGWR به DBW۰ دستور نوشتن میدهد، Check Point میباشد. عدد صفر در DBW۰میتواند بین ۰ تا ۹ تغییر کند. پس اراکل میتواند تا ۱۰ پردازش از DBW۰ را داشته باشد.
▪ Role of LGWR
Log Writer Process نامیده میشود که Redo Entry ها را از Redo Log Buffer در حافظه بر روی دیسک منتقل کند.
این پردازش به یکی از دلائل زیر انجام میشود:
۱) وقتی که یک تراکنش به طور کامل انجام شود.
۲) وقتی که یک سوم از Redo Log Buffer پر شده باشد.
۳) قبل از اینک DBW۰ دادهها را از روی حافظه بر روی دیسک بنویسد.
▪ Stages In Commit Process
با استفاده از دستور Commit تمام تغییراتی که توسط کاربر بر روی دادهها در سطح User Process انجام شده است حالت پایدار پیدا میکنند. با استفاده از rollback تغییرات روی دادهها منسوخ میشوند وUndo Segment روشی است که اراکل با نگهداری یک کپی از دادههای قدیمی و نگهداری آنها در Undo Segment، اراکل میتواند تغییرات را فسخ کند. این کار تا زمانی قابل انجام میباشد که Commit انجام نشده باشد.
ـ نکته: استفاده از Commit دلالت بر نوشته شدن تغییرات ایجاد شده توسط کاربر بر روی دیسک ندارد. فقط در زمانهایی که در بالا گفته شد DBW۰ دادهها را بر روی دیسک مینویسد.در زمان Commit کارهای زیر انجام میپذیرد:
۱) آزاد کردن تمام سطرهایی که قفل شدهاند. بعد از آزاد شدن آنها کاربران دیگر میتوانند در آن تغییرات ایجاد کنند.
۲) آزاد کردن Undo Segment که توسط User Transaction قفل شده است.
۳) ایجاد یک Redo Entry توسط User Process در زمانی که Commit انجام میشود.
▪ Sys,System And Data Dictionary
sys, system دو کاربری هستند که اراکل در زمان ایجاد پایگاه داده آنها را ایجاد میکند. این دو کاربر قابلیت مدیریت پایگاه داده اراکل را دارند. کاربر SYS مهمتر میباشد زیرا مالکیت system table های اراکل را که دیکشنری دادهها نیز از آنجا مشتق میشود را نیز داراست.
Oracle Data Dictionary نیز یکی از منابع سیستم میباشد که به منظور کسب اطلاع از هر چیزی در پایگاه شما به کار میرود. در بحث View از اراکل دو عنوان پایهای وجود دارد.یک دسته انهایی هستند که اطلاعاتی راجع به Object های پایگاه داده به شما میدهند که به آنها Data Dictionary Views گفته میشود و یک سری از آنها اطلاعاتی را راجع به کارایی کل سیستم به شما بر مگردانند که به آنها Dynamic Performance Views گفته میشود .References : Oracle Database Fundamentals