首页 > 其他分享 >[20240829]关于依赖链.txt

[20240829]关于依赖链.txt

时间:2024-09-01 17:14:33浏览次数:5  
标签:依赖 -- DEPT 20240829 SCOTT 000000006CA2CE78 ---------- 249266700 txt

[20240829]关于依赖链.txt

--//如果修改表结构或者改名,相关的sql语句在共享池会失效,必须重新分析,我开始学习orcle时候,一直认为这些相关信息保存在表对象
--//句柄的堆0里面,如果涉及到的sql语句很多,这样堆0应该很大,而实际上的情况上堆0一直没有变化.我曾经问过别人这个问题,最终无
--//法知道答案,或者解答不能让人满意.

--//如果不在表对象句柄的堆0里面,这样应该分散在相关sql语句的对象句柄的堆0里面(我估计是父游标堆0),如果修改表结构或者改名,
--//相关语句会失效,oracle内部如何操作实现,我一直感觉这个很复杂,也没有人给我讲解.简单探究看看.

--//更正:实际上在子游标堆0

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.

$ cat mm.txt
DECLARE
    l_count PLS_INTEGER;
BEGIN
    FOR i IN 1..&&1
    LOOP
       EXECUTE IMMEDIATE 'SELECT count(*)  FROM dept WHERE deptno = '||i into l_count;
    END LOOP;
END;
/

--//确定表对象的hash_value.
 $ sql_idz.sh 'DEPT.SCOTT.BOOK01P\001\0\0' 0
sql_text = DEPT.SCOTT.BOOK01P\001\0\0\0
full_hash_value(16) = 05DB243908B3C797B99628590EDB820C or 05db243908b3c797b99628590edb820c
hash_value(10) = 249266700
sql_id(32) = bm5j8b47dr0hc
sql_id(32) = bm5j8b47dr0hc
sql_id(32) = bm5j8b47dr0hc
--//hash_value(10) = 249266700
2.测试:
--//session 1:
SCOTT@book01p> @ mm.txt 1e6

--//session 2:
SYS@book> @ sharepool/shp4x 0 249266700
SYS@book> @pr
==============================
HANDLE_TYPE                   : parent handle address
KGLHDADR                      : 000000006CA2CE78
KGLHDPAR                      : 000000006CA2CE78
C40                           : SCOTT.DEPT
KGLHDLMD                      : 2
KGLHDPMD                      : 2
KGLHDIVC                      : 0
KGLOBHD0                      : 000000006BEE94B0
KGLOBHD6                      : 00
KGLOBHS0                      : 4064
KGLOBHS6                      : 0
KGLOBT16                      : 0
N0_6_16                       : 4064
N20                           : 4064
KGLNAHSH                      : 249266700
KGLOBT03                      :
KGLOBT09                      : 0
PL/SQL procedure successfully completed.
--//不管执行,KGLHDLMD=2,KGLHDPMD=2,前者lock,后者pin.
--//注:2表示共享模式 3表示排他模式 1表示NULL模式.

select * from x$ksmsp where ksmchpar=hextoraw(lpad(upper('000000006BEE94B0'),         16, '0'));
ADDR                   INDX    INST_ID     CON_ID   KSMCHIDX   KSMCHDUR KSMCHCOM         KSMCHPTR           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR
---------------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------
00007F1E36924D80     135230          1          1          1          1 KGLH0^edb820c    000000006BEF6850       4096 recr           4095 000000006BEE94B0
-//可以相关表对象的句柄的堆0 chunk size还是4096,并没有变化.

SYS@book> column TO_NAME format a30
SYS@book> select * from gv$object_dependency where to_name='DEPT' and rownum<=10;
   INST_ID FROM_ADDRESS      FROM_HASH TO_OWNER TO_NAME TO_ADDRESS          TO_HASH    TO_TYPE     CON_ID
---------- ---------------- ---------- -------- ------- ---------------- ---------- ---------- ----------
         1 00000000622E6E80 1646526486 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 000000006E1EB9A0  336330891 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 000000006C6C6B60 3092512987 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 00000000612C8B10 2576744745 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 000000006CB06A38 2169242469 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 0000000062D7BA38  346686460 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 000000006A53A570 3590849582 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 000000006BD74918  977012134 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
~~~~~~~~~~~~~~~~~~~~~~~        
         1 000000006CBB0AC8  583140822 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
         1 000000006AD648A8 1894909508 SCOTT    DEPT    000000006CA2CE78  249266700          2          3
10 rows selected.
--//输出太多,仅仅取了10行记录.

SYS@book> select count(*) from gv$object_dependency where to_name='DEPT' ;
  COUNT(*)
----------
       785

--//FROM_ADDRESS 地址对应就是相应sql语句的父游标句柄.
SYS@book> @ sharepool/shp4 000000006BD74918 0

HANDLE_TYPE            KGLHDADR         KGLHDPAR         C40                                        KGLHDLMD   KGLHDPMD   KGLHDIVC KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
---------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
child handle address   000000006E7AC980 000000006BD74918 SELECT count(*)  FROM dept WHERE deptno           0          0          0 000000006A654550 0000000066355AC0       8080      12128       3313     23521      23521 2645750751 d5du9zffv5wyz          0
parent handle address  000000006BD74918 000000006BD74918 SELECT count(*)  FROM dept WHERE deptno           0          0          0 0000000069F66910 00                     4064          0          0      4064       4064 2645750751 d5du9zffv5wyz      65535
--//KGLNAHSH与前面的不一致,估计查询时前面的已经清除了。

--//注意看TO_ADDRESS不变.
SYS@book> @ sharepool/shp4 000000006CA2CE78 0
SYS@book> @pr
==============================
HANDLE_TYPE                   : parent handle address
KGLHDADR                      : 000000006CA2CE78
KGLHDPAR                      : 000000006CA2CE78
C40                           : SCOTT.DEPT
KGLHDLMD                      : 0
KGLHDPMD                      : 0
KGLHDIVC                      : 0
KGLOBHD0                      : 000000006BEE94B0
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里面,不然堆0应该占用chunk变大.
--//那么是否分散在各个相关sql语句里面呢,另外写一篇验证这种情况.

标签:依赖,--,DEPT,20240829,SCOTT,000000006CA2CE78,----------,249266700,txt
From: https://www.cnblogs.com/lfree/p/18391477

相关文章

  • [20240826]奇怪ORA-01031 insufficient privileges报错.txt
    [20240826]奇怪ORA-01031insufficientprivileges报错.txt--//遇到的奇怪ORA-01031insufficientprivileges情况,做一个分析:1.环境:SYS@book01p>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION     ......
  • Blazor基础学习填坑系列-02-添加依赖包
    继续学习官方给出的demo,参照示例代码,添加包引用时卡住了,官方给出的包的版本6.0.X明显跟当前用的不一致 心想,就别在终端中敲指令了,干脆手动添加吧,结果找不到入口,摸索了下,终于找到:依赖项-包,右键-管理NuGet程序包 根据依赖包名搜索,安装,版本号会自动带出,代码会自动补全......
  • python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存及转
    一、python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存    做一个简单的事:使用python读取一个txt文件,里面存储着N行用户id,需要一行行读取后再读取另一个存储用户昵称的txt文件,判断昵称是否有重复,如果没有重复就将数据库中的当前uid用户的昵称......
  • 20240901_113224 python 环境依赖的备份与导入
    20240830_173845python当前环境依赖包导出到文件中_鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1187710920240830_183845python从依赖包记录文件中批量安装包_鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/11877185......
  • Go实战全家桶之一:goconfig依赖注入扩展之自动注入配置项、工业级巨匠
    开源地址:goconfig:gitclonehttps://gitee.com/ichub/go.git基础结构packageichubconfigimport("gitee.com/ichub/goconfig/common/base/basedto""gitee.com/ichub/goconfig/common/base/baseutils/reflectutils""github.com/gogf/......
  • 了解依赖反转原则(DIP)、控制反转(IoC)、依赖注入(DI)及 IoC容器
    这篇文章将描述DIP、IoC、DI和IoC容器。大多数情况下,初学者开发人员会遇到DIP、IoC、DI和IoC容器的问题。他们混淆在一起,发现很难辨别他们之间的区别,不知道为什么他们需要使用他们。另一方面,很多人使用DI,IoC却不知道它能解决什么问题。关于这个话题有很多帖子......
  • .NET|--WPF|--笔记合集|--依赖项属性|--2.注册依赖项属性
    前言使用一个实例,其实分2步骤定义,实例化.但是依赖项属性为不能直接实例化,因为DependencyProperty类没有公开的构造函数,只能使用静态的DependencyProperty.Register方法创建DependencyProperty实例.DependencyProperty.Register源码//System.Windows.DependencyP......
  • .NET|--WPF|--笔记合集|--依赖项属性|--1.定义依赖项属性
    前言一般情况下,我们是不用定义依赖项属性的,更多的是直接使用即可.那么何时需要我们定义依赖项属性呢?1.设计自定义的WPF元素;2.为原本不支持数据绑定,动画等WPF功能的代码中,需要添加数据绑定,动画等WPF功能时.定义依赖项属性一般的类型来说,如果想要使用的......
  • .NET|--WPF|--笔记合集|--依赖项属性|--4.依赖项属性值优先级
    前言前几篇笔记讲到了依赖项属性的定义,注册等.接下来就该是依赖项属性的实战了.如果依赖项属性是一个主机的话,前几个步骤还在于组装这个主机,组装好了之后,就要开始使用了,是骡子是马,拉出来遛遛.但是一般任何事物在使用之前,都有一些注意事项,如果不了解这些注......
  • .NET|--WPF|--笔记合集|--依赖项属性|--3.属性包装器
    前言属性包装器的主要作用是将依赖属性的访问方式转换为标准的CLR属性访问方式,从而使代码更加简洁、直观,并提供一致性和更好的开发体验。通过属性包装器,开发者可以利用依赖属性的高级功能,同时保持代码的可读性和易用性。"属性包装器"在TextBlock源码中使用publicclass......