oracle 结构讲解,Oracle 数据库体系结构解析

Oracle 数据库体系结构图 如下图所示,

ea813ba891ee5d6aee05975a01a99565.png

纵观上图可知,Oracle数据库服务器大致分为两个主要部分 既1.Oracle instance(数据库实例 上半部分)2.database(数据库 下半部分)。

用户不能直接连接到数据库,而是用户先发出一个用户进程, 用户进程和Oracle服务器发出的服务器进程交互,然后服务器进程再和实例交互,最后实例和底层数据库交互,从而实现用户和数据库的交互。具体过程看下图:

778c5d7f056992c48fe6fd180035688e.png

下面详述体系结构中各个组成部分的具体功能和特点

1.首先先有的整体的认识:

oracle 服务器=实例+数据库

实例=SGA(实例内存)+后台进程

内存=SGA+PGA

SGA=database buffer cache (数据库高速缓存区缓存)+share pool +redo log buffer

2.实例内存SGA结构:前三个是必选的,其余是可选的。

1)database buffer cache(数据库高速缓存区缓存) :是用来存放执行SQL的工作区域 (1)存储从数据文件中获得的数据块的镜像(2)当获取和更新数据的时候能够大幅度提高性能,因为数据库块的镜像会保存一段时间,等下次再执行有关这个块的操作时,可直接在缓存区操作(3)能够动态调整大小,也可以对其进行自动管理。

2)Redo log buffer (在线日志缓冲区): ()记录所有数据库的块的改变,主要用于恢复,大小由log_buffer 决定, 在对数据库块进行操作之前,会把所做的所有操作记录这里。

3)share pool (共享池):包括library cache (库高速缓冲区)和database dictionary cache(数据字典缓存)  ,前者主要存储最近使用的SQL和pl/sql 语句的信息(存一次 多次使用,防止硬解析,) 后者主要存储最近使用的定义,如表、索引、列、用户权限、和其他数据库对象。

4)Large pool :  是系统全局区的一个可选的部分,是共享服务器的会话内存,以减轻在共享池中的负担,可动态的改变大小,也可以自动管理。

5)Java pool:   java 命令的分析,可动态的改变大小,也可以自动管理

6)Stream pool : 流相关的数据在流池中,提高缓存效果。

3.接下来介绍实例后台进程:

1) pmon (进程检测进程) :当会话异常终止时 清除失败的进程 包括 回滚事务、释放锁、动态注册监听器,

2) Smon (系统检测进程):实例恢复(前滚所有重做日志中的改变、回滚没有提交的事务),释放临时表空间。

3) DBWn(数据写进程): 将数据库高速缓存区缓存中的脏块,刷新到磁盘数据文件中,  写的条件:1,发生检查点2,脏缓存到达极限值(1/4)、没有可用的缓存区时。

4) LGWR(日志写进程)将redo log buffer 中的redo 刷新到磁盘日志文件中,  写的条件:1,commit 的时候,2.达到1/3满时,3.大小达到1M时,4.每搁三秒 5.在DBWR进程写数据之前。

5) CKPT (检查点进程) : 给dbwn 信号,使它开始写脏块。更新数据文件头和控制文件,(就是把scn号更新为最新的)3秒一次。  常说的一致性 要保证三个scn 号一致,包括数据文件头的scn号,control files 记录数据文件头的scn号,control files 记录的总的scn号。检查点进程 触发的越快,DBWR 写的就越快,这样内存中的缓存区脏块就越少,进而恢复实例所用的时间就会越少,但是频繁的I/O导致性能下降,所以性能和速度是矛盾的;

6) ARCn (归档进程):将联机重做日志文件归档到(也可以理解为复制)归档日志文件 ,如果开启了归档模式  重做日志文件 一般分为两个组,这两组是循环复写的,一个组用来记录对数据库的修改,另一组进行归档。但是如果记录修改的那组已经写满,这样本来该再去写另一组,但是另一组还没有完成归档,这就会出问题,数据库夯住了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值