Oracle内存结构

学习oracle首先要知道体系结构,从构成开始一步步深入研究。

oracle是由实例和数据库构成,数据库是一些文件组成(参数文件、控制文件、数据文件、日志文件),可以说数据库是简单的物理文件结构。实例是一些后台进程和内存结构(SGA、PGA)组成。

一、数据库文件:

1.参数文件:

数据库的参数设置文件,是启动数据库的关键。

分为两种类型:

初始化参数文件(init file):Oracle9i前是以pfile方式存储参数文件,是文本文件

服务器参数文件(server parameter file):9i之后引入的spfile方式,是以二进制的文件

参考参数文件位置及部分内容,具体空间大小根据情况设置。

/u01/app/oracle/product/11.2.0/db/dbs
[oracle@oradg1 dbs]$cat inittest.ora
db_name='test'
test.__sga_target=515899392
test.__db_cache_size=364904448
db_block_size=8192
...

2.控制文件:

控制文件存储着一些文件(数据文件、重做日志文件、归档日志文件等)的位置信息,是一个二进制文件

查看控制文件:

show parameter control_files 

位置:

/oradata/test/control01.ctl
/u01/app/oracle/fast_recovery_area/test/control02.ctl

一般会对控制文件多路复用,冗余多份在不同物理位置。

3.重做日志文件

redo log file  重做日志的作用是对数据库进行恢复,在出现故障时进行切换。在写满了日志文件也可以切换,故障可以通过日志文件进行恢复到时间点。具体在实例中LGWR进程中展现。

4.密码口令文件

二、实例

1.实例内存结构

Oracle的内存结构其实就是SGA(系统全局)和PGA(程序全局),SGA是共享的区域,PGA是用户会话专享的区域,主要介绍的是SGA。PGA是每个会话在服务器独有的。

数据库缓冲区,用户在进行sql更新数据时,不会直接对磁盘进行更新数据,而是会有一个缓冲区进行中转。

如:对一条数据进行select,会首先对缓冲区中的数据进行查询,如果存在这条数据会反馈给用户结果,如果没有,会从磁盘中调取复制这条数据到缓冲区然后再给用户。

其他操作也类似,会先对缓冲区中进行操作,如果缓冲区中没有,会从磁盘中复制到缓冲区然后进行操作。

对于缓冲区中与磁盘中数据不一致时,我们就称之为脏缓冲区,即数据变脏。这部分数据会通过DBWn写入磁盘。

DBWn:数据库写入器,n为实例可以有多个写入器。上面说到DBWn就是将脏缓冲区中变脏的数据写入到磁盘中。而DBWn并不是一个实时的进程,不是产生脏数据就会写入。而是在一定情况下写入:

①缓冲区空间不足时

②脏缓冲区太多时

③遇到检查点时,CKPT触发

④3s超时时(每3s会启动一次DBWn)

而如果还没来得及写入到磁盘就发生了断电了,数据不会丢失,下面引入日志缓冲区。

日志缓冲区,更新的数据记录写入到日志缓冲区中,通过LGWR写入到重做日志文件中,当发生故障宕机时,可以通过应用这些记录恢复。

LGWR:日志写入器,将日志缓冲区内的内容写入到磁盘的重做日志文件,会积极写入,不同于DBWn,LGWR会写入的积极一些。会在一些情况写入:

①commit时,会话先挂起,写入磁盘后,通知用户提交完成。

②缓冲区占用1/3时

③大于1M的日志缓冲区

④DBWn写入脏数据前

共享池,由库缓存和数据字典缓存组成

库缓存:存放已经分析过格式的最近执行过的sql代码,这样的话就不用每次执行都需要重复分析代码。

数据字典缓存:Oracle执行SQL时,会将相关的数据文件、表、索引、列、用户、其他的数据对象的定义和权限信息存放到数据字典高速缓存中。以后,如果要用到已经存放在数据字典中的数据,Oracle会从数据字典高速缓存中提取,就不用从磁盘中读取数据了。

SGA中还要用到JAVA池、大池、流池,这些在特定的环境下才会有。

2.后台进程

有五个重要进程,保证数据库实例的正常运行

SMON:系统监控进程,实例的恢复,数据库启动时执行恢复工作的强制性进程,恢复读文件或表空间脱机错误引起中断的事务,清空未使用的临时段。

PMON:进程监控进程,用于监控其他进程,清除其他失败的进程。负责清理buffer cache以及释放客户端进程使用的资源。

CKPT:检查点进程,也可以看为一个事件,当检查点事件发生时,DBWn就会要求将脏数据写入到数据文件,执行高速缓冲区的操作流程,LGWR写入重做日志后进行日志切换时,就会启动检查点进程。

DBWnLGWR上面描述过。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值