[20240930]关于共享池-表对象在库缓存探究2.txt --//以前探究过sql语句在共享池存在父子游标,父游标存在堆0,子游标堆0,堆6,通过各种指针链接起来, --//父游标的堆0上保存了所有子游标的列表和各个子游标的句柄指针,子游标的堆6中保存了解析过的执行计划等解析信息。 --//前几天测试表对象在库缓存探究,测试中遇到许多问题,今天重新测试看看,使用scott.dept表。 1.环境: SCOTT@book01p> @ver2 ============================== PORT_STRING : x86_64/Linux 2.4.xx VERSION : 21.0.0.0.0 BANNER : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production BANNER_FULL : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 BANNER_LEGACY : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production CON_ID : 0 PL/SQL procedure successfully completed. SCOTT@book01p> @desc dept Name Null? Type ------------------------------- -------- ---------------------------- 1 DEPTNO NOT NULL NUMBER(2) 2 DNAME VARCHAR2(14) 3 LOC VARCHAR2(13) SYS@book> @ nmsp table/ -1 @ nmsp table -1 @ nmsp '' 74 or @ nmsp '' 0x4a|x4a KGLSTDSC KGLSTIDN KGLSTIDN_HEX ---------------------------------------------------------------- ---------- ------------ TABLE/PROCEDURE 1 1 $ sql_idz.sh 'DEPT.SCOTT.BOOK01P\x1\0\0\0' 3 sql_text = DEPT.SCOTT.BOOK01P\x1\0\0\0 full_hash_value(16) = 05DB243908B3C797B99628590EDB820C or 05db243908b3c797b99628590edb820c xxxxx_matching_signature(10) = -5073823567219817972 or 13372920506489733644 hash_value(10) = 249266700 or hash_value(16) = 0EDB820C or 0edb820c sql_id(32) = bm5j8b47dr0hc sql_id(32) = bm5j8b47dr0hc sql_id(32) = bm5j8b47dr0hc --//表的名字空间1,这样参与计算的字符串是 table_name.owner.con_name\x1\0\0\0 .以后计算结果 hash_value(10) = 249266700. --//注:表为非sql语句不存在sql_id。 2.测试: --//随便执行一条关于表dept的sql语句,表对象就会加载到库缓存中。或者执行desc dept也可以,避免刷出,可以执行多次。 SYS@book> @ sharepool/shp4 0 249266700 SYS@book> @ pr ============================== HANDLE_TYPE : parent handle address KGLHDADR : 0000000062452578 KGLHDPAR : 0000000062452578 C40 : DEPT.SCOTT KGLHDLMD : 0 KGLHDPMD : 0 KGLHDIVC : 0 KGLOBHD0 : 0000000063586360 KGLOBHD6 : 00 KGLOBHS0 : 4064 KGLOBHS6 : 0 KGLOBT16 : 0 N0_6_16 : 4064 N20 : 4064 KGLNAHSH : 249266700 KGLOBT03 : KGLOBT09 : 0 PL/SQL procedure successfully completed. SYS@book> select KGLOBHD0 ,KGLOBHD1 ,KGLOBHD2 ,KGLOBHD3 ,KGLOBHD4 ,KGLOBHD5 ,KGLOBHD6 ,KGLOBHD7 from x$kglob where KGLNAHSH=249266700; KGLOBHD0 KGLOBHD1 KGLOBHD2 KGLOBHD3 KGLOBHD4 KGLOBHD5 KGLOBHD6 KGLOBHD7 ---------------- ---------------- ---------------- ---------------- ---------------- ---------------- ---------------- ---------------- 0000000063586360 00 00 00 00 00 00 00 --//仅仅存在堆0。 SYS@book> @ fchaz 0000000062452578 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 0000000062452548 1 1 KGLHD 816 recr 80 00 0000000062452548 0000000062452878 --//表对象dept父句柄占用816字节。 SYS@book> @ fchaz 0000000063586360 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 00000000635862F0 1 1 KGLDA 512 freeabl 0 00 00000000635862F0 00000000635864F0 --//堆0描述符用512字节。 --//我一直有1个奇怪的想法,oracle为什么句柄,堆描述符的KSMCHCOM后面不追加^edb820c,这样不是很清晰吗? SYS@book> @ ksmsp 0000000063586360 0=1 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- ------------------------- SGA 00000000635862F0 1 1 KGLDA 512 freeabl 0 00 00000000635862F0 00000000635864F0 SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 KSMCHPAR=0000000063586360 --//堆0占用4096字节。 SYS@book> @opeek 0000000062451018 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3917_0001.trc Statement processed. [062451018, 062452018) = 00001001 80B38F00 62450E18 00000000 63593870 00000000 6855E5C0 00000000 67555388 00000000 01000003 00060FFF 63586360 00000000 ... --//打开转储文件可以发现如下内容: 062451530 00000000 00000000 00000FD0 534C474B [............KGLS] 062451540 6264655E 63303238 27000000 00387FFF [^edb820c...'..8.] 062451550 7FFF0030 00000FE0 00010003 00000401 [0...............] 062451560 00000000 00000000 61EE46B8 00000000 [.........F.a....] 062451570 61EE4708 00000000 00000061 00B38F00 [.G.a....a.......] 062451580 156BF6DC 00000000 62451648 00000000 [..k.....H.Eb....] 062451590 6818E9A0 00000000 00000000 00040041 [...h........A...] 0624515A0 00000000 00000000 00000FC0 000001C0 [................] 0624515B0 62451108 00000000 6818DB70 00000000 [..Eb....p..h....] 0624515C0 00000009 00000000 0013907F 00000000 [................] 0624515D0 7C7F37D8 00000000 00000061 00B38F00 [.7.|....a.......] 0624515E0 156BF6DC 00000000 624516E0 00000000 [..k.......Eb....] 0624515F0 67B64E48 00000000 00000000 00040041 [HN.g........A...] 062451600 00000000 00000000 00000FC0 00000A08 [................] 062451610 62451108 00000000 67B63F38 00000000 [..Eb....8?.g....] 062451620 0000000A 00000000 0013907F 00000000 [................] 062451630 7C7F37D8 00000000 00000099 00B38F00 [.7.|............] 062451640 17ADE2C8 00000000 601FA3C8 00000000 [...........`....] 062451650 00000000 00000000 62451588 00000000 [..........Eb....] 062451660 6818DB70 00000000 6818DB80 00000000 [p..h.......h....] 062451670 00000000 00000000 00000000 00000000 [................] 062451680 00010200 0000FFFF 00000000 00000000 [................] 062451690 00000FD0 534C474B 6264655E 63303238 [....KGLS^edb820c] 0624516A0 27000000 00387FFF 7FFF0030 00000FE0 [...'..8.0.......] 0624516B0 00010003 00000401 00000000 00000000 [................] 0624516C0 6818DBC0 00000000 6818DC10 00000000 [...h.......h....] 0624516D0 00000099 00B38F00 17ADE2C8 00000000 [................] 0624516E0 601FA3C8 00000000 00000000 00000000 [...`............] 0624516F0 624515E8 00000000 67B63F38 00000000 [..Eb....8?.g....] 062451700 67B63F48 00000000 00000000 00000000 [H?.g............] 062451710 00000000 00000000 00010200 0000FFFF [................] 062451720 00000000 00000000 00000FD0 534C474B [............KGLS] 062451730 6264655E 63303238 27000000 00387FFF [^edb820c...'..8.] 062451740 7FFF0030 00000FE0 00010003 00000401 [0...............] --//出现KGLS^edb820c 内容3次,而后面 edb820c = 249266700,正好与表的hash值对上。 SYS@book> @ ksmsp 0000000063586360 "regexp_like(KSMCHCOM,'edb820c') order by KSMCHPAR" LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC --- ---------------- -------- -------- ------------- -------- -------- -------- ---------------- ---------------- ----------------- ------------------------- SGA 00000000635862F0 1 1 KGLDA 512 freeabl 0 00 00000000635862F0 00000000635864F0 --//堆0描述符 SGA 0000000061EE4638 1 4 KGLS^edb820c 4096 recr 4095 00000000624514F0 0000000061EE4638 0000000061EE5638 SGA 000000006818DB40 1 4 KGLS^edb820c 4096 recr 4095 0000000062451648 000000006818DB40 000000006818EB40 SGA 0000000067B63F08 1 4 KGLS^edb820c 4096 recr 4095 00000000624516E0 0000000067B63F08 0000000067B64F08 SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 KSMCHPAR=0000000063586360--//堆0 --//注:我开始也以为是hash冲突,不过转储堆0的内容也存在类似信息,说明不大可能。 SYS@book> @ fchaz 00000000624514F0 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 SYS@book> @ fchaz 0000000062451648 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 SYS@book> @ fchaz 00000000624516E0 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 --//这3个地址都在堆0中,说明指向的3个chunk也是属于表对象的相关信息。 3.转储看看里面内容: SYS@book> @ opeek 0000000061EE4638 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3917_0002.trc Statement processed. [061EE4638, 061EE5638) = 00001001 80B38F00 61EE3638 00000000 6818DB50 00000000 60204EF8 00000000 661A9A90 00000000 00000003 00020FFF 624514F0 00000000 ... SYS@book> @ opeek 000000006818DB40 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3917_0003.trc Statement processed. [06818DB40, 06818EB40) = 00001001 80B38F00 6818CB40 00000000 67B63F18 00000000 61EE4648 00000000 675554F0 00000000 00000003 00020FFF 62451648 00000000 ... SYS@book> @ opeek 0000000067B63F08 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3917_0004.trc Statement processed. [067B63F08, 067B64F08) = 00001001 80B38F00 67B62F08 00000000 6348D9D0 00000000 6818DB50 00000000 675554C8 00000000 00000003 00020FFF 624516E0 00000000 ... $ cdf /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3917_0004.trc cd /u01/app/oracle/diag/rdbms/book/book/trace $ egrep "DNAME|LOC|DEPTNO|NULL" book_ora_3917_000[234].trc book_ora_3917_0002.trc:061EE4A60 00000000 00000000 4F4C0003 00000043 [..........LOC...] book_ora_3917_0002.trc:061EE4C20 4E440005 00454D41 00000000 00000000 [..DNAME.........] book_ora_3917_0002.trc:061EE4DB0 00000000 00000000 45440006 4F4E5450 [..........DEPTNO] book_ora_3917_0003.trc:06818DF70 4F4C0003 00000043 00000000 00000000 [..LOC...........] book_ora_3917_0003.trc:06818E120 00000000 00000000 4E440005 00454D41 [..........DNAME.] book_ora_3917_0003.trc:06818E2C0 45440006 4F4E5450 00000000 00000000 [..DEPTNO........] --//可以发现有2个chunk存在表字段信息。 --//注:关于转储的测试多次,大部分情况仅仅1个转储有表字段信息,其他2个转储文件根本看不出是什么内容。 4.加入一些约束看看: SCOTT@book01p> alter table dept modify(dname not null ,loc not null); Table altered. SYS@book> @ sharepool/shp4 0 249266700 SYS@book> @ pr ============================== HANDLE_TYPE : parent handle address KGLHDADR : 0000000062452578 KGLHDPAR : 0000000062452578 C40 : DEPT.SCOTT KGLHDLMD : 0 KGLHDPMD : 0 KGLHDIVC : 0 KGLOBHD0 : 0000000063586360 KGLOBHD6 : 00 KGLOBHS0 : 4064 KGLOBHS6 : 0 KGLOBT16 : 0 N0_6_16 : 4064 N20 : 4064 KGLNAHSH : 249266700 KGLOBT03 : KGLOBT09 : 0 PL/SQL procedure successfully completed. --//句柄以及堆0都在。 SYS@book> @ ksmsp 0000000063586360 "regexp_like(KSMCHCOM,'edb820c') order by KSMCHPAR" LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- ------------------------- SGA 00000000635862F0 1 1 KGLDA 512 freeabl 0 00 00000000635862F0 00000000635864F0 SGA 0000000067B63F08 1 4 KGLS^edb820c 4096 recr 4095 00000000624514F0 0000000067B63F08 0000000067B64F08 SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 KSMCHPAR=0000000063586360 --//加入一些约束后一些chunk会刷新出共享池。KSMCHCOM=KGLS^edb820c仅仅存在1个chunk。 SCOTT@book01p> @desc dept Name Null? Type ------------------------------- -------- ---------------------------- 1 DEPTNO NOT NULL NUMBER(2) 2 DNAME NOT NULL VARCHAR2(14) 3 LOC NOT NULL VARCHAR2(13) SYS@book> @ ksmsp 0000000063586360 "regexp_like(KSMCHCOM,'edb820c') order by KSMCHPAR" LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- ------------------------- SGA 00000000635862F0 1 1 KGLDA 512 freeabl 0 00 00000000635862F0 00000000635864F0 SGA 0000000067B63F08 1 4 KGLS^edb820c 4096 recr 4095 00000000624514F0 0000000067B63F08 0000000067B64F08 SGA 0000000062AB3990 1 4 KGLS^edb820c 4096 recr 4095 0000000062451648 0000000062AB3990 0000000062AB4990 SGA 0000000061EE4638 1 4 KGLS^edb820c 4096 freeabl 0 00000000624516E0 0000000061EE4638 0000000061EE5638 SGA 000000006818DB40 1 4 KGLS^edb820c 4096 freeabl 0 00000000624516E0 000000006818DB40 000000006818EB40 SGA 0000000062AAF990 1 4 KGLS^edb820c 4096 recr 4095 00000000624516E0 0000000062AAF990 0000000062AB0990 SGA 0000000062451018 1 1 KGLH0^edb820c 4096 recr 4095 0000000063586360 0000000062451018 0000000062452018 KSMCHPAR=0000000063586360 7 rows selected. --//前面相同的查询仅仅看到5条记录,而现在看到7条记录。 --//KSMCHPAR=00000000624516E0的记录有3条,可以猜测这个KSMCHPAR=00000000624516E0指向的chunk保存的是约束定义。 --//我感觉有点吃惊的是仅仅增加2个字段的非null约束,就增加2个chunk,难道1个chunk仅仅保存1个约束条件吗? SYS@book> @ opeek 0000000067B63F08 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_4412_0001.trc Statement processed. [067B63F08, 067B64F08) = 00001001 80B38F00 67B62F08 00000000 62AB39A0 00000000 60204980 00000000 675554F0 00000000 00000003 00020FFF 624514F0 00000000 ... SYS@book> @ opeek 0000000062AB3990 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_4412_0002.trc Statement processed. [062AB3990, 062AB4990) = 00001001 80B38F00 62AB2990 00000000 62AAF9A0 00000000 67B63F18 00000000 696FC040 00000000 00000003 00020FFF 62451648 00000000 ... SYS@book> @ opeek 0000000061EE4638 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_4412_0003.trc Statement processed. [061EE4638, 061EE5638) = 00001001 00B38F00 61EE3638 00000000 60200628 00000000 00000003 00000000 624516E0 00000000 6818DB60 00000000 00000701 C0B38F00 ... SYS@book> @ opeek 000000006818DB40 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_4412_0004.trc Statement processed. [06818DB40, 06818EB40) = 00001001 00B38F00 6818CB40 00000000 60200628 00000000 00000003 00000000 624516E0 00000000 62AAF9C0 00000000 00000701 C0B38F00 ... SYS@book> @ opeek 0000000062AAF990 4096 1 New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_4412_0005.trc Statement processed. [062AAF990, 062AB0990) = 00001001 80B38F00 62AAE990 00000000 61536F80 00000000 62AB39A0 00000000 696FC018 00000000 00000003 00020FFF 624516E0 00000000 ... $ egrep "DNAME|LOC|DEPTNO|NULL" book_ora_4412_000?.trc book_ora_4412_0001.trc:067B64330 00000000 00000000 4F4C0003 00000043 [..........LOC...] book_ora_4412_0001.trc:067B644F0 4E440005 00454D41 00000000 00000000 [..DNAME.........] book_ora_4412_0001.trc:067B64680 00000000 00000000 45440006 4F4E5450 [..........DEPTNO] book_ora_4412_0002.trc:062AB40A0 15B50E98 00007F57 414E4422 2022454D [....W..."DNAME" ] book_ora_4412_0002.trc:062AB40B0 4E205349 4E20544F 004C4C55 00000000 [IS NOT NULL.....] book_ora_4412_0003.trc:061EE4A60 00000000 00000000 4F4C0003 00000043 [..........LOC...] book_ora_4412_0003.trc:061EE4C20 4E440005 00454D41 00000000 00000000 [..DNAME.........] book_ora_4412_0004.trc:06818DF70 4F4C0003 00000043 00000000 00000000 [..LOC...........] book_ora_4412_0004.trc:06818E120 00000000 00000000 4E440005 00454D41 [..........DNAME.] --//KSMCHPAR=00000000624514F0 确实是表定义应该没有问题。 --//KSMCHPAR=00000000624516E0 指向3个chunk,保存应该是约束定义(我猜测)。但是并没有看到is not null的信息。 --//KSMCHPAR=0000000062451648 执行的chunk保存是什么确实猜测不出来。 4,简单总结: --//以上仅仅是我的猜测,表对象父句柄,堆0,堆0描述符。 --//堆0里面保存KSMCHCOM=KGLS^<hash_hex>的堆描述符,存在3个,其中1个指向表定义,另外1个指向是约束。 --//没有想到约束消耗空间还很大,几乎1个约束1个chunk,大约4k。 --//注:这个很容易测试,你可以建立多个字段的空表,然后对比加入约束与不加入约束的情况比较就很清楚了。 --//至于里面的信息转储我真心看不出来。 --//还有1个我猜测不出来,看到的大部分信息是乱码。 5.附上测试使用的脚本: $ type cdf cdf is a function cdf () { echo cd $(dirname $1); cd $(dirname $1) } $ cat opeek.sql @ ti oradebug setmypid oradebug peek 0x&1 &2 &3 prompt --//ti.sql来自tpt包。 $ cat ksmsp.sql -- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions. -------------------------------------------------------------------------------- -- -- File name: fcha.sql (Find CHunk Address) v0.2 -- Purpose: Find in which heap (UGA, PGA or Shared Pool) a memory address resides -- -- Author: Tanel Poder -- Copyright: (c) http://blog.tanelpoder.com | @tanelpoder -- -- Usage: @fchaz <addr_hex> -- -- @fchaz F6A14448 -- -- -- Other: This would only report an UGA/PGA chunk address if it belongs -- to *your* process/session (x$ksmup and x$ksmpp do not see other -- session/process memory) -- -------------------------------------------------------------------------------- --prompt Find in which heap (UGA, PGA or Shared Pool) the memory address &1 resides... --prompt --prompt WARNING!!! This script will query X$KSMSP, which will cause heavy shared pool latch contention --prompt in systems under load and with large shared pool. This may even completely hang --prompt your instance until the query has finished! You probably do not want to run this in production! --prompt --pause Press ENTER to continue, CTRL+C to cancel... col fcura_addrlen new_value _fcura_addrlen format 999 set termout off select vsize(addr)*2 fcura_addrlen from x$dual; col 2 new_value 2 select null "2" from dual where 1=0; select decode('&2',null,'0=1',0,'0=1','&2') "2" from dual; set termout on SELECT 'SGA' LOC ,KSMCHPTR ,KSMCHIDX ,KSMCHDUR ,KSMCHCOM ,KSMCHSIZ ,KSMCHCLS ,KSMCHTYP ,KSMCHPAR ,KSMCHPTR KSMCHPTR_BEGIN ,TO_CHAR ( TO_NUMBER (KSMCHPTR, 'XXXXXXXXXXXXXXXX') + KSMCHSIZ ,'FM0XXXXXXXXXXXXXXX' ) "KSMCHPTR_END+1" , DECODE ( ksmchpar , HEXTORAW (LPAD (UPPER ('&1'), &_fcura_addrlen, '0')),'KSMCHPAR=&1') heap_desc FROM x$ksmsp WHERE ksmchptr = HEXTORAW (LPAD (UPPER ('&1'), &_fcura_addrlen, '0')) OR ksmchpar = HEXTORAW (LPAD (UPPER ('&1'), &_fcura_addrlen, '0')) OR TO_NUMBER ( SUBSTR ('&1', INSTR (LOWER ('&1'), 'x') + 1) ,LPAD ('X', &_fcura_addrlen, 'X') ) BETWEEN TO_NUMBER (ksmchptr, LPAD ('X', &_fcura_addrlen, 'X')) AND TO_NUMBER (ksmchptr, LPAD ('X', &_fcura_addrlen, 'X')) + ksmchsiz - 1 OR &&2; $ cat sharepool/shp4.sql column N0_6_16 format 99999999 column handle_type format a22 set term off define vc=&&2 col 2 new_value 2 column text format a20 column hex_status format a10 SELECT text ,n10 "2" ,REPLACE (TO_CHAR (n10, LPAD ('x', 16, 'x')), ' ') c16 ,hex_status FROM (SELECT '&&vc' text -- ,DECODE ( hex_status ,'hex', TO_NUMBER ( SUBSTR ('&&vc', INSTR (LOWER ('&&vc'), 'x',-1) + 1) ,'xxxxxxxxxxxxxxxx') ,'dec', TO_NUMBER ('&&vc') ,0) n10 ,DECODE ( hex_status ,'hex', TO_NUMBER ( replace (lower('&&vc'), 'x') ,'xxxxxxxxxxxxxxxx') ,'dec', TO_NUMBER ('&&vc') ,0) n10 ,hex_status FROM (SELECT CASE WHEN REGEXP_LIKE (LOWER ('&&vc'), '^[0-9]+$') THEN 'dec' WHEN REGEXP_LIKE (LOWER ('&&vc') ,'^0?[xX]?[0-9a-f]+[xX]?$') THEN 'hex' ELSE 'other' END AS Hex_Status FROM DUAL)); set term on SELECT /*+ USE_CONCAT(@"SEL$1" 8 OR_PREDICATES(1)) */ DECODE (kglhdadr, kglhdpar, 'parent handle address', 'child handle address') handle_type, kglhdadr, kglhdpar, --//substr(kglnaobj,1,40) c40, substr(replace(nvl(decode(kglnaown, null, kglnaobj, kglnaobj||'.'||kglnaown), '(name not found)'),chr(13),'') ,1,40) c40, KGLHDLMD, KGLHDPMD, kglhdivc, kglobhd0, kglobhd6, kglobhs0,kglobhs6,kglobt16, kglobhs0+kglobhs6+kglobt16 N0_6_16, kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16 N20, kglnahsh, kglobt03, kglobt09 FROM x$kglob WHERE kglobt03 = lower('&1') or KGLNAHSH= &2;
[20240930]关于共享池-表对象在库缓存探究2.txt
来源:这里教程网
时间:2026-03-03 20:39:55
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 大事件! Oracle CloudWorld 是"真高光"还是"挤牙膏"?
- 掌握CMD命令:轻松切换IP地址
掌握CMD命令:轻松切换IP地址
26-03-03 - 5大公有云厂商增强很猛~作为DBA的,有点焦虑!
5大公有云厂商增强很猛~作为DBA的,有点焦虑!
26-03-03 - ORA-01558: out of transaction ID's in rollback segment SYSTEM---惜分飞
- 一个很小的系统为什么负载那么高?
一个很小的系统为什么负载那么高?
26-03-03 - 户外电力柜的新守护者:辐射制冷技术
户外电力柜的新守护者:辐射制冷技术
26-03-03 - 解锁大模型潜力:GBASE南大通用与英特尔共同推出向量数据库前沿技术
解锁大模型潜力:GBASE南大通用与英特尔共同推出向量数据库前沿技术
26-03-03 - oracle listener查询报错TNS-12560,TNS-00530,客户端ora-12514
- 数据库数据恢复—Oracle数据库打开报错的数据恢复案例
数据库数据恢复—Oracle数据库打开报错的数据恢复案例
26-03-03 - 回家过中秋?扎心,锁表导致系统挂了
回家过中秋?扎心,锁表导致系统挂了
26-03-03
