فایل های online redo log بر روی دیسک ذخیره می شوند و در صورت از کار افتادن آن دیسک، فرایند LGWR نمی تواند بر روی آن بنویسد. بنابراین باید راهکاری را برای پوشش دادن این مشکل در نظر بگیریم. پاسخ به این مشکل استفاده از مالتی پلکس کردن (multiplexing) فایل های online redo log است به طوری که دو یا چند کپی یکسان از یک فایل online redo log بر روی دیسک های متفاوت نگهداری شوند.

زمانی که فایل online redo log را به صورت مالتی پلکس استفاده می کنیم، فرایند LGWR به صورت همزمان بر روی فایل های online redo log همسان (کپی های یکسان) می نویسد. استفاده از مالتی پلکس کردن یک فایل ریدولاگ باعث از بین رفتن مشکل single point of failure (یا تک نقطه شکست) می شود.

مفهوم گروه و مالتی پلکس کردن

برای مالتی پلکس کردن فایل های ریدولاگ باید از مفهوم گروه ها استفاده شود. یک گروه (redo log group) متشکل از یک فایل online redo log و کپی های یکسان از همان فایل است. بنابراین فرایند LGWR بر روی تمامی فایل های online redo log متعلق به یک گروه به صورت همزمان می نویسد. هر کدام از فایل های online redo log که عضو یک گروه هستند قاعدتا باید بر روی دیسک متفاوتی قرار داشته باشند. به هر گروه نیز یک عدد منحصر به فرد ۱ و ۲ و … اختصاص داده می شود.

اگر به یاد داشته باشد تمامی گروه های درون یک instace متعلق به یک نخ هستند که این نخ با یک شماره منحصر به فرد #thraed شناخته می شود. بنابراین اگر فرض کنیم تنها یک instance داشته باشیم و این instance دارای چهار گروه با شماره های ۱ و ۲ و ۳ و ۴ باشد، به صورت پیشفرض هر گروه دارای یک عضو یا یک فایل online redo log است. همچنین تمامی این گروه ها متعلق به یک نخ هستند.

در شکل زیر (۲) دو عدد گروه به نام های Group1 و Group2 وجود دارد. هر یک دو عضو یعنی دو فایل online redo log دارند. هر عضو از هر گروه بر روی یکی از دیسک های DiskA و DiskB قرار دارند. این دقیقا مفهوم مالتی پلکس کردن فایل های online redo log است.

بنابراین اگر یکی از فایل های گروه Group1 از بین برود، فرایند LGWR می تواند همچنان بر روی فایل دیگر بنویسد و در واقع مشکل تک نقطه شکست را پوشش داده ایم. فرایند LGWR در هر لحظه تنها و تنها بر روی یکی از گروه می نویسد. ولی همزمان بر روی تمامی اعضای یک گروه خواهد نوشت. زمانی که نوشتن بر روی فایل ها یا اعضای یک گروه به اتمام رسید، یک log switch انجام شده و به سراغ گروه بعدی می رود.

توجه کنید که تمامی اعضای یک گروه، یک سری اطلاعات یکسان را دارند و فرایند LGWR به صورت همزمان بر روی تمامی آنها می نویسد. به طور مثال فرایند LGWR اول بر روی عضور A_LOG1 از گروه Group1 می نویسد و در همین لحظه بر روی دومین عضو از گروه Group1 یعنی B_LOG1 هم می نویسد.

فرایند LGWR هرگز همزمان بر روی اعضای دو گروه نمی نویسد و تنها و تنها در یک لحظه بر روی یک گروه و اعضای همان گروه می نویسد.

عدم دسترسی فرایند LGWR به یک عضو از گروه

اگر عضوی از یک گروه مانند عضو A_LOG1 از گروه Group1 در دسترس فرایند LGWR نباشد چه اتفاقی رخ خواهد داد؟ در این حالت پایگاه داده وضعیت آن عضو را به invalid تغییر می دهد و پیغام خطایی را درون trace file فرایند LGWR و فایل alert log پایگاه داده درج می کند مبنی بر اینکه فایل غیر قابل دسترس است.

مفهوم Trace File در اوراکل

در پاسخ به این عدم دسترسی به یک فایل online redo log که عضوی از یک گروه است موارد زیر وجود دارند که بسته به آنها یکی از مواردزیر توسط فرایند LGWR انجام می شود.

حالت اول – فرایند LGWR می تواند حداقل بر روی یکی دیگر از اعضای گروه می تواند بنویسد. در این حالت فرایند LGWR فایل online redo log غیر قابل دسترس (عضو غیر قابل دسترس) را در نظر نمی گیرد و بر روی دیگر اعضای گروه رکوردهای online redo log را می نویسد.

حالت دوم – فرایند LGWR نمی تواند به گروه بعدی (و قاعدتا اعضای آن) دسترسی داشته باشد زیر گروه در حالت آرشیو شدن است و تا زمانی که گروه به طور کامل و موفقیت آرشیو نشود فرایند نمی تواند روی اعضای آن بنویسد. در این حالت عملیات پایگاه داده موقتا متوقف می شود تا زمانی که گروه در دسترس قرار گیرد به عبارتی عملیات آرشیو سازی گروه به اتمام رسد.

حالت سوم – تمامی اعضای گروه بعدی برای فرایند LGWR به دلیل خطای رسانه، غیر قابل دسترس هستند. در این حالت یک خطا (error) برگشت داده می شود و instace مربوطه از کار می افتد (shutdown می شود). در این حالت برای شکل دادن online redo log های از دست رفته نیاز به یک مدیا ریکاوری است. در این حالت اگر checkpoint متعلق به online redo log از دست رفته باشد، دیگر نیاز به مدیا ریکاوری نیست چونکه تمامی رکوردهای درون online redo log بر روی دیتا فایل (data file) اعمال و به صورت دائمی ذخیره شده اند. اگر پایگاه داده نتواند فایل را آرشیو کند پس باید با دستور alter database clrear logfile unarchived استفاده کنیم تا از آرشیو سازی صرف نظر شود.

حالت چهارم – تمامی اعضای یک گروه به صورت ناگهانی برای فرایند LGWR غیر قابل دسترس می شوند، زمانی که فرایند LGWR در حال نوشتن بر روی آنها است. در این حالت یک خطا (error) برگشت داده می شود و instace مربوطه فورا (immediately) از کار می افتد (shutdown می شود). در این مواقع ممکن است نیاز به انجام مدیا ریکاوری داشته باشیم.