ITPub博客

首页 > 数据库 > Oracle > 基于oracle 10.2.0.5演进到oracle 11.2.0.1 分析x$kqfta表所想到的一些事儿

基于oracle 10.2.0.5演进到oracle 11.2.0.1 分析x$kqfta表所想到的一些事儿

原创 Oracle 作者:wisdomone1 时间:2015-11-23 19:04:52 0 删除 编辑

结论

1,x$表是对应ORACLE内核层不同的层,比如:X$KSMSP即对应ORACLE内核层:KS 即KERNAL SERVER内核服务层
2,ORACLE内核层的含义,请参考下述测试之  oracle内核层  相关内容
3,X$KSTFA即存储X$所有表,且共计604个X$表
4,基于ORACLE内核层,可以大致猜测X$不同表的含义,然后进行对应测试与理解,我认为这是最为重要的一点认识与提升
   也就是说ORACLE的知识是离散的,只要把相关知识整合起来,才能真正发挥作用,进一步进解ORACLE的运行机制
   仅仅是孤立理解某个技术点,这是大大不够的
5,经过慢慢学习与思考,以前一些零散的知识现在慢慢整合起来,思考还要进一步深化与拓展,力争尽快达到更高一个水平,解决更多的生产问题
6,一定要尝试更多的维度分析理解一相问题或技术点,才能真正加深对于具体知识点的理解,而不会停驻在表面
7,x$kqfta在oracle 10.2.0.5到oracle 11.2.0.1,其结构没有变化,仅存储的X$表数据,由原来的604个增加到913个
  由此可见ORACLE在演进是一直进展中的,要思考ORACLE为何要引入新的X$表,这些新的X$表的含义及作用是什么
  希望可以达到一种境界:可以预先了解到ORACLE在下个版本要新增哪些功能或调整旧版本哪些功能或问题,当然这需要极高的水平
  为此努力吧


测试



SQL> select * from v$version where rownum=1;


BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi


基于文章:探索系列_神人steve adams之著oracle8i interal service(一)
http://blog.itpub.net/9240380/viewspace-660018/




摘录相关内容如下:


    oracle内核层


插述oracle内核层一些主要的层
 
层的名称                      简称      译文
oracle call interface         oci       oracle调用接口
user program interface        upi       用户程序接口
---------------------------------------------------->net 8
oracle program interface      opi       oracle程序接口
compilation layer             kk        编译层
execution layer               kx        执行层
destributed execution layer   k2        分布式执行层
network program interface     npi       网络程序接口
security layer                kz        安全层
query layer                   kq        查询层
recursive program interface   rpi       递归程序接口
access layer                  ka        访问层
data layer                    kd        数据层
transaction layer             kt        事务层
cache layer                   kc        缓存层
services layer                ks        服务层
lock management layer         kj        锁管理层
generic layer                 kg        一般(通用)层
operating system dependencies s         操作系统依赖层 




有了上面的知识铺垫,下面的内容就不是无源之水了,无根之木了,以前我一直想,ORACLE神秘的X$底层表,到底有多少个这种表,有没有一个表存储这些X$表的数据呢,现在有答案了
--[Q]uery Layer,即kq表明ORACLE KERNEL QUERY,译为:ORACLE内核查询层
--- X$KQFTA - Fixed [TA]bles,x$kqfta即存储X$表的基表
SQL> set linesize 30
SQL> desc x$kqfta;
 Name              Null?    Type
 ----------------- -------- ------------
 ADDR                       RAW(8)
 INDX                       NUMBER
 INST_ID                    NUMBER
 KQFTAOBJ                   NUMBER
 KQFTAVER                   NUMBER
 KQFTANAM                   VARCHAR2(30)
 KQFTATYP                   NUMBER
 KQFTAFLG                   NUMBER
 KQFTARSZ                   NUMBER
 KQFTACOC                   NUMBER


--目前数据库共计X$表 为604个,也就是说604个X$表存储在X$KQTFA表中
SQL> select count(*) from x$kqfta;


  COUNT(*)
----------
       604


---使用下X$KQFTA查询相关的X$基表信息
 SQL> select kqftaobj,kqftatyp,kqftanam,kqftaflg from x$kqfta where lower(kqftanam) in ('x$ksmsp','x$ksmss','x$kglob','x$ksled');


  KQFTAOBJ   KQFTATYP KQFTANAM                         KQFTAFLG
---------- ---------- ------------------------------ ----------
4294951094          1 X$KSLED                                 0
4294950997          4 X$KSMSS                                 0
4294951100          4 X$KSMSP                                 0
4294950985          5 X$KGLOB                                 0


SQL> select * from x$kqfta where lower(kqftanam) in ('x$ksmsp');


ADDR                   INDX    INST_ID   KQFTAOBJ   KQFTAVER KQFTANAM                         KQFTATYP   KQFTAFLG   KQFTARSZ   KQFTACOC
---------------- ---------- ---------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ----------
0000000005A592E8         65          1 4294951100          4 X$KSMSP                                 4          0         88         11






---再看下ORACLE11G后X$KQFTA表变化,可见此表的定义没有变化,仅是存储的X$表由604个增加到913个,说明ORACLE11G在功能方面有很大的调整与变化,所谓的管中窥豹,一叶知秋
这个也会引申出多出这些X$表是什么表,含义是什么,用途又是什么,为何ORACLE在新版本要引入这些X$表,这个对于理解ORACLE的变革思想是极为重要
SQL> select * from v$version where rownum=1;


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production  


SQL> desc x$kqfta;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ADDR                                               RAW(8)
 INDX                                               NUMBER
 INST_ID                                            NUMBER
 KQFTAOBJ                                           NUMBER
 KQFTAVER                                           NUMBER
 KQFTANAM                                           VARCHAR2(30)
 KQFTATYP                                           NUMBER
 KQFTAFLG                                           NUMBER
 KQFTARSZ                                           NUMBER
 KQFTACOC                                           NUMBER


SQL> select count(*) from x$kqfta;


  COUNT(*)
----------
       913


     

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

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12689917