ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 探索系列_神人steve adams之著oracle8i interal service(一)

探索系列_神人steve adams之著oracle8i interal service(一)

Linux操作系统 作者:www_xylove 时间:2014-12-03 09:52:17 0 删除 编辑
   好久就耳闻steve adams的大名,它的拓疆之作oracle8i internal service在oracle行业,众人皆晓。自己也学习oracle这么久了,萌发了学习一点oracle底层的东西,
用它开启自己对于oracle圣殿之门,再合适不过。本系列不再逐字细译,仅理出一些有用的要点出来,提升能力,也希望可以对大家有所用处.


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         操作系统依赖层
---注:简称以k开头,表示kernel,简称第二个字母表示层的名称第一个英文字母(不全是哟)
  
   大师简约进行了oracle内核层的功能概述:
oracle内核由许多层组成;每层依赖于它下面层的一些服务,应用可以直接调用每个层,以任何顺序。但是,
控制并不是传递给堆栈(stack),除了调用返回(call)的情形

   与以上规则不相符的一个例子就是:数据层和事务层。有时需要执行,对于索引块分裂或者区空间分配的递归事务,
递归调用也会发生在触发器执行或存储程序单元中sql语句的执行。
但是,除了与内核层的交互(反馈),或者在相同会话,也可能是同一个调用的上下文环境之中的编译层,
一般皆是构建独立的上下文环境,会为每个顶层配置stack(堆)

    每个层都有一个缩写(请参考我上面的列表)。比如,kc是kernel cache layer缩写。同理,组成每个层的模块也有简称,
比如,kcr是cache layer层的重作管理模块.这些模块名字的简称一般以它们数据结构和函数调用的前缀表示。
比如,kcrfal是重作分配闩.大家理解了这些,以前神秘莫测的oracle命名规则这下就容易理解多了吧。

    oci
      它是客户端程序与oracle交互最低级的一种工具或接口,oci的文档相当完备,通过它可以实现oracle大多功能,包括:
对象导航,复杂事务以及会话控制之类的高级特性。想使用这些高级特性的应用必须直接使用oci.


    upi
    用户程序接口
       它是oci的基础。它具备一些oci不曾包含的工具,一些oracle工具直接调用upi接口。预编译程序也会直接调用upi,
但是一种未经公开的,替代oci接口,名为sqllib库的,却可以间接调用.
  
   
   opi  oracle程序接口
     它是客户端调用堆栈的最低级的层(最低层),却是服务器端堆栈的最高层.在大多数配置中,net8会把upi和opi之间的空隙填补起来.但是,在单一任务执行之中,是没有空隙的,
upi调用会直接对应opi调用


   kk 编译层 compilation layer
     oracle内核专属的最高层,它主要负责sql语句和pl/sql块的解析及优化.


   kx  执行层
     处理sql及pl/sql的绑定和执行.也负责对执行触发器时所产生的递归调用的执行,及pl/sql语句块的sql执行

   k2  分布式处理层
     建立分布式事务对应的事务分支,同时处理2pc的管理
  
   npi  网络程序接口
     当sql中引用了远程对象,它会发放与sql之上解压对象组件给远程数据库实例并且接受处理过的数据

   kz 安全层
     编译层和执行层会调用它,验证所需对象和系统对象是否合理

   kq  查询层
     为更高的层提供记录,特别用于缓存数据字典的记录,安全和编译层会用到它

   rpi  递归程序接口
      生成数据字典的字典缓存。row cache(行缓存)递归sql语句在独立的调用环境中执行,而不在编译层中被解析和优化

   ka  访问层
      管理如何访问数据库的段。它是oracle内核中间的第一层


   kd  数据层
      负责管理和解析数据库中,比如:表,clusters,索引之类的段所对应的数据块

  
   kt  事务层
      负责分配回滚段的事务如何分配,数据块中itl的改变,产生的撤消对于回滚段的相应变更,读一致性,事务控制工具(比如保存点)。也负责空间分配,包括这样两个层次:段级空闲空间分配和表空间区分配


   kc  缓存层
       管理数据库缓冲缓存。它使用操作系统提供一些具备数据文件i/o功能的工具,可以并发访问cache buffers,也可以
       基于ops通过pcm(并行缓存管理)实例锁工具访问ops。其它一些功能,比如:控制如何产生redo,重作信息如何写入
       log file.也缓存控制文件的信息


   ks  服务层
       它为所有更高的层提供低级的服务,比如:错误处理,调试,诊断工具,还有参数控制及内存服务。特别强调的是,
       它负责管理像latch,等待事件,排队锁及实例锁的并行控制.也负责后台数据结构和用户进程及会话的管理工作,还有一些状态对象,ipc,系统统计信息.



   kj  锁管理层
        在ops的多个实例中,它负责管理用于同步和通讯的锁



   kg  通用层
        管理比如链接列表,这些通用的数据结构,主要用于更高层.最重要(我们最感趣的就是),library cache和用于
        共享池及会话内存的内存分配的堆栈



   s  操作系统相关的层
        oracle利用os的i/o功能(工具),进程调度,内存管理,以及其它一些操作。因为这些操作的细节皆与os相关,故
        相关实现细节分割成一个独立的层
     

  
  

  


 

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

请登录后发表评论 登录
全部评论

注册时间:2010-11-12

  • 博文量
    100
  • 访问量
    233035