Oracle mechanics

22.02.2026

Глобальный SYS_CONTEXT(‘userenv’)

Filed under: commonplace,Блокировки,Oracle,wait events — Игорь Усольцев @ 13:31
Tags:

Периодически возникала проблема:

19.24@ SQL> @a_waits

EVENT                         WAIT_CLASS         T0    T1    T2    T3    T4    T5    T6    T7    T8    T9
----------------------------- --------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
...
enq: ZZ - update hash tables  Other              16    16    18    18    18    18    18    18    18    18
latch: shared pool            Concurrency        35    27    20    13    13    14    17    19    20    21
latch free                    Other             572   569   526   535   545   552   556   556   558   559

42 rows selected

В такие моменты oradebug hanganalyze показывал неполную в части дерева блокировок, но полезную в части short_stack(*) информацию: (more…)

07.09.2025

ORA-04031 с аргументами KGLH0^ при активном использовании Pipes

Filed under: Oracle,SGA,shared pool — Игорь Усольцев @ 20:52
Tags: ,

С коллегой Валерием Смирновым столкнулись/разбирали проблему многочисленных, вплоть до невозможности залогиниться, ошибок ORA-04031, в основном, вида:

ORA-04031: unable to allocate 40 bytes of shared memory ("shared pool","unknown object","KGLH0^37017467","kglHeapInitialize:temp")

После установки в соответствии с рекомендациями ORA-04031 Memory Errors with Argument KGLH0^ (Doc ID 2096561.1):

19.26@ SQL> alter system set events '4031 {occurence:end_after 1} heapdump(536870914) library_cache(74)';

System altered.

получили трейс с визуально многочисленными упоминаниями объектов Type=PIPE: (more…)

29.08.2025

Oracle RAC 19.16+: Lock State Resolution (LSR)

Filed under: bugs,Блокировки,Oracle — Игорь Усольцев @ 12:08
Tags: ,

Относительно свежий механизм проявился в виде неожиданного (без изменений в патчах и параметрах) всплеска Concurrency waits различных типов:

SQL> select inst_id,
  2         nvl(wait_class, session_state) as wait_class,
  3         count(*),
  4         round(ratio_to_report(count(*)) over(partition by inst_id) * 100) as pct_by_inst,
  5         min(sample_time),
  6         max(sample_time)
  7    from system.ash_202503040810
  8   where sample_time between timestamp'2025-03-04 07:00:00' and timestamp'2025-03-04 08:00:00'
  9   group by inst_id, nvl(wait_class, session_state)
 10   order by count(*) desc
 11  fetch first 10 rows only
 12  /

INST_ID WAIT_CLASS      COUNT(*) PCT_BY_INST MIN(SAMPLE_TIME)   MAX(SAMPLE_TIME)
------- ------------- ---------- ----------- ------------------ -----------------
      4 Concurrency       313831          57 04.03.25 07:00:02  04.03.25 07:59:59
      2 Concurrency       208276          74 04.03.25 07:52:05  04.03.25 07:59:59
      3 Concurrency       201571          69 04.03.25 07:49:59  04.03.25 07:59:59
      4 Cluster           155764          29 04.03.25 07:00:00  04.03.25 07:59:59
      1 Concurrency       116832          40 04.03.25 07:00:01  04.03.25 07:59:59
      1 Cluster           111160          38 04.03.25 07:00:00  04.03.25 07:59:59
      3 Configuration      56552          19 04.03.25 07:49:59  04.03.25 07:59:59
      2 Cluster            33582          12 04.03.25 07:52:05  04.03.25 07:59:59
      1 ON CPU             31445          11 04.03.25 07:00:00  04.03.25 07:59:59
      4 ON CPU             25640           5 04.03.25 07:00:00  04.03.25 07:59:59

10 rows selected

(more…)

25.01.2025

Oracle 19c: Online Statistics Gathering и скорость выполнения операций Drop / Truncate Partition

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

Начиная с 19 версии Partitioned Table Statistics Changed After Truncate Partition or Drop Partition Operation (Doc ID 2970098.1)

On Oracle 19C, a partition table»s statistics is changed, however all partitions statistics do not change.

10.3.3.2 Online Statistics Gathering for Partition Maintenance Operations

Oracle Database provides analogous support for online statistics during specific partition maintenance operations.

For TRUNCATE or DROP PARTITION, the database updates the BLOCKS and NUM_ROWS values in the global table statistics.
The update does not require a gathering statistics operation.
The statistics update occurs when either incremental or non-incremental statistics are used.

Небольшая демонстрация влияния этой фичи на скорость выполнения DDL операций: (more…)

21.08.2024

Особенности ASH против статистики V$SQLSTATS при использовании SQL Profile для фиксации планов выполнения

Filed under: Active Session History,CBO,Oracle,Plan Management — Игорь Усольцев @ 20:23
Tags: , , ,

После не очень удачной попытки фиксации очевидно более лучшего плана с помощью SQL Profile:

SQL> @sql_profile_from_sql 5x1yhfjgxfdj8 2815152432 5x1yhfjgxfdj8_2815152432 5x1yhfjgxfdj8_2815152432

PL/SQL procedure successfully completed

, наблюдал странность отображения выполнения запроса (из генерируемого пакета типа XLA_00001_AAD_C_001234_PKG):

SQL> @shared_cu12 5x1yhfjgxfdj8 0 11

INST EXECS FIRST_LOAD_TIME      LAST_LOAD_TIME      LAST_ACTIVE_TIME    ROWS_PER_EXEC ELA_PER_EXEC CPU_PER_EXEC PARSES_PER_EXEC GETS_PER_EXEC READS_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC CLU_PER_EXEC PLSQL_PER_EXEC CURSOR_STATUS PLAN_HASH_VALUE FULL_PLAN_HASH_VALUE CBO_MODE   OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  CF  REOPT REOPT_HINTS V$SQL.Adapt XML.Adapt DS_LEVEL SQL_PROFILE              MODULE                                         ACTION                        PROGRAM_ID PROGRAM_LINE#     CON_ID
---- ----- -------------------- ------------------- ------------------- ------------- ------------ ------------ --------------- ------------- -------------- ------------ ------------- ------------ -------------- ------------- --------------- -------------------- ---------- -------------- ----- ---------- ---------- ---------- --- ----- ----------- ----------- --------- -------- ------------------------ ---------------------------------------------- ----------------------------- ---------- ------------- ----------
   2     1 2024-08-05/16:00:44  2024-08-05/16:00:44 05.08.2024 16:00:45             5       870653       509179               1          2115              2          180        441401          638              0 VALID              2815152432           3719364732 ALL_ROWS              705     0 Y          N          Y              N                 N                     2        5x1yhfjgxfdj8_2815152432 e:SQLAP:bes:oracle.apps.xla.accounting.extract SQLAP/UR_AP_CREATE_ACCOUNTING  381744948        226958          3 -- **
   4     2 2024-07-29/16:18:47  2024-08-05/12:15:47 05.08.2024 16:08:38             4   1583415226   1143669974               1     129098743       28146806    347636458        266350    115664836             13 VALID              3914235244           1022525267 ALL_ROWS        229028988     0 N          N          Y              N                 N                     2        5x1yhfjgxfdj8_2815152432 e:SQLAP:bes:oracle.apps.xla.accounting.extract SQLAP/UR_AP_CREATE_ACCOUNTING  381744948        226958          3 -- **
...
--------------------------------------------------------------
SQL_ID=5x1yhfjgxfdj8 Shared Pool GV$SQLSTATS
--------------------------------------------------------------
INST EXECS SQL_ID              PLAN ELA_PER_EXEC CPU_PER_EXEC GETS_PER_EXEC CONC_PER_EXEC CLU_PER_EXEC UIO_PER_EXEC READ_MB_PER_EXEC READS_PER_EXEC DISK_READS_PER_EXEC WRITES_MB_PER_EXEC WRITES_PER_EXEC DIRECT_WRITES_PER_EXEC ROWS_PER_EXEC PX_PER_EXEC
---- ----- ------------- ---------- ------------ ------------ ------------- ------------- ------------ ------------ ---------------- -------------- ------------------- ------------------ --------------- ---------------------- ------------- -----------
   2     1 5x1yhfjgxfdj8 2815152432       870653       509179          2115        441401          638          180                0              2                   0                  0               0                      0             5           0
   4     2 5x1yhfjgxfdj8 3914235244   1583415226   1143669974     129098743        266350    115664836    347636458           219897         686867                  27               5162           21314                 660734             4           0
--------------------------------------------------------------
ASH TOP11 SQL_ID=5x1yhfjgxfdj8 Executions by Elapsed Time
--------------------------------------------------------------

INST_ID        SID    SERIAL# SQL_ID        SQL_PLAN_HASH_VALUE SQL_FULL_PLAN_HASH_VALUE SQL_EXEC_ID CHILD C   ASH_ROWS         PX SQL_EXEC_START            DURATIONs                 MIN_SAMPLE_TIME           MAX_SAMPLE_TIME           MAX_TEMP_ALLOCATED MAX_PGA_ALLOCATED
------- ---------- ---------- ------------- ------------------- ------------------------ ----------- ----- - ---------- ---------- ------------------------- ------------------------- ------------------------- ------------------------- ------------------ -----------------
      2       3441      26975 5x1yhfjgxfdj8          2815152432               3719364732                 0            1          1                           +000000000 00:00:00.000   05-АВГ-24 04.00.44.579 PM 05-АВГ-24 04.00.44.579 PM            7340032          40168448
      2       5682      27040 5x1yhfjgxfdj8          2815152432               3719364732                 0            1          1                           +000000000 00:00:00.000   05-АВГ-24 01.31.59.829 PM 05-АВГ-24 01.31.59.829 PM           16252928         208481280
      2      13709      22018 5x1yhfjgxfdj8          2815152432               3719364732                 0            1          1                           +000000000 00:00:00.000   05-АВГ-24 02.49.11.148 PM 05-АВГ-24 02.49.11.148 PM           10485760          51047424

и странность эта была не в том, что SQL Profile применился не ко всем выполнениям (что не соответствует ожидаемому рез-ту, конечно, но знакомо), а в несоответствии рез-тов первых 2-х запросов (из GV$SQL и GV$SQLSTATS) с выводом последнего запроса ASH TOP (more…)

28.07.2024

Рекурсивный 9vv8244bcq529 при использовании JDBC Thin driver, PL/SQL with objects/collections

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

, потребляющий заметную долю DB Time, может быть замечен на версиях 19c, описан ранее — Kun Sun. JDBC, Oracle object/collection, dbms_pickler, NOPARALLEL sys.type$ query:

When using the JDBC Thin driver to invoke PL/SQL programs with Oracle objects / collections, we can observe dbms_pickler calls, and two NOPARALLEL hinted sys.type$ queries having the same number of executions as dbms_pickler. These can result in intermittent performance degradation.

Проблема отражена как баг типа Something happenedPoor Performance For Queries Running Against Type$ Due to Missing Indexes. (Doc ID 2993865.1): (more…)

Long parse 2

Filed under: hints,Oracle,SQL Tuning — Игорь Усольцев @ 19:06
Tags: , ,

1-я проблема sql parse возникла с запросом типа:

SELECT ...
   FROM MO.t_client_cashback
  WHERE (t_client_cashback.client_id, t_client_cashback.service_id, nvl(t_client_cashback.iso_currency, :nvl_1)) -- *
  IN
       ((:param_1, :param_2, :param_3),
        (:param_4, :param_5, :param_6),
        (:param_7, :param_8, :param_9)),
        ...
        (:param_2998, :param_2999, :param_3000 )) -- comma-delimited list of sets of expressions
FOR UPDATE;

Parsed short stack:

ksedsts()+426                   kernel service error debug dump the call stack short stack 
ksdxfstk()+58                   kernel service debug internal errors dump abridged os stack 
ksdxcb()+872                    kernel service debug internal errors ksdx callback for sosd layer signal handler 
sspuser()+200                   operating system dependent system process management handle SIGUSR2 for Oracle 
__sighandler()                   (?)  [partial hit for:  ] 
kxsFrameSegAllocate()+60        kernel execution shared cursor  [partial hit for: kxs ] 
kxsEphemeralFramePush()+177     kernel execution shared cursor  [partial hit for: kxs ] 
kkeutlEvalOpn()+509             kernel compile cost engine  [partial hit for: kke ] 
kkoecp()+174                    kernel compile optimizer evaluate constant predicate 
kkerfp()+524                    kernel compile cost engine  [partial hit for: kke ] 
kkepslCompCtl()+2482            kernel compile cost engine selectivity of a single predicate  [partial hit for: kkepsl ] 
kkeosl()+1543                   kernel compile cost engine process an OR chain of predicates -- **
kkecdn()+10879                  kernel compile cost engine determine cardinality of a table given single table predicates 
kkotap()+16145                  kernel compile optimizer table access path 
kkoiqb()+9120                   kernel compile optimizer initialise query block              -- **
kkooqb()+596                    kernel compile optimizer optimize query block                -- **

повторяемо указывал на kkooqb / kkoiqb / kkeosl (**), что соответствует длинному циклу OR Expansion с инициализацией/оптимизацией нового Query Block для каждого элемента генерируемой конструкции UNION ALL — классическая и хорошо документированная в Advice for Reduction of Long Parse Time (Doc ID 106922.1) проблема: (more…)

14.02.2024

Oracle 19: Сравнение Query Block Registry

Filed under: CBO,Oracle,Scripts,SQL Tuning — Игорь Усольцев @ 00:37
Tags: ,

Для ускорения/оптимизации выполнения запроса коллега Сергей Перегудин проанализировал и предложил поправить/зафиксировать план важного, но замедлившегося запроса:

SQL> @sql_profile_from_sql 947wjnz21sdv1 3090864955 947wjnz21sdv1_3090864955 947wjnz21sdv1_3090864955

PL/SQL procedure successfully complete

, что привело к хорошему ожидаемому рез-ту:

SQL> @shared_cu12 947wjnz21sdv1 0 11

INST EXECS USERS_OPENING FIRST_LOAD_TIME      LAST_LOAD_TIME       PARSE_USER LAST_ACTIVE_TIME    ROWS_PER_EXEC ELA_PER_EXEC CPU_PER_EXEC PARSES_PER_EXEC GETS_PER_EXEC READS_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC CLU_PER_EXEC PLSQL_PER_EXEC CURSOR_STATUS       PLAN_HASH_VALUE FULL_PLAN_HASH_VALUE CBO_MODE   OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  CF  REOPT REOPT_HINTS V$SQL.Adapt XML.Adapt SPD_Valid SPD_Used  DS_LEVEL DOP DOP_REASON NOT_SHARED_BY REASON SQL_PROFILE               IS_OBSOLETE
---- ----- ------------- -------------------- -------------------- ---------- ------------------- ------------- ------------ ------------ --------------- ------------- -------------- ------------ ------------- ------------ -------------- ------------------- --------------- -------------------- ---------- -------------- ----- ---------- ---------- ---------- --- ----- ----------- ----------- --------- --------- --------- -------- --- ---------- ------------- ------ ------------------------- -----------
   1     3             0 2024-02-09/15:30:26  2024-02-09/15:30:26  APPS       09.02.2024 16:00:39             0       472888       305120               1           958              5         1098        193184         7265              0 INVALID_UNAUTH           3090864955           1605889768 ALL_ROWS           246634     0 N          N          Y              N                 N                                                                                                                N          
   3     2             0 2024-02-09/15:29:44  2024-02-09/15:29:44  APPS       09.02.2024 16:00:47             0       696668       448275               1          1494             66         9580        286532         7219              0 INVALID_UNAUTH           3090864955           1605889768 ALL_ROWS           246636     0 N          N          Y              N                 N                                                                                                                N          
   2     1             1 2024-02-09/17:30:34  2024-02-09/17:30:34  APPS       09.02.2024 17:31:55             0     81856619     21530087               1        898437         286982     62166268        637855      5207870          52903 VALID                    3090864955           1605889768 ALL_ROWS          1130752     0 N          N          Y              N                 N                                                                                      947wjnz21sdv1_3090864955  N          
   4     3             1 2024-02-09/10:41:27  2024-02-09/10:41:27  APPS       09.02.2024 17:31:56             0   8218294609   8177073682               1     174802168         183115     11756834        179604      3877313           6539 INVALID_UNAUTH           2165674671           2799055495 ALL_ROWS           657548     0 N          N          Y              N                 N                                                                                                                N          

--------------------------------------------------------------
SQL_ID=947wjnz21sdv1 Shared Pool statistics by PLAN_HASH_VALUE
--------------------------------------------------------------

INST PARSING_SCHEMA EXECS PLAN_HASH_VALUE LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC CPU_PER_EXEC PARSES_PER_EXEC GETS_PER_EXEC READS_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC CLU_PER_EXEC PLSQL_PER_EXEC FETCH_PER_EXEC ROWS_PER_EXEC AVG_CBO_COST     CHILDS BIND_SENSE BIND_AWARE REOPT ADAPT SQL_PROFILE
---- -------------- ----- --------------- -------------------- ------------------- ------------ ------------ --------------- ------------- -------------- ------------ ------------- ------------ -------------- -------------- ------------- ------------ ---------- ---------- ---------- ----- ----- -------------------------
   1 APPS               3      3090864955 2024-02-09/15:30:26  09.02.2024 16:00:39       472888       305120               1           958              5         1098        193184         7265              0              1             0       246634          1 N          N          N     N     
   3 APPS               2      3090864955 2024-02-09/15:29:44  09.02.2024 16:00:47       696668       448275               1          1494             66         9580        286532         7219              0              1             0       246636          1 N          N          N     N     
   2 APPS               1      3090864955 2024-02-09/17:30:34  09.02.2024 17:31:55     81856619     21530087               1        898437         286982     62166268        637855      5207870          52903              0             0      1130752          1 N          N          N     N     947wjnz21sdv1_3090864955
   4 APPS               3      2165674671 2024-02-09/10:41:27  09.02.2024 17:31:56   8218294609   8177073682               1     174802168         183115     11756834        179604      3877313           6539              1             0       657548          1 N          N          N     N     

--------------------------------------------------------------
ASH TOP11 SQL_ID=947wjnz21sdv1 Executions by Elapsed Time
--------------------------------------------------------------

INST_ID    SID    SERIAL# SQL_ID        SQL_PLAN_HASH_VALUE SQL_FULL_PLAN_HASH_VALUE SQL_EXEC_ID CHILD C   ASH_ROWS         PX SQL_EXEC_START            DURATIONs                 MIN_SAMPLE_TIME           MAX_SAMPLE_TIME           TEMP_SPACE_ALLOCATED
------- ------ ---------- ------------- ------------------- ------------------------ ----------- ----- - ---------- ---------- ------------------------- ------------------------- ------------------------- ------------------------- --------------------
      4   8738      53404 947wjnz21sdv1          2165674671               2799055495    67108864     0 *      24575          1 09.02.2024 10:41:28       +000000000 06:50:27.654   09-ФЕВ-24 10.41.29.271 AM 09-ФЕВ-24 05.31.56.925 PM           2764046336
      1  11580      11427 947wjnz21sdv1          2165674671               2799055495    16777216     0         7631          1 08.02.2024 10:32:51       +000000000 02:07:26.089   09-ФЕВ-24 09.27.24.942 AM 09-ФЕВ-24 11.34.51.031 AM           1519910912
      2   4026      26231 947wjnz21sdv1          3090864955               1605889768    33554433     0 *         82          1 09.02.2024 17:30:34       +000000000 00:01:21.187   09-ФЕВ-24 05.30.35.794 PM 09-ФЕВ-24 05.31.56.981 PM              1048576
      4   6265      53412 947wjnz21sdv1          2165674671               2799055495    67108866     0           20          1 09.02.2024 15:32:04       +000000000 00:00:19.039   09-ФЕВ-24 03.32.05.614 PM 09-ФЕВ-24 03.32.24.653 PM              1048576
      4   7912      31730 947wjnz21sdv1          2165674671               2799055495    67108865     0            6          1 09.02.2024 15:30:39       +000000000 00:00:05.010   09-ФЕВ-24 03.30.40.439 PM 09-ФЕВ-24 03.30.45.449 PM            459800576
...

— видно, что зафиксированный PHV 3090864955 , предварительно на пару порядков быстрее чем прежний PHV 2165674671 (подтвердилось впоследствии)

Внимание привлекло различие длин «хорошего» и плохого планов: (more…)

17.12.2023

Анализ выполнений стандартного concurrent request

Filed under: CBO,Oracle,SQL Tuning — Игорь Усольцев @ 22:02
Tags: , ,
SQL> @oebs_conc_trend4long 142108 10 dd 0 0

DT_START   PROGRAM_ID CONCURRENT_PROGRAM_NAME  REQ_COUNT AVG_DURATION_SECS SUM_DURATION_SECS REQ_LIST
---------- ---------- ----------------------- ---------- ----------------- ----------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
27.11.2023     142108 XLAACCPB|Создать учет          526                46             24254 198780172:G(1679 s); 198795936:G(550 s); 198721884:G(430 s); 198805826:C(410 s); 198903512:C(264 s); 198903280:C(253 s); 198901622:C(205 s); 198900803:G(203 s); 198903577:G(202 s); 198801050:G(200 s);
28.11.2023     142108 XLAACCPB|Создать учет          361                62             22439 198927218:G(2648 s); 198932779:G(1780 s); 198987472:C(1774 s); 198775545:G(1502 s); 198950350:G(821 s); 198999002:G(641 s); 199025449:C(307 s); 198776670:G(220 s); 198953401:G(211 s); 199016953:C(161
29.11.2023     142108 XLAACCPB|Создать учет          441                62             27158 199075202:G(2537 s); 199167555:G(891 s); 199099606:G(873 s); 199119083:C(770 s); 199165369:C(683 s); 198928600:G(664 s); 198938700:C(528 s); 199103734:G(500 s); 199105475:C(347 s); 199153146:C(277 s);
30.11.2023     142108 XLAACCPB|Создать учет          446                61             27180 199222498:G(2191 s); 199279389:C(1838 s); 199300946:G(1187 s); 199254884:G(766 s); 199072668:G(563 s); 199341832:C(407 s); 199302220:G(333 s); 199233828:G(285 s); 199073533:G(211 s); 199223977:G(198 s
01.12.2023     142108 XLAACCPB|Создать учет          594                59             35211 199396698:G(2855 s); 199370706:C(2698 s); 199368947:C(2111 s); 199367763:G(1586 s); 199491571:G(1388 s); 199485518:G(648 s); 199505900:C(592 s); 199474497:G(586 s); 199219598:G(318 s); 199220641:G(305
02.12.2023     142108 XLAACCPB|Создать учет          118               102             11983 199544748:G(2439 s); 199363043:G(1520 s); 199544739:G(1434 s); 199544740:C(901 s); 199544743:C(317 s); 199544779:C(299 s); 199544746:C(242 s); 199544735:G(229 s); 199544767:G(191 s); 199544736:C(177 s
03.12.2023     142108 XLAACCPB|Создать учет          191                92             17485 199628323:G(8455 s); 199595914:G(1848 s); 199533402:G(886 s); 199595901:G(152 s); 199595902:C(128 s); 199595909:C(128 s); 199595905:G(126 s); 199595933:G(123 s); 199595903:G(121 s); 199538759:G(112 s)
04.12.2023     142108 XLAACCPB|Создать учет          817               128            104705 199738741:G(15591 s); 199661557:G(8287 s); 199589754:G(6647 s); 199750985:G(6004 s); 199671819:E(3472 s); 199672009:C(3210 s); 199661103:G(2227 s); 199768058:G(1918 s); 199758135:C(1899 s); 199740896:
05.12.2023     142108 XLAACCPB|Создать учет          933               190            177643 199749495:G(37550 s); 199914412:C(13485 s); 199933244:C(10383 s); 199936952:C(9817 s); 199935890:C(8923 s); 199939253:C(7997 s); 199840713:C(6783 s); 199943198:C(5451 s); 199929287:E(4768 s); 19965925
06.12.2023     142108 XLAACCPB|Создать учет          871                81             70665 199994959:G(11521 s); 199858166:G(3938 s); 200084489:E(2928 s); 200020899:G(2254 s); 200038145:G(2193 s); 200101264:G(1918 s); 200098627:G(1904 s); 200091665:G(1403 s); 200039236:C(1365 s); 200027419:
07.12.2023     142108 XLAACCPB|Создать учет          386                94             36108 200017373:G(6791 s); 200270431:G(1803 s); 200357625:R(1622 s); 200295220:G(1261 s); 200313591:G(1121 s); 200292309:C(1101 s); 200270422:C(871 s); 200305312:G(858 s); 200287773:C(825 s); 200321585:C(72

11 rows selected

отразил флуктуации как суммарного (SUM_DURATION_SECS — на порядок), так и индивидуального времени выполнения, в частности, OEBS concurrent request (конкаррент) 199749495 выполнялся 37550, а 199738741 — 15591 секунд!:(

В процессе выполнения конкаррента 199738741 можно заметить стандартный sql_id 2s0c9hrnp6tdr с существенно отличными планами (SQL_PLAN_HASH_VALUE) и временами выполнения (ASH_ROWS PER_EXECS ROUGH_DURATION): (more…)

02.09.2023

Oracle 19: ORDER BY in VIEW в присутствии PL/SQL и выбор View Merging | JPPD

Filed under: CBO,hints,Oracle,SQL Tuning — Игорь Усольцев @ 22:22
Tags: , ,

Проблема проявилась в запросах типа:

SELECT DISTINCT G.REC_PRINT_ID,
                G.REC_REPORT_ID,
                H.PARTY_ID,
                apps.CUST_PACKAGE.GET_INFO('CUSTOMER_ID',H.PARTY_ID,H.K_HEADER_ID) CUSTOMER_ID -- any PL/SQL function
  FROM apps.CUST_TABLE G,
       apps.CUST_VIEW H -- view with ORDER BY
 WHERE G.REC_REPORT_ID = H.REC_REPORT_ID
   AND G.REC_GROUP_ID = :1;

с использованием view with ORDER BY и PL/SQL функции

При наличии всех необходимых индексов план выглядел пессимистично:

------------------------------------------------------------------------------------------------
| Id  | Operation                              | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |     4 |   148 |       |  9851K  (1)| 00:06:25 |
|   1 |  HASH UNIQUE                           |     4 |   148 |       |  9851K  (1)| 00:06:25 |
|*  2 |   HASH JOIN                            |     4 |   148 |       |  9851K  (1)| 00:06:25 |
|   3 |    JOIN FILTER CREATE                  |     4 |    76 |       |     4   (0)| 00:00:01 |
|   4 |     TABLE ACCESS BY INDEX ROWID BATCHED|     4 |    76 |       |     4   (0)| 00:00:01 |
|*  5 |      INDEX RANGE SCAN                  |     4 |       |       |     3   (0)| 00:00:01 |
|   6 |    VIEW                                |  6785K|   116M|       |  9851K  (1)| 00:06:25 |
|   7 |     SORT ORDER BY                      |  6785K|  1857M|    33G|  9851K  (1)| 00:06:25 |
|*  8 |      FILTER                            |       |       |       |            |          |
|   9 |       JOIN FILTER USE                  |   115M|    30G|       |  2720K  (2)| 00:01:47 |
|* 10 |        HASH JOIN RIGHT OUTER           |   115M|    30G|       |  2720K  (2)| 00:01:47 |
|* 11 |         INDEX RANGE SCAN               |    44 |       |       |     4   (0)| 00:00:01 |
|* 12 |         HASH JOIN RIGHT OUTER          |   115M|    25G|   126M|  2719K  (1)| 00:01:47 |
|* 13 |          TABLE ACCESS FULL             |  4406K|    75M|       |   521K  (1)| 00:00:21 |
|  14 |          TABLE ACCESS FULL             |   115M|    23G|       |   955K  (3)| 00:00:38 |
|* 15 |       COLLECTION ITERATOR PICKLER FETCH|    82 |   164 |       |    30   (4)| 00:00:01 |
------------------------------------------------------------------------------------------------

со странным комментарием в трейсе:

SVM:     SVM bypassed: ORDER BY clause.

, несмотря на:

SQL> @param+ _optimizer_order_by_elimination_enabled

NAME                                     SESS_VALUE INST_VALUE Default Value IS_MODIFIED IS_SESS_MOD IS_SYS_MOD IS_PDB_MODIFIABLE IS_ADJ   DSC
---------------------------------------- ---------- ---------- ------------- ----------- ----------- ---------- ----------------- -------- ------------------------------------------------------------
_optimizer_order_by_elimination_enabled  TRUE       TRUE       TRUE          FALSE       TRUE        IMMEDIATE  TRUE              FALSE    Eliminates order bys from views before query transformation

— до этого я как-то искренне считал, что проблема Order BY Elimination (OBYE) для Oracle 19 давно неактуальна

Легковоспроизводимый тесткейс с заменой VIEW -> INLINE VIEW и использованием inline PL/SQL function: (more…)

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

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

Создайте подобный сайт на WordPress.com
Начало работы