Обязательство по сокращению использования временного табличного пространства - PullRequest
0 голосов
/ 21 января 2020

У меня есть большая вставка таблицы как часть работы по составлению отчетов. Для простоты разработки я сделал одну вставку с одним выделением, вместо того, чтобы разбивать его на несколько коммитов.

    insert /*+ parallel(AUTO) */ into sc_session_activity_stage1(fiscal_year
                                        ,fiscal_quarter_id
                                        ,date_stamp
                                        ,time_stamp
                                        ,session_key
                                        ,activity_call_type_key
                                        ,user_key
                                        ,device_key
                                        ,url_key
                                        ,ref_url_key
                                        ,event_key
                                        ,page_type_key
                                        ,link_url_key
                                        ,component_key
                                        ,content_trace_key
                                        ,key) (
        select  /*+ parallel(AUTO) */ 
                schfql.fiscal_year fiscal_year
                ,schfql.fiscal_quarter_id fiscal_quarter_id
                ,pkg_sc_portfolio_load.sc_datestamp_from_epoch(swa.time_stamp)
                ,swa.time_stamp time_stamp
                ,schuse.session_key session_key
                ,schact.activity_call_type_key  activity_call_type_key
                ,schu.user_key user_key
                ,schde.device_key device_key
                ,schurl_url.url_key url_key
                ,schurl_ref.url_key ref_url_key
                ,schev.event_key event_key
                ,schapt.page_type_key page_type_key
                ,schurl_link_url.url_key link_url_key
                ,schwac.component_id component_id
                ,schti_content_unique_id.trace_id_key content_unique_id_trace_id_key
                ,schti_unique_id.trace_id_key unique_id_trace_id_key 
    from web_activity swa
        inner join sc_fiscal_quarter_list schfql
        on pkg_sc_portfolio_load.sc_datestamp_from_epoch(swa.time_stamp) between schfql.start_date and schfql.end_date
        inner join sc_user_sessions schuse
    on schuse.session_id = swa.session_id
        inner join sc_activity_call_types schact
        on schact.activity_call_type_name =  swa.calltype
        inner join sc_users schu
        on schu.user_email = sc_normalize_email(swa.userid)
        inner join sc_devices schde
        on swa.device=schde.device and 
           swa.ip=schde.source_ip and
           swa.operation_system = schde.operating_system and
           swa.browser = schde.browser
        left join sc_urls schurl_url 
        on schurl_url.full_url = trim(swa.url)
        inner join sc_events schev
        on schev.event=trim(swa.event)
        inner join sc_activity_page_types schapt
        on schapt.page_type_name=swa.pagetype
        left join sc_urls schurl_link_url 
        on schurl_link_url.full_url = trim(swa.linkurl)
        left join sc_urls schurl_ref
        on schurl_ref.full_url = trim(swa.ref)
        inner join sc_web_activity_components schwac
        on schwac.component_name=trim(swa.component)
        left join sc_trace_ids schti_content_unique_id
        on schti_content_unique_id.alfresco_trace_id = swa.CONTENT_UNIQUE_ID
        left join sc_trace_ids schti_unique_id
    on schti_unique_id.alfresco_trace_id=swa.UNIQUE_ID
    );
    commit;

На производстве это вызывает аварийные сигналы для табличного пространства TEMP. Если бы я разделил вышеупомянутое на несколько коммитов, это уменьшило бы использование TEMP в любой момент времени? Это может быть очевидным для некоторых, но я не уверен, как работает Oracle. Я не вижу никаких ошибок типа ORA, скорее срабатывает какой-то порог, и кто-то из команды DBA отправляет электронное письмо.

Спасибо от Вудсмана.

1 Ответ

0 голосов
/ 22 января 2020

Обрывы табличного пространства TEMP распространены и могут быть устранены путем увеличения табличного значения TEMP И / ИЛИ настройки SQL для использования меньшего количества TEMP. Для настройки: обычно я начинаю с рекомендаций SQL Tuning Advisor (требуется диагностика и пакет настроек). КСТАТИ: Использование TEMP увеличивается с параллельными запросами и также в основном указывается c для части SELECT. Вы также можете уменьшить использование табличного пространства TEMP, делая больше в памяти (т.е. увеличивая PGA).

...