قابلیت In-Memory Advisor با تحلیل workload دیتابیس تلاش می کند برای In-Memory sizeهای مختلف، DB-Time را تخمین بزند و همچنین می تواند پیشنهاد کند کدام یک از objectها در In-Memory قرار بگیرند.
برای استفاده از این قابلیت، باید از پکیج DBMS_INMEMORY_ADVISE استفاده کرد نحوه اجرای In-Memory Advisor، بسیار مشابه قابلیت Privilege Analysis است و برای گرفتن advise در زمینه In-Memory هم ابتدا باید taskای را start کنیم و زمانی که احساس شد workload دیتابیس به اندازه کافی از دیدگاه In-Memory مورد تحلیل قرار گرفته، این Task را متوقف و نتیجه گزارش را ببینیم.
در ادامه با جزییات بیشتری نحوه ایجاد این گزارش را با هم خواهیم دید.
در قدم اول باید برای استفاده از بسته DBMS_INMEMORY_ADVISE، قابلیت Heat MAP را فعال کنیم:
SQL> exec dbms_inmemory_advise.start_tracking(:task_id);
ORA-20000: Heat map is not enabled.
ORA-06512: at "SYS.PRVT_DBMS_INMEMORY_ADVISOR", line 1578
ORA-06512: at "SYS.PRVT_DBMS_INMEMORY_ADVISOR", line 1667
ORA-06512: at "SYS.DBMS_INMEMORY_ADVISE", line 191
ORA-06512: at line 1
Help: https://docs.oracle.com/error-help/db/ora-20000/
SQL> ALTER SYSTEM SET HEAT_MAP = ON;
System altered.
در قدم بعدی، Taskای را با استفاده از پروسیجر DBMS_INMEMORY_ADVISE.START_TRACKING استارت می کنیم:
PROCEDURE START_TRACKING Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- TASK_ID NUMBER OUT
SQL> variable task_id NUMBER;
SQL> exec dbms_inmemory_advise.start_tracking(:task_id);
PL/SQL procedure successfully completed.
SQL> print task_id TASK_ID
---------- 1
برای تست، workloadای را در دیتابیس شبیه سازی می کنیم:
SQL> declare
a number;
b number;
begin
for i in 1..100000 loop
select sum(LINE) into a from tbl1;
end loop;
end;
/
در مرحله بعدی، Task را متوقف می کنیم:
SQL> exec dbms_inmemory_advise.stop_tracking;
PL/SQL procedure successfully completed.
در پایان برای ایجاد advise پروسیجر dbms_inmemory_advise.generate_advise اجرا می کنیم:
SQL> exec dbms_inmemory_advise.generate_advise;
PL/SQL procedure successfully completed.
برای مشاهده خروجی می توانیم از ویوی DBA_INMEMORY_ADVISOR_RECOMMENDATION استفاده کنیم:
select task_id,INMEMORY_SIZE,ESTIMATED_DB_TIME_LOW,ESTIMATED_DB_TIME_HIGH,ESTIMATED_DB_TIME_ANALYTICS_LOW,ESTIMATED_DB_TIME_ANALYTICS_HIGH,to_char(RECOMMENDED_OBJ_LIST) RECOMMENDED_OBJ_LIST from DBA_INMEMORY_ADVISOR_RECOMMENDATION ;

در خروجی می بینیم که اگر جدول TBL1 به In-Memory منقل شود، به چه اندازه از DB_TIME کاسته خواهد شد و همچنین سایز In-Memory هم پیش بینی می شود:
TASK_ID 1
INMEMORY_SIZE 25231360
ESTIMATED_DB_TIME_LOW 75
ESTIMATED_DB_TIME_HIGH 145
ESTIMATED_DB_TIME_ANALYTICS_LO 69
ESTIMATED_DB_TIME_ANALYTICS_HI 139
RECOMMENDED_OBJ_LIST Owner: USEF Table: TBL1 ;
ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور......................
تلفن: 09128110897
ایمیل:[email protected]
تالار های تخصصی...
ما را در سایت تالار های تخصصی دنبال میکنید
برچسب: نویسنده: خنجی بازدید: 24 تاريخ: چهارشنبه 27 تير 1403 ساعت: 17:52