Oracle mechanics

14.07.2017

12c CDB: особенности отображения блокировок, скрипт LOCK_TREE_LOCAL_CDB

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

В PDB snapshot copy окружении версии 12.1.0.2:

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Session altered.

SQL> select con_id, name from v$containers;

CON_ID NAME
------ ---------------
     1 CDB$ROOT
     2 PDB$SEED
     3 PDBCLONE0101
...
    15 PDBCLONE0113
...

18 rows selected.

Артём Горбик показал странно отображаемую сессию-блокер:

SQL> select service_name,con_id,program from gv$session where sid=4921;

SERVICE_NAME CON_ID PROGRAM
------------ ------ ----------------------
SYS$USERS         1 oracle@hostname (J017)

— формально работающую в CDB$ROOT:

SQL> select name, con_id from v$containers where con_id=1;

NAME                     CON_ID
-------------------- ----------
CDB$ROOT                      1

, и в то же время выполняющую Scheduler Job в контейнере-клоне:

SQL> select SESSION_ID,JOB_NAME,con_id from cdb_scheduler_running_jobs where session_id = 4921;

SESSION_ID JOB_NAME               CON_ID
---------- ------------------ ----------
      4921 update_mviews              15

SQL> select name, con_id from v$containers where con_id=15;

NAME                     CON_ID
-------------------- ----------
PDBCLONE0113                 15

Модифицировал под это дело скрипт (с суффиксом _CDB), добавив к инстансу/сессии (INST#/SID#4) номер контейнера — CON#:

SQL> @lock_tree_local_cdb

BLOCKING_TREE             PROGRAM                  Event name                   REQ_OBJECT                     LAST_CALL_ET  SECS_IN_WAIT BLOCK_SESSTAT PDM SQL_ID        SQL_TEXT                                                                     P2TEXT
------------------------- ------------------------ ---------------------------- ------------------------------ ------------- ------------ ------------- --- ------------- ---------------------------------------------------------------------------- ---------------------------
INST#1 SID#4921 CON#1     oracle@hostname (J017)   db file sequential read      .                                      50601            0 NO HOLDER     NO  2rz306rbswxgv INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO "JOE_BLACK"."MV_TAG_BANNERS" with  block# block#              
  INST#1 SID#2513 CON#15  JDBC Thin Client         enq: JI - contention         TABLE JOE_BLACK.MV_TAG_BANNERS         14319         4866 VALID         NO  619hmgkq9yq30 ALTER MATERIALIZED VIEW "JOE_BLACK"."MV_TAG_BANNERS" COMPILE                 view object # view object #
INST#1 SID#4159 CON#0     oracle@hostname (CKPT)   rdbms ipc message            .                                     871889            0 NO HOLDER     NO                                                                                                                        
  INST#1 SID#621 CON#8    JDBC Thin Client         enq: RO - fast object reuse  .                                        274            7 VALID         NO  gh71vz20k70j4 alter table TEST_LOGS_AND_DELTAS drop partition for (TO_DATE(                2 2

— и в выводе скрипта кроме ожидаемой блокировки системным процессом CKPT (SID#4159 CON#0) пользовательской DDL операции SID#621 CON#8 (что ожидаемо и соответствует CDB конфигурации с единственным процессом CKPT), можно видеть как Scheduler Job сессия SID#4921 из CON#1 (CDB$ROOT), обновляющая матвью JOE_BLACK.MV_TAG_BANNERS, блокирует SID#2513 из CON#15 (PDBCLONE0113) на enq: JI — contention — что, похоже, является особенностью отображения V$SESSION в CDB и хорошо видно если переключиться в контейнер №15:

SQL> ALTER SESSION SET CONTAINER = PDBCLONE0113;

Session altered.

SQL> select sid from v$session where sid in (4921,2513);

       SID
----------
      2513 -- блокирующая сессия 4921 не отражена в V$SESSION!

1 row selected.

При этом картина блокировок в V$LOCK отображается верно:

SQL> select * from v$lock where sid in (4921,2513);

   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK     CON_ID
------ -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
  2513 AE        100          0          4          0      14789          0         15
  4921 JI    4483287          0          6          0      51016          1         15 -- locking SID = 4921
  4921 TX    8781851      37888          6          0      51008          0          0
  4921 TM        631          0          3          0      51007          0         15
  2513 JI    4483287          0          0          6       5283          0         15 -- locked SID  = 2513
  4921 TM    4483287          0          3          0      51007          0         15
  4921 JQ          0        363          6          0      51017          0         15
  4921 TM    2374045          0          3          0      51001          0         15
Реклама

Добавить комментарий »

Комментариев нет.

RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Блог на WordPress.com.

%d такие блоггеры, как: