Oracle Instance

以前也学习过oracle 逻辑结构的知识,但用的不多好多都是有点概念,最近做到一个跨instance工作流,所有抽点时间温习了一下相关知识,把网上看到的感觉讲的还比较明了,全面的文章汇总一下


instance = 内存结构(SGA,system global area) +后台进程

内存结构 = 共享池+数据高速缓存+重做日志缓冲区+其他

后台进程 = DBWn(database writer n个)+LGWR(log writers)+SMON(system monniter)+PMON(progress moniter)+CKPT(checkpoint)+……

PGA(Program Global Area)= 服务器进程+后台进程

下面分别介绍各部分:

共享池

1、共享池用于存放最近执行的SQL语句数据字典信息,其尺寸由初始化参数SHARED_POOL_SIZE定义。共享池主要由库高速缓存数据字典高速缓存两部分组成。

库高速缓存用于存放最近执行的SQL语句信息,包括SQL语句文本,解析代码值及其执行计划。执行计划是SQL语句的内部操作步骤。例如:当执行select name from students where grade=90时,如果grade列上不存在索引,执行计划将采用全表扫描;如果有索引,执行计划将使用索引和ROWID定位数据。


如上图所示,库高速缓存包含许多上下文区,每个上下文区都有相应的SQL语句执行计划,这些上下文区又被称为共享游标。当客户端运行SQL语句时,服务器进程首先检查共享游标是否存在,若存在则按照执行计划直接执行即可;若不存在则生成SQL语句执行计划,并将执行计划存放到相应的上下文区中,然后执行SQL语句。共享游标降低了SQL语句解析的次数,提高了执行性能。

另外,语句1和语句2由于文本不同,所以占用不同的上下文区,而对于文本完全相同的语句1来说可以共享上下文区。所谓的文本完全相同指的是:语句文本相同;大小写和长度相同;赋值变量相同。

数据字典高速缓存用于存放数据字典的信息,包括表、列的定义以及权限信息。

最后,库高速缓存和数据字典高速缓存的尺寸是可以变化的。动态改变共享池的尺寸:alter system set shared_pool_size = 60M;

数据高速缓存

数据高速缓存用于存放最近访问的数据块信息,它由许多小缓冲区组成。

 

数据高速缓存采用LRU(least recently used)算法管理数据高速缓存。

数据高速缓存的结构:分为三部分,分别是脏缓冲区、空闲缓冲区、忙缓冲区。脏缓冲区是指内容与相应数据块不一致的缓冲区;空闲缓冲区是指内容与相应数据块一致或者不包含数据的缓冲区;忙缓冲区是指服务进程正在存取的缓冲区。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值