ITPub博客

首页 > 数据库 > Oracle > [20240516]关于v$db_object_cache视图.txt

[20240516]关于v$db_object_cache视图.txt

原创 Oracle 作者:lfree 时间:2024-05-18 21:27:22 0 删除 编辑

[20240516]关于v$db_object_cache视图.txt

--//估计很少人使用这个视图,我记忆里知道使用因为查询full_hash_value.学习sql_id,hash_value计算.
--//实际上这个视图底层就是x$kglob,简单探究看看,主要x$kglob里面字段晦涩难懂.
--//对应看看,顺便建立一个脚本对照查询.

1.环境:
SCOTT@test01p> @ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.2.0.1.0     Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0

2.看看定义:

SYS@test> @ v v$db_object_cache
Show SQL text of views matching "%v$db_object_cache%"...

no rows selected

VIEW_NAME                      TEXT
------------------------------ ----------------------------------------------------------------------------------------------------
GV$DB_OBJECT_CACHE             select inst_id,kglnaown,kglnaobj,kglnadlk,kglhdnsd,kglobtyd,
                               kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6,
                               kglhdldc,kglhdexc,kglhdlkc,kglobpc0,decode(kglhdkmk,0,'NO','YES'),kglhdclt, kglhdivc, kglnahsh,
                               decode(kglhdlmd,                        0, 'NONE',                       1, 'NULL',
                               2, 'SHARED',                     3, 'EXCLUSIVE',                  'UNKOWN'),
                               decode(kglhdpmd,                        0, 'NONE',                       1, 'NULL',
                               2, 'SHARED',                     3, 'EXCLUSIVE',                  'UNKOWN'),
                               decode(kglobsta,                        1, 'VALID',                      2, 'VALID_AUTH_ERROR',
                               3, 'VALID_COMPILE_ERROR',        4, 'VALID_UNAUTH',               5, 'INVALID_UNAUTH',
                               6, 'INVALID',                    'UNKOWN'),
                               substr(to_char(kglnatim,'YYYY-MM-DD/HH24:MI:SS'),1,19),
                               substr(to_char(kglnaptm,'YYYY-MM-DD/HH24:MI:SS'),1,19), kgloblct, kglobpct, kglobprop, kglnahsv,
                               con_id, KGLNACON,  kglhdadr, kglnaedn  from x$kglob where kglnaobj is not null

V$DB_OBJECT_CACHE              select  OWNER , NAME , DB_LINK , NAMESPACE , TYPE , SHARABLE_MEM , LOADS ,   EXECUTIONS , LOCKS ,
                               PINS , KEPT , CHILD_LATCH , INVALIDATIONS, HASH_VALUE,   LOCK_MODE, PIN_MODE, STATUS, TIMESTAMP,
                               PREVIOUS_TIMESTAMP,                   LOCKED_TOTAL, PINNED_TOTAL, PROPERTY, FULL_HASH_VALUE,
                               CON_ID, CON_NAME,      ADDR, EDITION from GV$DB_OBJECT_CACHE where inst_id = USERENV('Instance')


--//建立一个对照表,方便学习查阅:
-----------------------------------------------------------------------------------------------------------------------------------------------------------
GV$DB_OBJECT_CACHE      X$KGLOB
-----------------------------------------------------------------------------------------------------------------------------------------------------------
INST_ID                 inst_id
OWNER                   KGLNAOWN
NAME                    kglnaobj
DB_LINK                 kglnadlk
NAMESPACE               kglhdnsd
TYPE                    kglobtyd
SHARABLE_MEM            kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6
LOADS                   kglhdldc
EXECUTIONS              kglhdexc
LOCKS                   kglhdlkc
PINS                    kglobpc0
KEPT                    decode(kglhdkmk,0,'NO','YES')
CHILD_LATCH             kglhdclt
INVALIDATIONS           kglhdivc
HASH_VALUE              kglnahsh
LOCK_MODE               decode(kglhdlmd,0, 'NONE',1, 'NULL', 2, 'SHARED',3, 'EXCLUSIVE','UNKOWN')
PIN_MODE                decode(kglhdpmd,0, 'NONE',1, 'NULL', 2, 'SHARED',3, 'EXCLUSIVE','UNKOWN')
STATUS                  decode(kglobsta,1, 'VALID',2,'VALID_AUTH_ERROR',3,'VALID_COMPILE_ERROR',4,'VALID_UNAUTH',5,'INVALID_UNAUTH',6,'INVALID','UNKOWN')
TIMESTAMP               substr(to_char(kglnatim,'YYYY-MM-DD/HH24:MI:SS'),1,19)
PREVIOUS_TIMESTAMP      substr(to_char(kglnaptm,'YYYY-MM-DD/HH24:MI:SS'),1,19)
LOCKED_TOTAL            kgloblct
PINNED_TOTAL            kglobpct
PROPERTY                kglobprop
FULL_HASH_VALUE         kglnahsv
CON_ID                  con_id
CON_NAME                KGLNACON
ADDR                    kglhdadr
EDITION                 kglnaedn
SQL_ID                  KGLOBT03 --//注:GV$DB_OBJECT_CACHE视图没有这个字段我加上的.
---------------------------------------------------------------------------------------------------------------------------------------------------------

3.建立脚本:
--//我感觉该视图定义缺少sql_id有点不合理,建立一个对照可以执行的脚本:
$ cat kblog.sql
select  /*+ USE_CONCAT(@"SEL$1" 8 OR_PREDICATES(1)) */
 inst_id                                                                                                                           INST_ID
,KGLNAOWN                                                                                                                          OWNER
,kglnaobj                                                                                                                          NAME
,kglnadlk                                                                                                                          DB_LINK
,kglhdnsd                                                                                                                          NAMESPACE
,kglobtyd                                                                                                                          TYPE
,kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6                                                                    SHARABLE_MEM
,kglhdldc                                                                                                                          LOADS
,kglhdexc                                                                                                                          EXECUTIONS
,kglhdlkc                                                                                                                          LOCKS
,kglobpc0                                                                                                                          PINS
,decode(kglhdkmk,0,'NO','YES')                                                                                                     KEPT
,kglhdclt                                                                                                                          CHILD_LATCH
,kglhdivc                                                                                                                          INVALIDATIONS
,kglnahsh                                                                                                                          HASH_VALUE
,decode(kglhdlmd,0, 'NONE',1, 'NULL', 2, 'SHARED',3, 'EXCLUSIVE','UNKOWN')                                                         LOCK_MODE
,decode(kglhdpmd,0, 'NONE',1, 'NULL', 2, 'SHARED',3, 'EXCLUSIVE','UNKOWN')                                                         PIN_MODE
,decode(kglobsta,1, 'VALID',2,'VALID_AUTH_ERROR',3,'VALID_COMPILE_ERROR',4,'VALID_UNAUTH',5,'INVALID_UNAUTH',6,'INVALID','UNKOWN') STATUS
,substr(to_char(kglnatim,'YYYY-MM-DD/HH24:MI:SS'),1,19)                                                                            TIMESTAMP
,substr(to_char(kglnaptm,'YYYY-MM-DD/HH24:MI:SS'),1,19)                                                                            PREVIOUS_TIMESTAMP
,kgloblct                                                                                                                          LOCKED_TOTAL
,kglobpct                                                                                                                          PINNED_TOTAL
,kglobprop                                                                                                                         PROPERTY
,kglnahsv                                                                                                                          FULL_HASH_VALUE
,con_id                                                                                                                            CON_ID
,KGLNACON                                                                                                                          CON_NAME
,kglhdadr                                                                                                                          ADDR
,kglnaedn                                                                                                                          EDITION
,KGLOBT03                                                                                                                          SQL_ID
from x$kglob
where kglnaobj is not null and (KGLOBT03 = lower('&1') or  KGLNAHSH= &2);

-//简单测试看看:
select sysdate from dual;
select sysdate from dual;
select sysdate from dual;

SYS@test> @ hash
 HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX   SQL_EXEC_START      SQL_EXEC_ID
----------- ------------- ------------ ---------- --------------- ---------- ------------------- -----------
 2343063137 7h35uxf5uhmm1            0      20065      1388734953  8ba84e61  2024-05-17 22:56:53    16777218

SYS@test> @ kglob 7h35uxf5uhmm1 0
SYS@test> @ prxx
==============================
INST_ID                       : 1
OWNER                         :
NAME                          : select sysdate from dual
DB_LINK                       :
NAMESPACE                     : SQL AREA
TYPE                          : CURSOR
SHARABLE_MEM                  : 12160
LOADS                         : 1
EXECUTIONS                    : 3
LOCKS                         : 1
PINS                          : 0
KEPT                          : NO
CHILD_LATCH                   : 0
INVALIDATIONS                 : 0
HASH_VALUE                    : 2343063137
LOCK_MODE                     : NULL
PIN_MODE                      : NONE
STATUS                        : VALID
TIMESTAMP                     : 2024-05-17/22:56:52
PREVIOUS_TIMESTAMP            :
LOCKED_TOTAL                  : 3
PINNED_TOTAL                  : 4
PROPERTY                      :
FULL_HASH_VALUE               : b3dbd4abf1156b09780cbaeb8ba84e61
CON_ID                        : 1
CON_NAME                      :
ADDR                          : 000007FF154B8C68
EDITION                       :
SQL_ID                        : 7h35uxf5uhmm1
==============================
INST_ID                       : 1
OWNER                         :
NAME                          : select sysdate from dual
DB_LINK                       :
NAMESPACE                     : SQL AREA
TYPE                          : CURSOR
SHARABLE_MEM                  : 4072
LOADS                         : 2
EXECUTIONS                    : 3
LOCKS                         : 1
PINS                          : 0
KEPT                          : NO
CHILD_LATCH                   : 20065
INVALIDATIONS                 : 0
HASH_VALUE                    : 2343063137
LOCK_MODE                     : NULL
PIN_MODE                      : NONE
STATUS                        : VALID
TIMESTAMP                     : 2024-05-17/22:56:52
PREVIOUS_TIMESTAMP            :
LOCKED_TOTAL                  : 3
PINNED_TOTAL                  : 1
PROPERTY                      :
FULL_HASH_VALUE               : b3dbd4abf1156b09780cbaeb8ba84e61
CON_ID                        : 1
CON_NAME                      :
ADDR                          : 000007FF007C34D0
EDITION                       :
SQL_ID                        : 7h35uxf5uhmm1

PL/SQL procedure successfully completed.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3015895/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969909