artarad-oracle-database

محدودیت Instance به منظور مدیریت استفاده از منابع CPU در پایگاه داده اوراکل نسخه ۱۱gr2

محدودیت Instance به منظور مدیریت استفاده از منابع CPU در پایگاه داده اوراکل نسخه ۱۱gr2
در شرایطی که چندید پایگاه داده در یک سرور وجود دارند مدیریت منابع CPU می تواند به مشکل غامضی تبدیل شود به این دلیل که در صورت دریافت تمام منابع CPU توسط یک پایگاه داده تاثیر منفی روی عملکرد دیگر پایگاه داده ها خواهد داشت.
شیوه محدود سازی Instance قابلیت نوینی در اوراکل نسخه ۱۱gr2 Enterprise است که به راحتی مدیریت منابع CPU در محیط های یگانه را فراهم می‌آورد.


به وسیله فعال نمودن Resource Manager و تنظیم پارامتر CPU_COUNT در هر Instance می‌توان حداکثر میزان قابل استفاده از CPU/Core را برای هر Instance مشخص نمود.

فعال‌سازی Resource Manager
از نسخه ۸i اوراکل به طور مداوم Resource Manager انتشار یافته است. Resource Manager به طور پیش فرض فعال نیست. به همین دلیل با اختصاص یک برنامه ریزی منابع پیش از اعمال محدودیت Instance می توان آن را فعال نمود. در اوراکل تعدادی برنامه ریزی منابع از پیش آماده وجود دارد.

SELECT plan FROM dba_rsrc_plans;

PLAN

——————————

DEFAULT_PLAN

INTERNAL_QUIESCE

INTERNAL_PLAN

APPQOS_PLAN

DEFAULT_MAINTENANCE_PLAN

ETL_CRITICAL_PLAN

MIXED_WORKLOAD_PLAN

ORA$AUTOTASK_SUB_PLAN

ORA$AUTOTASK_HIGH_SUB_PLAN

DSS_PLAN

۱۰ rows selected.

SQL>

در صورتی که هیچ برنامه ریزی منابع خاصی در اختیار ندارید می‌توان از برنامه پیش‌فرض استفاده نمود.

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = default_plan;

به خاطر داشته باشید که حداکثر بهره‌برداری هر گروه مصرف کننده در یک برنامه‌ریزی منابع توسط پارامتر CPU_COUNT و متناسب با تعداد CPU مختص یک Instance تعیین می‌شود.
اگر یک گروه مصرف کننده به میزان ۵۰٪ از کل منابع محدود شده باشد و پارامتر CPU_COUNT روی ۲ تنظیم شده باشد در این صورت گروه مصرف کننده از یک CPU استفاده خواهد نمود.
به خاطر داشته باشید زمانی از برنامه ریزی منابع استفاده نمایید که نیاز به کنترل استفاده از منابع CPU در Instance دارید.

تنظیم CPU_COUNT
با مدیریت منابع فعال باید برای هر Instance فعال روی سرور پارامتر CPU_COUNT تنظیم شود. پارامتر CPU_COUNT یک پارامتر پویا است ولی پیشنهاد به تغییر زیاد آن و یا تنظیم مقدار بالا برای آن نمی‌شود.

ALTER SYSTEM SET cpu_count = 2;

تنظیم پارامتر تا حدودی ساده است ولی باید مقداری در خصوص مقدار پارامتر بررسی شود. دو دیدگاه اصلی در این خصوص وجود دارد.
– تامین بیش از نیاز: در این رویکرد به هر Instance مقداری پایین‌تر از تعداد کل CPU های سرور اختصاص داده می‌شود ولی در مجموع تمام Instance ها به مقداری بیش از تعداد کل CPU های سرور خواهد رسید. در این حالت از اختصاص تمام منابع CPU به یک Instance جلوگیری خواهد شد ولی در صورتی که تمام Instance ها دارای Load بالایی باشند امکان عدم سرویس‌دهی به آن‌ها وجود دارد.
– قطعه‌بندی: در این رویکرد مجموع مقادیر پارامتر CPU_COUNT تمامی Instance های سرور کمتر یا برابر مجموع CPU های سرور است. در این حالت هیچ Instance روی کارایی Instance دیگر تاثیری نخواهد داشت.
در تصویر زیر مثالی از دو رویکرد فوق در یک سرور با تعداد ۸ CPU آورده شد.

artarad_oracle_cpu1

میزان CPU_COUNT برای هر Instance به میزان نیازهای آن متغیر خواهد بود.

artarad_oracle_cpu2

نظارت بر محدودیت Instance ها
تاثیرات مدیریت منابع توسط ستون‌های CONSUMED_CPU_TIME و CPU_WAIT_TIME در View های زیر قابل بررسی است:

• V$RSRC_CONSUMER_GROUP

• V$RSRCMGRMETRIC_HISTORY

ستون CONSUMED_CPU_TIME میزان CPU_COUNT مصرف شده توسط گروه مصرف کننده براساس میلی ثانیه و CPU_WAIT_TIME مقدار زمان انتظار برای منابع CPU است.

SELECT name, consumed_cpu_time, cpu_wait_time

FROM v$rsrc_consumer_group;

NAME CONSUMED_CPU_TIME CPU_WAIT_TIME

——————————– —————– ————-

SYS_GROUP 45155 226

OTHER_GROUPS 310 4

ORA$AUTOTASK_MEDIUM_GROUP 23805 864

ORA$AUTOTASK_URGENT_GROUP 3777 17

ORA$AUTOTASK_STATS_GROUP 0 0

ORA$AUTOTASK_SPACE_GROUP 0 0

ORA$AUTOTASK_SQL_GROUP 0 0

ORA$AUTOTASK_HEALTH_GROUP 0 0

ORA$DIAGNOSTICS 375 13

_ORACLE_BACKGROUND_GROUP_ 0 0

۱۰ rows selected.

SQL>

ALTER SESSION SET nls_date_format=’DD-MON-YYYY HH24:MI:SS’;

SET LINESIZE 100

SELECT begin_time,

consumer_group_name,

cpu_consumed_time,

cpu_wait_time

FROM v$rsrcmgrmetric_history

ORDER BY begin_time;

BEGIN_TIME CONSUMER_GROUP_NAME CPU_CONSUMED_TIME CPU_WAIT_TIME

——————– —————————— —————– ————-

.

.

.

۰۳-NOV-2012 14:31:20 ORA$AUTOTASK_HEALTH_GROUP 0 0

۰۳-NOV-2012 14:31:20 ORA$DIAGNOSTICS 0 0

۰۳-NOV-2012 14:31:20 ORA$AUTOTASK_STATS_GROUP 0 0

۰۳-NOV-2012 14:32:20 SYS_GROUP 515 0

۰۳-NOV-2012 14:32:20 OTHER_GROUPS 0 0

۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_MEDIUM_GROUP 0 0

۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_URGENT_GROUP 0 0

۰۳-NOV-2012 14:32:20 _ORACLE_BACKGROUND_GROUP_ 0 0

۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_SPACE_GROUP 0 0

۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_SQL_GROUP 0 0

۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_HEALTH_GROUP 0 0

۰۳-NOV-2012 14:32:20 ORA$DIAGNOSTICS 0 0

۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_STATS_GROUP 0 0

۴۲۰ rows selected.

SQL>

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *