Oracle mechanics

16.10.2014

Официальный документ про Smart Flash Cache

Filed under: Hardware,Oracle — Игорь Усольцев @ 00:48
Tags: ,

Спустя 5 лет после выхода версии 11.2 появился практически полезный документ от Oracle Optimizing Oracle Database Performance on Oracle Linux with Flash, где кроме традиционного маркетингового слоя, можно найти толковое техническое руководство по конфигурации Smart Flash Cache на Linux, включая установку специфичных для Flash/SSD параметров, пошаговые процедуры создания ASM и конфигурации Smart Flash Cache в бд, плюс подробные рез-ты сравнительных тестов

При планировании использования Smart Flash Cache стоит иметь в виду, что фича эта может эффективно использоваться не только с брендовыми Oracle Sun Flash Accelerator PCIe Card, и даже не только со всё ещё достаточно дорогими Flash PCIe Card других производителей, но и с вполне доступными SSD дисками

12.10.2014

История одного запроса: SPM, трансформации и подсказки

Filed under: Oracle,Plan Management,SQL Tuning — Игорь Усольцев @ 23:29
Tags: ,

Типичный случай — план запроса «неожиданно» измененился, и не в лучшую сторону:

11.2.0.4.@ SQL> @shared_cu 8dvbszd8kj04m

INST EXECS LAST_LOAD_TIME LAST_ACTIVE_TIME ELA_PER_EXEC PLAN_HASH_VALUE OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  USE_FEEDBACK_STATS OPTIMIZER_STATS  BIND_EQ_FAILURE  REASON1
---- ----- -------------- ---------------- ------------ --------------- -------------- ----- ---------- ---------- ---------- ------------------ ---------------- ---------------- ------------------
   2     9 07.10 14:50    07.10 17:57        1076192531       465674203            132     1 Y          N          Y          N                  Y                N                NLS Settings(0)  |
   2     5 07.10 16:04    07.10 17:04            263416      4268563287            246     3 Y          N          Y          N                  N                N                NLS Settings(0)  |

, при этом V$SQL_SHARED_CURSOR.LOAD_OPTIMIZER_STATS=Y (обозначенное как OPTIMIZER_STATS) означает, что неудачный выбор формально более выгодного плана был динамически предопределён технологией cardinality feedback (CF):

SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor('8dvbszd8kj04m', 1,format => '+note'));
...
Note
-----
   - cardinality feedback used for this statement

Часть 1. SQL Plan Management (SPM)

(more…)

10.10.2014

Планы выполнения запросов на RO Standby

Filed under: Active Session History,Oracle — Игорь Усольцев @ 02:42
Tags: ,

Хорошо известно, что перераспределение запросной активности на Standby db, открытую в режиме READ ONLY — чистое благо, по крайней мере покуда «всё идёт по плану»

Диагностика возникающих при этом проблем типа периодического замедления выполнения конкретных запросов, на ro-standby имеет особенности и может быть любопытна

Например, была получена достоверная информация, что запрос, посылаемый через dblink на standby:

SQL> @inst
 
INST_ID INSTANCE_NAME HOST_NAME VERSION    PLATFORM_NAME    DATABASE_STATUS DATABASE_ROLE    STATUS   OPEN_MODE
------- ------------- --------- ---------- ---------------- --------------- ---------------- -------- ---------
1*      myinst        myhost    11.2.0.3.0 Linux x86 64-bit ACTIVE          PHYSICAL STANDBY OPEN     READ ONLY

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

Простая проблема при создании AWR снапшотов в Oracle 11g

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

Проблема действительно несложная (более интересный вариант отписывал ранее) и выражается, кроме собственно прекращения генерации снапшотов, сообщениями в alert.log вида:

ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_1245278029_19314 by 128 in tablespace SYSAUX
ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_1245278029_19314 by 8192 in tablespace SYSAUX

, ошибками в трейсах процесса Manageability Monitor (mmon) и детей ея m00x, выраженным ростом партиций сегмента WRH$_LATCH_CHILDREN:

11.2.0.4@ SQL> select * from dba_segments where tablespace_name = 'SYSAUX' and bytes > 1e9 order by bytes desc;
 
SEGMENT_NAME                    PARTITION_NAME                 SEGMENT_TYPE       SEGMENT_SUBTYPE TABLESPACE_NAME      BYTES     BLOCKS
------------------------------- ------------------------------ ------------------ --------------- --------------- ---------- ----------
WRH$_LATCH_CHILDREN             WRH$_LATCH__1245278029_19314   TABLE PARTITION    ASSM            SYSAUX          3414687744    4168320
WRH$_LATCH_CHILDREN_PK          WRH$_LATCH__1245278029_19314   INDEX PARTITION    ASSM            SYSAUX          2771281510    3382912
WRH$_ACTIVE_SESSION_HISTORY     WRH$_ACTIVE_1245278029_19314   TABLE PARTITION    ASSM            SYSAUX          1407188992     171776

, отражена в документе поддержки SYSAUX Tablespace can Become Full Due to WRH$_LATCH_CHILDREN growth (Doc ID 874518.1) и чаще всего возникает при установке statistics_level=ALL на уровне системы

Некоторой определённости заслуживают быстрые методы очистки SYSAUX и перезапуска mmon_slave процессов для возобновления автогенерации снапшотов (more…)

19.09.2014

ASH-трассировка PL/SQL

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

К примеру, в AWR-отчёте бд ERP-системы на первом месте видно продолжающееся/неоконченное выполнение процедуры, лидирующей по использованному DB Time с большим отрывом от ближайшего преследователя — 72% против 18%:

SQL ordered by Elapsed Time           DB/Inst: OEBS/OEBS1  Snaps: 73249-73250

        Elapsed                  Elapsed Time
        Time (s)    Executions  per Exec (s)  %Total   %CPU    %IO    SQL Id
---------------- -------------- ------------- ------ ------ ------ -------------
        36,572.3              0           N/A   72.5   45.7   41.0 5t39uchjqpyfm
Module: XLAACCUP
BEGIN xla_accounting_pkg.unit_processor_batch(:errbuf,:rc,:A0,:A1,:A2,:A3,:A4,:A

         9,246.2             15        616.41   18.3   29.4   65.5 0vjcg5zp30z2x

Для быстрой оценки такого рода проблем написал скрипт ash_plsqlmon_hist.sql, который по истории ASH вначале показывает суммарный вклад запросов и PL/SQL блоков по частоте попадания в историю ASH (ASH_ROWS), кол-во зафиксированных неповторяющихся выполнений (EXECS), затем — мин/мах время наблюдения(с соответствующими названиями столбцов) и общий профиль ожиданий (WAIT_PROFILE) примерно так:
(more…)

18.09.2014

PL/SQL пакет для генерации PDF

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

Пакет от Anton Scheffer для создания PDF версии 1.3, с поддержкой TruType Fonts и вставкой картинок JPG и PNG

Код открытый, работает как описано, позиционируется как замена Middleware/Reports. Судя по публикации на сайте фирмы, с лицензионной чистотой должно быть всё норм

Входит в библиотеку PL/SQL утилит Alexandria для разных текстовых форматов и протоколов

07.09.2014

Материализация XMLTYPE запросов

Filed under: error,heuristics,Oracle,XML DB — Игорь Усольцев @ 19:10
Tags: ,

Попытка выполнение стандартного запроса по извлечению текста подсказок (outline hint) из плана выполнения (V$SQL_PLAN.OTHER_XML) до версии 12.1.0.1 включительно выдаёт характерную при материализации подзапроса с XMLTYPE ошибку — XMLTYPE in a WITH Clause Fails with ORA-06512 & ORA-06502 (Doc ID 1640869.1):

11.2.0.3.@ SQL> with ol as
  2   (select--+ materialize
  3           plan_hash_value, b.hint
  4      from v$sql_plan m,
  5           xmltable('/other_xml/outline_data/hint' passing
  6                    xmltype(m.OTHER_XML) columns hint varchar2(4000) path '/hint') b
  7     where trim(OTHER_XML) is not null
  8       and rownum <= 2)
  9  select * from ol
 10  /
                  xmltype(m.OTHER_XML) columns hint varchar2(4000) path '/hint') b
                  *
ERROR at line 6:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at line 1

(more…)

02.09.2014

Запросы к GV$-обзорам в RAC-системах, включая использование GV$-функций

Filed under: Fixed tables,heuristics,Oracle,RAC,SQL — Игорь Усольцев @ 00:03
Tags:

В кластерных системах Oracle 11g:

11.2.0.3@ SQL> @inst

INST_ID INSTANCE_NAME  VERSION    PLATFORM_NAME        DATABASE_STATUS DATABASE_ROLE    STATUS   OPEN_MODE
------- -------------- ---------- -------------------- --------------- ---------------- -------- ----------
1*      my_inst1       11.2.0.3.0 Linux x86 64-bit     ACTIVE          PRIMARY          OPEN     READ WRITE
2       my_inst2       11.2.0.3.0 Linux x86 64-bit     ACTIVE          PRIMARY          OPEN     READ WRITE

можно наблюдать небыстрое выполнение простых запросов к глобальным обзорам типа GV$SQL, GV$SQL_PLAN, например, по SQL_ID: (more…)

19.08.2014

Большой план выполнения и трассировка рекурсивных запросов с помощью ASH

Filed under: Active Session History,memory management,Oracle,SQL Tuning — Игорь Усольцев @ 00:18
Tags: ,

Спустя час с небольшим после начала выполнения запроса была получена следующая ошибка*:

ORA-04030: выход за пределы памяти процесса при попытке выделить 4120 байт (kksfr: qkesSet,frame segment)

Из автоматически сгенерированного трейса инциндента можно получить много информации, включая, например, раскладку использованных процессом 10GB из 15GB PGA (!):

=======================================
PRIVATE MEMORY SUMMARY FOR THIS PROCESS
---------------------------------------
******************************************************
PRIVATE HEAP SUMMARY DUMP
10 GB total:
    10 GB commented, 1103 KB permanent
  1452 KB free (0 KB in empty extents),
    6596 MB,   1 heap:    "kxs-heap-c     "            72 KB free held
    3646 MB,   2 heaps:   "callheap       "            1127 KB free held

*** 2014-07-17 13:12:32.395
------------------------------------------------------
Summary of subheaps at depth 1
10 GB total:
  4175 MB commented, 1527 MB permanent
  4508 MB free (0 KB in empty extents),
    3613 MB,   1 heap:    "TCHK^6f1a0bb0  "
    1177 MB, 187983 chunks:  "qkkele                    " 794 MB free held
    1039 MB, 298563 chunks:  "subHeap:qkspmTransformPred" 987 MB free held
     812 MB, 198230 chunks:  "allocator state           " 800 MB free held
     676 MB, 187983 chunks:  "qkkkey                    " 663 MB free held
...

, но для начала, зная указанный в том же трейсе SID.SERIAL сессии и SQL_ID:

*** SESSION ID:(972.11477) 2014-07-17 13:12:25.342
...
----- Current SQL Statement for this session (sql_id=fq5vmt1rjn2xh) -----
insert into t_base_source
        select s.*, sysdate as insert_dt
          from v_base_source s

, полезно посмотреть в ASH чем занималась пользовательская сессия до падения: (more…)

12.08.2014

Кластерные ожидания и запросы Advanced Queuing

Filed under: Active Session History,Диагностика системы (instance),Oracle,RAC — Игорь Усольцев @ 22:08
Tags: ,

Периодически в Oracle 11.2 RAC системе возникают характерные кластерные проблемы, в основном, по причинам неверной конфигурации, например, выбора неподходящего сервиса для выполнения ресурсоёмких бизнес процессов / пакетных заданий

Далее описана наглядная краткосрочная проблема этого типа и, в частности, роль AQ запросов

Итак, AWR показал:

              Snap Id      Snap Time      Sessions Curs/Sess
            --------- ------------------- -------- ---------
Begin Snap:    296087 07-Aug-14 12:00:39       451       2.2
  End Snap:    296088 07-Aug-14 12:30:40       504       2.1
   Elapsed:               30.02 (mins)
   DB Time:            2,615.89 (mins)                       -- завышенный DB Time для 16 ядерного сервера

Top 5 Timed Foreground Events
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                           Avg
                                                          wait   % DB
Event                                 Waits     Time(s)   (ms)   time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
gc buffer busy acquire              354,144      67,484    191   43.0 Cluster    -- и богатый набор кластерных ожиданий
gc cr block 2-way                   319,644      16,234     51   10.3 Cluster
gc current grant busy               117,362      11,066     94    7.1 Cluster
gc current block 2-way              169,545       9,974     59    6.4 Cluster

(more…)

Следующая страница →

Theme: Rubric. Get a free blog at WordPress.com

Отслеживать

Get every new post delivered to your Inbox.

Join 129 other followers