در مطلب قبلی در مورد OFA و نامگذاری و ایجاد دایرکتوری ها صحبت کردیم. همچنین توضیح دادیم که کدام گروه ها و کاربر ها باید ایجاد شوند. در این مطلب می خواهیم در مورد پارامترهای هسته لینوکس صحبت کنیم که باید مقدار دهی شوند. توجه کنید که این مطلب خاص سیستم عامل لینوکس است و اگر از ویندوز استفاده می کنید می توانید از این مطلب گذر کنید.

برای درک بهتر این مطالب شما باید تا اندازه ای با سیستم عامل لینوکس آشنا باشید ولی سعی می کنیم در حد دوره اوراکل و تا اندازه ای که مطالب گیج کننده نشوند، هر یک از پارامترها را توضیح دهیم. برای نصب اوراکل می توانید از توزیع های لینوکسی Redhat و توزیع های مبتنی بر آن مانند CentOS و Oracle Linux استفاده کیند ولی پیشنهاد می کنیم از Oracle Linux استفاده کنید زیرا هسته این توزیع لینوکسی توسط اوراکل برای اجرای پایگاه داده اوراکل سفارشی شده است.

درک مطالب این سایت ممکن است برای شما کمی برای شما سخت باشد، پس در این صورت به مطلب انتهایی “جمع بندی پارامترهای لازم برای نصب اوراکل” بروید و طبق راهنما آنها را اعمال کنید. برای اطلاع بیشتر می توانید این لینک را برای اوراکل 11gr2 بخوانید.

پارمترهای سیستم فایل

۱ – fs.aio_max_nr

پارامتر fs.aio_max_nr حداکثر تعداد درخواست های خواندن و نوشتن غیر همگام () بر روی سرور لینوکسی را تعیین می کند. اگر شما این پرامتر را هنوز تعیین نکردید، خود لینوکس آنرا تعیین کرده است. برای مشاهده مقدار فعلی آن می توانید دستور زیر را اجرا کنید.

حداقل پیشهناد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۱۰۴۸۵۷۶ برای آن تعیین شود. اگر این پارامتر با مقدار نامناسب و غیر از حداقل پشنهاد اوراکل مقدار دهی شود، ممکن است خطای زیر نشان داده شود.

۲ – fs.file-max

پارامتر fs.file-max حداکثر تعداد توصیف کننده های (file descripror) مجاز را نشان می دهد. هر توصیفگر فایل، به یک فایل بازشده اشاره دارد، پس fs.file-max تعیین می کند در سرور لینوکس، به صورت حداکثر چه تعداد فایل باز می تواند وجود داشته باشد.

حداقل پیشهناد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۶۸۱۱۵۷۴۴ برای آن تعیین شود. از دستور زیر نیز می توانید مقدار فعلی آنرا مشاهده کنید.

سمافور – Semaphore

در مفاهیم سیستم عامل، سمافورها (semaphore) متغیرهایی هستند که به عنوان یک شمارنده (counter) برای استفاده از منابع اشتراکی (مانند یک فرایند) توسط چندین فرایند، استفاده می شوند. سمافور متغیری است که به صورت مستقیم توسط فرایند قابل استفاده نیست. اگر مقدار سمافور بزرگتر از عدد صفر است، پس منبع آزاد و در دسترس است ولی اگر سمافور صفر باشد، پس به معنی اِشغال بودن منبع است.

اگر نام سمافور را s در نظر بگیریم، هر زمان که یک فرایند به منبعی نیاز داشته باشد، پس تابع (wait_for (s را فراخوانی می کند و سیستم عامل یک واحد از سمافور کم خواهد کرد. اگر مقدار سمافور صفر باشد، پس فرایند بلاک می شود تا زمانی که یک فرایند دیگر، منبع را آزاد کند. هر زمان که فرایند دیگری منبع را آزاد کند، سیستم عامل مقدار سمافور را یکی افزایش می دهد و سپس تابع (signal_semaphore_available(s فراخوانی می شود به این معنی که سمافور در دسترس است.

در ادامه چهار پارامتر را توضیح می دهیم که مقدار فعلی هر چهار پارامتر را می توانید به ترتیب از فایل زیر مشاهده کنید.

۱ – پارامتر semmsl

پارامتر semmsl تعداد سمافورهای درون هر semaphore set را تعیین می کند. semaphore set ساختاری است که شامل گروهی از سمافورها می شود.

حداقل پیشهناد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۲۵۰ برای آن تعیین شود.

۲ – پارامتر semmns

پارامتر semmns حداکثر تعداد سمافورهای قابل اجازه بر روی سرور لینوکسی را تعیین می کند.

حداقل پیشهناد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۳۲۰۰۰ برای آن تعیین شود.

۳ – پارامتر semopm

پارامتر semopm حداکثر تعداد عملیات های ممکن به ازای هر فراخوانی ()semopt را که توسط سمافورهای قابل اجازه است را تعیین می کند. برای اطلاع بیشتر لطفا دستور man semopt را اجرا کنید.

حداقل پیشهناد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۱۰۰ برای آن تعیین شود.

۴ – پارامتر semmni

پارامتر semmni حداکثر تعداد semaphore set مجاز بر روی سرور لینوکسی را نشان می دهد.

حداقل پیشهناد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۱۲۸ برای آن تعیین شود.

پارمترهای هسته و حافظه اشتراکی

حافظه اشتراکی چیست

حافظه اشتراکی (shared memory) ناحیه ای از حافظه اصلی است که میان فرایندها به اشتراک گذاشته می شود. اوراکل از حاظفه اشتراکی لینوکس برای پیاده سازی SGA استفاده می کند که میان تمامی فرایندهای پس زمینه به اشتراک گذاشته می شود.

بنابراین تنظیم پارمترهای حافظه اشتراکی برای راه اندازی instance اوراکل بسیار اهمیت دارد و اگر به درستی تنظیم نشوند، instance نمی تواند آغاز شود. زمانی که instance آغاز می شود، فایل init.ora را می خواند و سپس بر اساس پارامترهای تعریف شده در آن میزان فضای SGA و سمافور (sempahore) را تعیین می کند. خود SGA به چهر قسمت زیر تشکیل می شود:

۱ – Fixed Area که ناحیه ای با اندازه ثابت است.

۲ – Variable Area که ناحیه ای با اندازه متغیر است و بر اساس پارامترهای درون init.ora تعیین می شود.

۳ – buffer block که بر اساس پارامتر db_buffer_size تعیین می شود.

۴ – online redo buffer که بر اساس پارامتر log_bufferz تعیین می شود.

اختصاص حافظه اشتراکی

زمانی که اوراکل سعی می کند برای instance فضای اشتراکی اختصاص دهد به ترتیب زیر سعی می کند تا نهایتا موفق شود به یکی از روش زیر این کار را انجام دهد. در صورتی که نتواند در نهایت بر اساس یکی از سه روش زیر حافظه اشتراکی را اختصاص دهد، خطای ORA صادر خواهد شد.

۱- اختصاص حافظه اشتراکی یک سگمنت one-segment shared memory allocation

۲ – اختصاص حافظه اشتراکی چند سگمنت پیوسته contigous multi-segment

۳ – اختصاص حافظه اشتراکی چند سگمنت ناپیوسته non-contigous multi-segment

اوراکل اول سعی می کند از مدل one segment برای اختصاص حافظه اشتراکی استفاده کند. در این حالت کل SGA در یک سگمنت از حافظه اشتراکی مقیم خواهد شد. به عبارت دیگر اوراکل سعی می کند تا یک سگمنت حافظه اشتراکی را به اندازه SGA اختصاص دهد.

۱ – پارامتر shmmax

پارامتر shmmax در لینوکس حداکثر اندازه سگمنت را تعیین می کند. اگر اندازه SGA بشتر از shmmax باشد، پس اوراکل روش one segment را رها می کند و به سراغ روش contigous multi-segment می رود.

حداقل پیشنهاد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۵۳۶۸۷۰۹۱۲ برای آن تعیین شود. از دستور زیر نیز می توانید مقدار فعلی آنرا مشاهده کنید.

اگر اوراکل نتواند SGA را در یک سگمنت حافظه اشتراکی قرار دهد، پس از روش /proc/sys/kernel/shmmax استفاده خواهد کرد. در این حالت اوراکل سعی می کند تا SGA را در سگمنت های به هم پیوسته و به تعداد sgasize/shmmax قرار دهد.

در نهایت اگر اوراکل نتواند SGA را در سگمنت های به هم پیوسته قرار دهد، پس به سراغ روش non-contigous multi-segment می رود. در این روش اوراکل SGA را در سگمنت های از هم گسسته و بع تعداد sgasize/shmmax قرار می دهد.

۲ – پارامتر shmmin

پارامتر shamin حداقل تعداد سگمنت های موجود بر روی حافظه اشتراکی را تعیین می کند. با استفاده از دستور زیر می توانید مقدار فعلی را مشاهده کنید.

حداقل پیشنهاد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۴۰۹۶ برای آن تعیین شود. از دستور زیر نیز می توانید مقدار فعلی آنرا مشاهده کنید.

۳ – پارامتر shmall

حداکثر تعداد صحفه های از کل حافظه اشتراکی را نشان می دهد که می تواند بر روی سرور وجود داشته باشد. پارامتر shmall حداقل تعداد سگمنت های موجود بر روی حافظه اشتراکی را تعیین می کند. با استفاده از دستور زیر می توانید مقدار فعلی را مشاهده کنید.

حداقل پیشنهاد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقدار ۲۰۹۷۱۵۲ برای آن تعیین شود. از دستور زیر نیز می توانید مقدار فعلی آنرا مشاهده کنید.

پارامترهای شبکه

۱ – ip_local_port_range

پارامتر ip_local_port_range  محدوه (یا range) پورت های TCP (یا TCP Ports) را تعیین می کند. در سرورهایی که بار زیادی روی ترافیک شبکه است، لازم است تا محدود پورت ها افزایش پیدا کنند. پارامتر ip_local_port_range دو مقدار حداقل و حداکثر محدوده پورت ها را نشان می دهد. از دستور زیر می توانید مقادیر پیشفرض آنرا مشاهده کیند.

 حداقل پیشنهاد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده تا مقادبر ۹۰۰۰ برای حداقل و ۶۵۵۰۰ برای حداکثر  تعداد پورت ها، برای آن تعیین شود. از دستور زیر نیز می توانید مقدار فعلی آنرا مشاهده کنید.

۲ – پارامتر rmem_default

پارامتر rmem_default اندازه پیشفرض بافر دریافت سوکت (receive socket buffer) را بر حسب بایت تعیین می کند. قاعدتا کلاینت ها از طریق شبکه به سرور اوراکل متصل می شود و برقراری این ارتباط از طریق سوکت ها استفاده می شود. پارامتر rmem_default در ساده ترین تعریف اندازه پیشفرض بافر سوکت را تعیین می کند.

حداقل پیشنهاد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده است تا مقدار ۲۶۲۱۴۴ بایت برای آن تعیین شود. از دستور زیر نیز می توانید مقدار فعلی آنرا مشاهده کنید.

۳ – پارامتر rmem_max

پارامتر rmem_max حداکثر اندازه بافر دریافت دیافت (receive socket buffer) را بر حسب بایت تعیین می کند. از دستور زیر می توانید برای مشاهده مقدار فعلی آن استفاده کنید.

حداقل پیشنهاد اوراکل : طبق مستندات اوراکل 11gr2 پشنهاد شده است تا مقدار ۴۱۹۴۳۰۴ بایت برای آن تعیین شود.

۴ – wmem_max

پارامتر wmem_default اندازه پیشفرض بافر دریافت ارسال سوکت (send socket buffer) را بر حسب بایت تعیین می کند. از دستور زیر می توانید برای مشاهده مقدار فعلی آن استفاده کنید.

۵ – پارامتر wmem_max

پارامتر wmem_max حداکثر اندازه بافر ارسال سوکت (send socket buffer) را بر حسب بایت تعیین می کند. از دستور زیر می توانید برای مشاهده مقدار فعلی آن استفاده کنید.

جمع بندی پارامترهای لازم برای نصب اوراکل

اگر مطالب بالایی را درک نکردید یا هدف آنها را برای اجرای بهینه و کارآمد اوراکل درک نکردید، هیچ مشکلی ندارد زیر این بحث ها در مورد برنامه نویسی و معماری خود اوراکل می شود. بنابراین بدون توجه به هدف آنها باید پارامترها را با حداقل مقادیر پشنهادی اوراکل درون فایل etc/sysctl.conf/ کپی کنیم.

و در نهایت دستور زیر را اجرا کنید.