[20171107]dbms_shared_pool.pin.txt
--//昨天与别人聊天提到,如果dbms_shared_pool.pin对象,可以改变对应的chunk的类型.我自己也不确定,做一次测试.1.环境:SCOTT@book> @ &r/ver1PORT_STRING VERSION BANNER------------------------------ -------------- --------------------------------------------------------------------------------x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionSCOTT@book> create sequence seq2 order;Sequence created.SCOTT@book> select * from dba_sequences where sequence_name = 'SEQ2' and sequence_owner=user;SEQUENCE_OWNER SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER------------------------------ ------------------------------ ---------- ---------- ------------ - - ---------- -----------SCOTT SEQ2 1 1.0000E+28 1 N Y 20 1SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 1SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 2SCOTT@book> alter system flush shared_pool;System altered.SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 21--//可以发现如果我刷新共享池,seq2顺序号出现跳号现象.2.测试前检查seq2 chunk状态:select * from x$kglob a where kglobtyd='SEQUENCE' and kglnaobj='SEQ2';Record ViewAs of: 2017/11/7 11:22:41ADDR: 00007F8F5EE5FA90INDX: 942INST_ID: 1KGLHDADR: 000000007B988D28KGLHDPAR: 000000007B988D28KGLHDCLT: 119696KGLNAOWN: SCOTTKGLNAOBJ: SEQ2KGLFNOBJ: SEQ2KGLNADLK: KGLNAHSH: 3497251728KGLNAHSV: 8ab86e9923d83e59d93da6ffd073d390KGLNATIM: 2017/11/7 11:19:42KGLNAPTM: 2017/11/7 11:01:22KGLHDNSP: 1KGLHDNSD: TABLE/PROCEDUREKGLHDLMD: 1KGLHDPMD: 0KGLHDFLG: 10241KGLHDOBJ: 000000007C9107A0KGLHDLDC: 5KGLHDIVC: 0KGLHDEXC: 0KGLHDLKC: 2KGLHDKMK: 0~~~~~~~~~~~~~~KGLHDDMK: 1KGLHDAMK: 0KGLOBFLG: 4KGLOBSTA: 1KGLOBTYP: 6KGLOBTYD: SEQUENCEKGLOBHMK: 0KGLOBHS0: 4728KGLOBHS1: 0KGLOBHS2: 0KGLOBHS3: 0KGLOBHS4: 0KGLOBHS5: 0KGLOBHS6: 0KGLOBHS7: 0KGLOBHD0: 000000007BDC2F80KGLOBHD1: 00KGLOBHD2: 00KGLOBHD3: 00KGLOBHD4: 00KGLOBHD5: 00KGLOBHD6: 00KGLOBHD7: 00KGLOBPC0: 0KGLOBPC6: 0KGLOBTP0: 00KGLOBT00: 5KGLOBT01: 0KGLOBT02: 0KGLOBT03: KGLOBT04: 0KGLOBT05: 0KGLOBT35: 0KGLOBT06: 0KGLOBT07: 0KGLOBT08: 90561KGLOBT09: 10KGLOBT10: 0KGLOBT11: 1KGLOBT12: 0KGLOBT13: 0KGLOBT14: 0KGLOBT15: 0KGLOBT16: 0KGLOBT17: 0KGLOBT18: 0KGLOBT19: 0KGLOBT20: 0KGLOBT21: 0KGLOBT22: 0KGLOBT23: 9KGLOBT24: 16KGLOBT25: 0KGLOBT26: 0KGLOBT28: 0KGLOBT29: 0KGLOBT30: 0KGLOBT31: 0KGLOBT27: 0KGLOBT32: 0KGLOBT33: 0KGLOBWAP: 0KGLOBWCC: 0KGLOBWCL: 0KGLOBWUI: 0KGLOBWDW: 0KGLOBT42: 0KGLOBT43: 0KGLOBT44: 0KGLOBT45: 0KGLOBT46: 0KGLOBT47: 0KGLOBT49: 0KGLOBT50: 0KGLOBT52: 0KGLOBT53: 0KGLOBTL0: 0KGLOBTL1: 0KGLOBTS0: KGLOBTS1: KGLOBTN0: 22KGLOBTN1: 1KGLOBTN2: 1KGLOBTN3: 9999999999999999999999999999KGLOBTN4: 20KGLOBTN5: 41KGLOBTS2: KGLOBTS3: KGLOBTS5: KGLOBTT0: KGLOBCCE: KGLOBCCEH: 0KGLOBCLA: KGLOBCLC: 0KGLOBCCC: 0KGLOBTS4: KGLOBCBCA: KGLOBT48: 0KGLOBDSO: 0KGLOBDEX: 0KGLOBDPX: 0KGLOBDLD: 0KGLOBDIV: 0KGLOBDPS: 0KGLOBDDR: 0KGLOBDDW: 0KGLOBDBF: 0KGLOBDRO: 0KGLOBDCP: 0KGLOBDEL: 0KGLOBDFT: 0KGLOBDEF: 0KGLOBDUI: 0KGLOBDCL: 0KGLOBDAP: 0KGLOBDCC: 0KGLOBDPL: 0KGLOBDJV: 0KGLOBACS: 0KGLOBTS6: KGLOBTS7: KGLOBT54: 0KGLOBT55: 0KGLOBT56: 0KGLOBT57: 0KGLOBDCO: 0KGLOBDCI: 0KGLOBDRR: 0KGLOBDRB: 0KGLOBDWR: 0KGLOBDWB: 0KGLOBT58: 0KGLOBDOR: 0KGLHDMTX: 000000007B988E68KGLHDMVL: 0KGLHDMSP: 0KGLHDMGT: 110KGLHDDMTX: 000000007B988DD8KGLHDDVL: 0KGLHDDSP: 0KGLHDDGT: 8KGLHDBID: 119696KGLHDBMTX: 0000000080FE6278KGLHDBVL: 0KGLHDBSP: 0KGLHDBGT: 20KGLOBT59: 0KGLOBDCU: 0KGLOBPROP: --//注意: KGLHDADR: 000000007B988D28 KGLHDPAR: 000000007B988D28SYS@book> @ &r/sharepool/shp4 000000007B988D28 0old 18: WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2new 18: WHERE kglobt03 = '000000007B988D28' or kglhdpar='000000007B988D28' or kglhdadr='000000007B988D28' or KGLNAHSH= 0TEXT KGLHDADR KGLHDPAR C40 KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09-------------- ---------------- ---------------- ----- -------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------父游标句柄地址 000000007B988D28 000000007B988D28 SEQ2 0 000000007BDC2F80 00 4728 0 0 4728 4728 3497251728 10--//顺序号仅仅存在堆0(KGLOBHD0).没有堆6.SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007B988D28', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZold 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('&&1', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZnew 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007B988D28', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZADDR INDX INST_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------00007FFA00570A00 6932 1 1 1 KGLHD 000000007B988CF8 544 recr 80 00--//注意KSMCHCLS=recr.select a.* from x$ksmsp a where a.ksmchpar=hextoraw('000000007BDC2F80')old 1: select a.* from x$ksmsp a where a.ksmchpar=hextoraw('&&1')new 1: select a.* from x$ksmsp a where a.ksmchpar=hextoraw('000000007BDC2F80')ADDR INDX INST_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------00007FFA005C3158 5052 1 1 1 KGLH0^d073d390 000000007C9106F0 4096 recr 4095 000000007BDC2F80SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007BDC2F80', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZold 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('&&1', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZnew 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007BDC2F80', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZADDR INDX INST_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------00007FFA0059B0F0 6077 1 1 1 KGLDA 000000007BDC2F18 240 freeabl 0 00--//仅仅存在2种类型chunk:recr ,freeabl.3.测试keep pin后seq2状态:SYS@book> exec dbms_shared_pool.keep('SCOTT.SEQ2','Q');PL/SQL procedure successfully completed.SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 22SCOTT@book> alter system flush shared_pool;System altered.SCOTT@book> alter system flush shared_pool;System altered.SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 23--//可以发现keep后.seq2不会出现跳号情况.也就是刷新共享池seq2的chunk不会清除从共享池.SYS@book> @ &r/sharepool/shp4 000000007B988D28 0old 18: WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2new 18: WHERE kglobt03 = '000000007B988D28' or kglhdpar='000000007B988D28' or kglhdadr='000000007B988D28' or KGLNAHSH= 0TEXT KGLHDADR KGLHDPAR C40 KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09-------------- ---------------- ---------------- -------------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------父游标句柄地址 000000007B988D28 000000007B988D28 SEQ2 0 000000007BDC2F80 00 4728 0 0 4728 4728 3497251728 10--//顺序号仅仅存在堆0(KGLOBHD0).没有堆6.SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007B988D28', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZold 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('&&1', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZnew 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007B988D28', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZADDR INDX INST_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------00007FFA00571A70 5131 1 1 1 KGLHD 000000007B988CF8 544 recr 80 00--//注意KSMCHCLS=recr.old 1: select a.* from x$ksmsp a where a.ksmchpar=hextoraw('&&1')new 1: select a.* from x$ksmsp a where a.ksmchpar=hextoraw('000000007BDC2F80')ADDR INDX INST_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------00007FFA005B2560 3846 1 1 1 KGLH0^d073d390 000000007C9106F0 4096 recr 4095 000000007BDC2F80SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007BDC2F80', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZold 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('&&1', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZnew 1: SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007BDC2F80', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZADDR INDX INST_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------00007FFA005A2610 4548 1 1 1 KGLDA 000000007BDC2F18 240 freeabl 0 00--//很明显并不是想对方讲的那样chunk的类型发生了变化,还是与原来的一样.SELECT OWNER ,NAME ,DB_LINK ,NAMESPACE ,TYPE ,SHARABLE_MEM ,LOADS ,EXECUTIONS ,LOCKS ,PINS ,KEPT FROM V$DB_OBJECT_CACHE WHERE name = 'SEQ2' AND owner = 'SCOTT';OWNER NAME DB_LINK NAMESPACE TYPE SHARABLE_MEM LOADS EXECUTIONS LOCKS PINS KEP------ ----- -------- --------------- -------- ------------ ---------- ---------- ---------- ---------- ---SCOTT SEQ2 TABLE/PROCEDURE SEQUENCE 4728 5 0 2 0 YES--//猜测KEEP字段有关.看看底层定义:SYS@book> select * from V$FIXED_VIEW_DEFINITION where view_name='GV$DB_OBJECT_CACHE' ;VIEW_NAME VIEW_DEFINITION------------------------------ ----------------------------------------------------------------------------------------------------GV$DB_OBJECT_CACHE select inst_id,kglnaown,kglnaobj,kglnadlk,kglhdnsd,kglobtyd, kglobhs0+kglobhs1+kglobhs2+kglobhs3+kgl obhs4+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), kglobt23, kglobt24, kglobprop, kglnahsv from x$kglob where kglnaobj is not null--//可以发现内容 DECODE (kglhdkmk, 0, 'NO', 'YES'),也是kglhdkmk=0,没有keep.select * from x$kglob a where kglobtyd='SEQUENCE' and kglnaobj='SEQ2';Record ViewAs of: 2017/11/7 11:46:03ADDR: 00007F8F5F139D30INDX: 1582INST_ID: 1KGLHDADR: 000000007B988D28KGLHDPAR: 000000007B988D28KGLHDCLT: 119696KGLNAOWN: SCOTTKGLNAOBJ: SEQ2KGLFNOBJ: SEQ2KGLNADLK: KGLNAHSH: 3497251728KGLNAHSV: 8ab86e9923d83e59d93da6ffd073d390KGLNATIM: 2017/11/7 11:19:42KGLNAPTM: 2017/11/7 11:01:22KGLHDNSP: 1KGLHDNSD: TABLE/PROCEDUREKGLHDLMD: 1KGLHDPMD: 0KGLHDFLG: 8398849KGLHDOBJ: 000000007C9107A0KGLHDLDC: 5KGLHDIVC: 0KGLHDEXC: 0KGLHDLKC: 2KGLHDKMK: 1~~~~~~~~~~~~~~~KGLHDDMK: 1KGLHDAMK: 0KGLOBFLG: 4KGLOBSTA: 1KGLOBTYP: 6KGLOBTYD: SEQUENCEKGLOBHMK: 1KGLOBHS0: 4728KGLOBHS1: 0KGLOBHS2: 0KGLOBHS3: 0KGLOBHS4: 0KGLOBHS5: 0KGLOBHS6: 0KGLOBHS7: 0KGLOBHD0: 000000007BDC2F80KGLOBHD1: 00KGLOBHD2: 00KGLOBHD3: 00KGLOBHD4: 00KGLOBHD5: 00KGLOBHD6: 00KGLOBHD7: 00KGLOBPC0: 0KGLOBPC6: 0KGLOBTP0: 00KGLOBT00: 5KGLOBT01: 0KGLOBT02: 0KGLOBT03: KGLOBT04: 0KGLOBT05: 0KGLOBT35: 0KGLOBT06: 0KGLOBT07: 0KGLOBT08: 90561KGLOBT09: 10KGLOBT10: 0KGLOBT11: 1KGLOBT12: 0KGLOBT13: 0KGLOBT14: 0KGLOBT15: 0KGLOBT16: 0KGLOBT17: 0KGLOBT18: 0KGLOBT19: 0KGLOBT20: 0KGLOBT21: 0KGLOBT22: 0KGLOBT23: 14KGLOBT24: 27KGLOBT25: 0KGLOBT26: 0KGLOBT28: 0KGLOBT29: 0KGLOBT30: 0KGLOBT31: 0KGLOBT27: 0KGLOBT32: 0KGLOBT33: 0KGLOBWAP: 0KGLOBWCC: 0KGLOBWCL: 0KGLOBWUI: 0KGLOBWDW: 0KGLOBT42: 0KGLOBT43: 0KGLOBT44: 0KGLOBT45: 0KGLOBT46: 0KGLOBT47: 0KGLOBT49: 0KGLOBT50: 0KGLOBT52: 0KGLOBT53: 0KGLOBTL0: 0KGLOBTL1: 0KGLOBTS0: KGLOBTS1: KGLOBTN0: 25KGLOBTN1: 1KGLOBTN2: 1KGLOBTN3: 9999999999999999999999999999KGLOBTN4: 20KGLOBTN5: 41KGLOBTS2: KGLOBTS3: KGLOBTS5: KGLOBTT0: KGLOBCCE: KGLOBCCEH: 0KGLOBCLA: KGLOBCLC: 0KGLOBCCC: 0KGLOBTS4: KGLOBCBCA: KGLOBT48: 0KGLOBDSO: 0KGLOBDEX: 0KGLOBDPX: 0KGLOBDLD: 0KGLOBDIV: 0KGLOBDPS: 0KGLOBDDR: 0KGLOBDDW: 0KGLOBDBF: 0KGLOBDRO: 0KGLOBDCP: 0KGLOBDEL: 0KGLOBDFT: 0KGLOBDEF: 0KGLOBDUI: 0KGLOBDCL: 0KGLOBDAP: 0KGLOBDCC: 0KGLOBDPL: 0KGLOBDJV: 0KGLOBACS: 0KGLOBTS6: KGLOBTS7: KGLOBT54: 0KGLOBT55: 0KGLOBT56: 0KGLOBT57: 0KGLOBDCO: 0KGLOBDCI: 0KGLOBDRR: 0KGLOBDRB: 0KGLOBDWR: 0KGLOBDWB: 0KGLOBT58: 0KGLOBDOR: 0KGLHDMTX: 000000007B988E68KGLHDMVL: 0KGLHDMSP: 0KGLHDMGT: 188KGLHDDMTX: 000000007B988DD8KGLHDDVL: 0KGLHDDSP: 0KGLHDDGT: 12KGLHDBID: 119696KGLHDBMTX: 0000000080FE6278KGLHDBVL: 0KGLHDBSP: 0KGLHDBGT: 50KGLOBT59: 0KGLOBDCU: 0KGLOBPROP: --//注意看~下划线内容.--//取消kepp看看.SYS@book> exec dbms_shared_pool.unkeep('SCOTT.SEQ2','Q');PL/SQL procedure successfully completed.SELECT OWNER ,NAME ,DB_LINK ,NAMESPACE ,TYPE ,SHARABLE_MEM ,LOADS ,EXECUTIONS ,LOCKS ,PINS ,KEPT FROM V$DB_OBJECT_CACHE WHERE name = 'SEQ2' AND owner = 'SCOTT';OWNER NAME DB_LINK NAMESPACE TYPE SHARABLE_MEM LOADS EXECUTIONS LOCKS PINS KEP------ ---- ------- --------------- -------- ------------ ---------- ---------- ---------- ---------- ---SCOTT SEQ2 TABLE/PROCEDURE SEQUENCE 4728 5 0 2 0 NO--//补充:有一点点奇怪seq的NAMESPACE竟然是TABLE/PROCEDUR.也就是你无法再建立seq2的表在schema=scott模式下.SCOTT@book> create table seq2 ( a number);create table seq2 ( a number) *ERROR at line 1:ORA-00955: name is already used by an existing objectSCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 41SCOTT@book> alter system flush shared_pool;System altered.SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 61--//再次出现跳号.SCOTT@book> alter system flush shared_pool;System altered.SYS@book> @ &r/sharepool/shp4 000000007B988D28 0old 18: WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2new 18: WHERE kglobt03 = '000000007B988D28' or kglhdpar='000000007B988D28' or kglhdadr='000000007B988D28' or KGLNAHSH= 0TEXT KGLHDADR KGLHDPAR C40 KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09-------------- ---------------- ---------------- ----- --------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------父游标句柄地址 000000007B988D28 000000007B988D28 SEQ2 0 00 00 0 0 0 0 0 3497251728 0--//可以仅仅堆0没清楚了.父游标句柄还在.退出scott登录会话依旧存在.SYS@book> alter system flush shared_pool;System altered.SYS@book> @ &r/sharepool/shp4 000000007B988D28 0old 18: WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2new 18: WHERE kglobt03 = '000000007B988D28' or kglhdpar='000000007B988D28' or kglhdadr='000000007B988D28' or KGLNAHSH= 0TEXT KGLHDADR KGLHDPAR C40 KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09-------------- ---------------- ---------------- ----- -------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------父游标句柄地址 000000007B988D28 000000007B988D28 SEQ2 0 00 00 0 0 0 0 0 3497251728 0---//scott用户登录后再执行如下,再次出现跳号.SCOTT@book> select seq2.nextval from dual; NEXTVAL---------- 81SYS@book> @ &r/sharepool/shp4 000000007B988D28 0old 18: WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2new 18: WHERE kglobt03 = '000000007B988D28' or kglhdpar='000000007B988D28' or kglhdadr='000000007B988D28' or KGLNAHSH= 0TEXT KGLHDADR KGLHDPAR C40 KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09-------------- ---------------- ---------------- ---- -------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------父游标句柄地址 000000007B988D28 000000007B988D28 SEQ2 0 000000007B8F2078 00 4728 0 0 4728 4728 3497251728 10总结:1.exec dbms_shared_pool.keep('SCOTT.SEQ2','Q')后,chunk类型不会变化.2.keep后,仅仅改动了x$kglob.KGLHDKMK值.3.一定要自己测试看看,不要听别人讲.就信以为真.4.顺便贴上shp4的脚本:column N0_6_16 format 99999999SELECT DECODE (kglhdadr, kglhdpar, '父游标句柄地址', '子游标句柄地址') text, kglhdadr, kglhdpar, substr(kglnaobj,1,40) c40, 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 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2;