Oracle mechanics

17.08.2018

12.2 Materialized View Refresh Statistics Slowdown

Filed under: 12.2,Oracle — Игорь Усольцев @ 01:24
Tags: ,

Заметно замедлившайся рутинная операция обновления matview в версии Oracle 12.2 указывала, что выполняющая обновление сессия помимо необходимых и понятных операций DELETE+INSERT значительную часть времени проводила в дублирующих общую статистику DBMS_STATS подсчётах Cardinality всех подряд странного набора matview нашей базы: (more…)

Реклама

23.02.2018

Наблюдаемые особенности компиляции Matview курсоров на примере 12c Out-of-Place (OOP) Refresh

Filed under: Oracle — Игорь Усольцев @ 23:45
Tags: ,

В процессе тестирования с Максимом Филатовым Patch 20933264: OUT-OF-PLACE COMPLETE REFRESH NOT USING DIRECT LOAD IN POPULATING OUTSIDE TABLE наблюдали следующее воспроизводимое поведение:

12.1.0.2@ SQL> CREATE MATERIALIZED VIEW scott.EMP_SNAPSHOT2 tablespace users REFRESH complete ON DEMAND as SELECT * FROM "SCOTT"."EMP" join "SCOTT"."DEPT" using(deptno)
  2  /

Materialized view created.

SQL> alter session set events '10979 trace name context forever';

Session altered.

SQL> alter session set events '10046 trace name context forever , level 12';

Session altered.

SQL> exec dbms_mview.refresh('"SCOTT"."EMP_SNAPSHOT2"', method => '?', atomic_refresh => false, out_of_place => TRUE)

PL/SQL procedure successfully completed.

После чего SYS.SNAP_REFOP$ содержит три операции: (more…)

15.01.2018

12c: Простейшее использование INMEMORY при обновлении Materialized View

Filed under: Oracle,Oracle new features — Игорь Усольцев @ 21:14
Tags: ,

Предварительно усилив параллельность выполнения — как несложный и действенный метод ускорения FULL SCAN-ов, HASH JOIN-ов, сокращения direct path temp read / write- операций и потребления TEMP пространства, соответственно:

12.1.0.2@ SQL> alter session force parallel QUERY parallel 32;

Session altered

, получаем:

SQL> exec dbms_mview.refresh('"BI"."MV_EXPENSES_DETAIL"', atomic_refresh => TRUE, parallelism => 32) -- parallelism => 32 - особой роли не играет, скорее как индикатор
 
PL/SQL procedure successfully completed
 
Executed in 140,578 seconds

— стартовый рез-т, SQL MONITOR которого показывает много direct path read на MAT_VIEW ACCESS FULL (*) + всё ещё заметное, несмотря на параллельное выполнение, потребление TEMP (11G) с сопутствующими direct path temp — операциями при выполнении вышележащего HASH JOIN (**): (more…)

30.09.2015

Об использовании Parallel Statement Queuing в процессе Complete Non-Atomic mview refresh

Filed under: Диагностика системы (instance),mview,Oracle — Игорь Усольцев @ 00:05
Tags: , ,

При выполнении DBMS_MVIEW.REFRESH(…, ‘C’, ATOMIC_REFRESH=>FALSE) можно видеть ожидание pipe get, что ожидаемо и описано в Complete Refresh Of Materialized View Hangs On Pipe Get (Doc ID 1193294.1), где, среди прочих «смелых» решений|solutions (удалять индексы перед обновлением, запретить job-ы на системном уровне, не использовать NONATOMIC REFRESH), рекомендуют использовать dbms_jobs вместо dbms_scheduler с помощью специального замысловатого event:)

$ oerr ora 10992
10992, 00000, "event to enable dbms_job instead of dbms_scheduler"
// *Cause:
// *Action:   enables dbms_job instead of dbms_scheduler
// *Comment:  set this event only under the supervision of Oracle Development
// LEVEL        ACTION
//---------------------------------------------------------------------------
//  0x0001      enable dbms_job instead of dbms_scheduler for MV refresh

Т.е. штатно DBMS_MVIEW.REFRESH после собственно обновления (TRUNCATE+INSERT /*+ APPEND*/) запускает одновременно несколько DBMS_SCHEDULER заданий с процедурами типа: (more…)

01.06.2014

CBQT при создании/обновлении матвью в 12.1.0.1

Filed under: heuristics,mview,Oracle,Oracle 12c — Игорь Усольцев @ 22:13
Tags: , ,

Тема предыдущего поста про BEGIN_OUTLINE_DATA возникла во время проверки действительно нового и, не побоюсь этого слова, революционного фикса:

SQL> @fix 9852856
 
  BUGNO VALUE SQL_FEATURE          DESCRIPTION                 OPTIMIZER_FEATURE_ENABLE
------- ----- -------------------- --------------------------- ------------------------
9852856     1 QKSFM_CBO_3904125    Enable CBQT for MV refresh  12.1.0.1

, указанного Леонидом Борчуком при обсуждении неоднозначных результатов оптимизации запросов создания/полного обновления материализованных представлений в версиях Oracle 11.2

Это полезное улучшение могло было бы решить множество проблем, но радость была преждевременной (more…)

16.09.2013

12c: о пользе Temporary Undo и реализации out-of-place обновления матвью в 11g

Filed under: Диагностика системы (instance),mview,Oracle,Oracle 12c — Игорь Усольцев @ 23:24
Tags: ,

1) в предыдущем посте забыл упомянуть про Temporary Undo — крайне полезную возможность переключать запись undo для временных таблиц из системного undo табличного пр-ва во временное, что позволяет:

  • снизить общий требуемый размер undo
  • как следствие — уменьшить генерируемый объём redo
  • допускает DML на временных таблицах физического стенбая, где Temporary Undo включен по умолчанию

Вспомнил, т.к. попался хороший практический пример на версии 11.2.0.3 при тестах стандартного приложения OEBS, где использование этой возможности могло бы в значительной мере исключить проблемы, возникающие на на уровне системы

Итак, первоначально проблема представлялась в виде относительно большого потока генерируемых redo: (more…)

27.10.2012

Особенность расчёта стоимости рекурсивных запросов при обновнении MATVIEW

Filed under: bugs,CBO,mview,Oracle — Игорь Усольцев @ 10:54
Tags: ,

При выполнении процедуры полного неатомарного обновления материализованного представления:

SQL> exec DBMS_MVIEW.REFRESH('MV_1', 'C', ATOMIC_REFRESH=>FALSE);

рекурсивно выполняется наблюдаемый в V$SESSION и V$OPEN_CURSOR запрос типа V$OPEN_CURSOR.CURSOR_TYPE = ‘OPEN-RECURSIVE’:

INSERT /*+ BYPASS_RECURSIVE_CHECK APPEND  */ INTO "SCOTT"."MV_1" SELECT DISTINCT ...

Хорошо известно, что планы рекурсивных запросов полного обновления (а также планы CTAS создания CREATE MATERIALIZED VIEW) имеют особенности, например Рекурсивные запросы для materialized view с использованием db link

Далее — наглядный частный пример отличий оптимизации Oracle в части правил расчёта стоимости для рекурсиных и запросов, выполняемых «автономно» (more…)

27.05.2012

DOP при обновлении MATVIEW с использованием удалённых таблиц

Filed under: heuristics,Oracle,remote — Игорь Усольцев @ 13:16
Tags: , ,

Про особенности параллельного выполнения запросов DML, выполняемых при кумулятивном (non-atomic) ресурсоёмком обновлении materialized view значительного объёма (> 300 млн строк), построенного из относительно небольших исходных таблиц, расположеных на удалённой бд (dblink)

Запросы к небольшим источникам данных генерирующие объёмный набор данных (result set) ресурсоёмки по ЦПУ и памяти (PGA и/или temporary tablespace) и сами по себе интересны в плане оптимизации времени выполнения и требуемых ресурсов. При выполнении таких запросов в составе DML операций создания и обновления materialized view Oracle накладывает дополнительные ограничения Degree Of Parallelism (DOP) в случае использования удалённых источников данных (more…)

06.07.2008

Cube-Organized Materialized Views

Filed under: Oracle new features — Игорь Усольцев @ 16:58
Tags: , , ,

Интересная статья Дэна Вламиса Accelerating Data Warehouses в Oracle magazine за май-июнь 2008 года посвящена обсужденнию одного из нововведений Oracle 11g — Cube-Organized Materialized Views — материализованные представления на основе Oracle OLAP кубов . Точнее, Oracle OLAP кубы, представленные для SQL приложений, как материализованные представления. С возможностями query rewrite и обновления через MV refresh api.

Логическое и логичное развитие концепции Materialized Views, которым очень не хватало возможности query rewrite для SQL запросов с переменными условиями на основе доступа (через новую операцию доступа к данным CUBE SCAN в плане выполнения) к агрегированым значениям в ОДНОМ предварительно загруженном и просчитанном иерархически сгруппированном массиве данных (OLAP кубе), с одной стороны.

С другой стороны, если добавить появившуюся возможность доступа к данным Oracle 11g OLAP кубов через SQL интерфейс (автоматически генерируемые OLAP views) безо всякого использования OLAP API — то можно предположить, что процесс интеграции технологии «Oracle Express» (приобретённой в 1995 году у IRI software) в Oracle RDBMS можно считать свершившимся фактом.

Красивое решение.

P.S. Легальное использование этих приятных возможностей потребует лицензирования Oracle 11g Enterprise Edition + OLAP option

Создайте бесплатный сайт или блог на WordPress.com.