Каталог статей
Меню сайта


Форма входа


Категории раздела
Oracle DB administering [46]
Oracle DB programming [15]
Oracle DB troubleshooting [11]


Поиск


Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0


    Приветствую Вас, Гость · RSS 09.05.2024, 08:36
    Главная » Статьи » Oracle DB » Oracle DB administering

    Running access advisor

    Start advisor task:

    DECLARE
    taskname varchar2(30) := 'SQLACCESS_20160902_1';
    task_desc varchar2(256) := 'SQL Access Advisor';
    task_or_template varchar2(30) := 'SQLACCESS_EMTASK';
    task_id number;
    num_found number;
    sts_name varchar2(256) := 'STS_20160902_1';
    sts_cursor dbms_sqltune.sqlset_cursor;
    BEGIN

    -- in case "invalid number parameter' error need to set NLS parameter:
    EXECUTE IMMEDIATE 'alter session set nls_numeric_characters=''.,''';
    /* Create Task */
    dbms_advisor.create_task(DBMS_ADVISOR.SQLACCESS_ADVISOR,
    task_id,
    taskname);

    /* Reset Task */
    dbms_advisor.reset_task(taskname);

    /* Delete Previous STS Workload Task Link */
    select count(*)
    into num_found
    from user_advisor_sqla_wk_map
    where task_name = taskname
    and workload_name = sts_name;
    IF num_found > 0 THEN
    dbms_advisor.delete_sqlwkld_ref(taskname,sts_name,1);
    END IF;

    /* Delete Previous STS */
    select count(*)
    into num_found
    from user_advisor_sqlw_sum
    where workload_name = sts_name;
    IF num_found > 0 THEN
    dbms_sqltune.delete_sqlset(sts_name);
    END IF;

    /* Create STS */
    dbms_sqltune.create_sqlset(sts_name, 'Obtain workload from cursor cache');

    /* Select all statements in the cursor cache. */
    OPEN sts_cursor FOR
    SELECT VALUE(P)
    FROM TABLE(dbms_sqltune.select_cursor_cache) P;

    /* Load the statements into STS. */
    dbms_sqltune.load_sqlset(sts_name, sts_cursor);
    CLOSE sts_cursor;

    /* Link STS Workload to Task */
    dbms_advisor.add_sqlwkld_ref(taskname,sts_name,1);

    /* Set STS Workload Parameters */
    dbms_advisor.set_task_parameter(taskname,'VALID_ACTION_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'VALID_MODULE_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'SQL_LIMIT','25');
    dbms_advisor.set_task_parameter(taskname,'VALID_USERNAME_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'VALID_TABLE_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'INVALID_TABLE_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'INVALID_ACTION_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'INVALID_USERNAME_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'INVALID_MODULE_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'VALID_SQLSTRING_LIST',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'INVALID_SQLSTRING_LIST','"@!"');

    /* Set Task Parameters */
    dbms_advisor.set_task_parameter(taskname,'ANALYSIS_SCOPE','ALL');
    dbms_advisor.set_task_parameter(taskname,'RANKING_MEASURE','PRIORITY,OPTIMIZER_COST');
    dbms_advisor.set_task_parameter(taskname,'DEF_PARTITION_TABLESPACE',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'TIME_LIMIT', 1200);
    dbms_advisor.set_task_parameter(taskname,'MODE','LIMITED');
    dbms_advisor.set_task_parameter(taskname,'STORAGE_CHANGE',DBMS_ADVISOR.ADVISOR_UNLIMITED);
    dbms_advisor.set_task_parameter(taskname,'DML_VOLATILITY','TRUE');
    dbms_advisor.set_task_parameter(taskname,'WORKLOAD_SCOPE','PARTIAL');
    dbms_advisor.set_task_parameter(taskname,'DEF_INDEX_TABLESPACE',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'DEF_INDEX_OWNER',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'DEF_MVIEW_TABLESPACE',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'DEF_MVIEW_OWNER',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'DEF_MVLOG_TABLESPACE',DBMS_ADVISOR.ADVISOR_UNUSED);
    dbms_advisor.set_task_parameter(taskname,'CREATION_COST','TRUE');
    dbms_advisor.set_task_parameter(taskname,'JOURNALING','4');
    dbms_advisor.set_task_parameter(taskname,'DAYS_TO_EXPIRE','30');

    /* Execute Task */
    dbms_advisor.execute_task(taskname);
    END;


    To get results:

    SELECT DBMS_ADVISOR.get_task_script('SQLACCESS_20160902_2') from dual

    The following request does not work (unimplemented)
    SELECT DBMS_ADVISOR.get_task_report('SQLACCESS_20160902_2') from dual

     

    Related Views

    The following views can be used to display the SQL Access Advisor output without using Enterprise Manager or the get_task_script function:

    • DBA_ADVISOR_TASKS - Basic information about existing tasks.
    • DBA_ADVISOR_LOG - Status information about existing tasks.
    • DBA_ADVISOR_FINDINGS - Findings identified for an existing task.
    • DBA_ADVISOR_RECOMMENDATIONS - Recommendations for the problems identified by an existing task.
    Категория: Oracle DB administering | Добавил: basil (02.09.2016)
    Просмотров: 447 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Бесплатный конструктор сайтов - uCoz