Oracle实例=内存+后盾过程
Oracle数据库=实例+物理存储构造
由上图可知Oracle实例(一个Instance)由内存构造和程序结构组成,内存构造次要是SGA,程序结构次要是后盾过程。
物理存储构造次要是数据库文件。
这次认真学习了Oracle实例的具体内容。
为什么Oracle数据库做的这么简单?
内存
- 数据查问的速度
- 更好的晋升数据处理的速度
后盾过程
- 为了实现特定的工作的服务过程
数据文件
- 数据的永久性保留
- 也是数据库性能降落的次要起因
实例之内存构造
System global area(SGA)
SGA区包含Oracle实例须要的一系列内存组件,用于存放数据信息和数据管制信息,这些内存信息被所有过程所共享。SGA的各个组成包含:
组成 | 形容 |
---|---|
Database buffer cache | 数据库高速缓冲区,外面寄存着从磁盘读取到内存的数据块,这些数据块能够被所有的会话拜访,是全局共享的。buffer cache分为三个局部,别离是default pool,keep pool,recycle pool。default pool是失常状况下,数据块寄存的内存区域,default pool会依据一个过期算法(LRU,Least Recently Used,近期起码应用)将过期的脏数据(批改过的数据,没有批改的数据能够不写到磁盘上)写到磁盘上。keep pool这个区域用于将一些数据始终固定在内存中。recycle pool寄存一些不常常应用的数据块,防止这些数据块在default pool中占据空间。 |
Shared pool | 共享池缓存着一些用户能够共用的信息:1、能够从新应用的SQL语句 2、寄存一些数据字典的信息,包含用户账户数据,表,索引,权限等等。 3、存储寄存在数据库中的可执行代码。 |
Redo log buffer | 重做日志缓冲区,寄存着数据库操作产生的redo数据,Redo log buffer以循环的形式写入,当redo log曾经写到磁盘后,就能够被后续的日志数据笼罩。 |
Large pool | 对数据的解决不实用LRU算法,比shared pool更搞笑的内存收取形式。并行执行时会应用large pool。Rman备份时启动并行备份形式时,应用large pool。 |
Java pool | 这块内存区域用来寄存所有特定会话的JVM(Java Virtual Machine)中的java代码和数据。 |
Streams pool | 外面寄存着流相干的信息,比方流队列,其中也会流复制中capture过程提供过程内存空间。Streams pool只为流复制提供内存空间,如果没有手工配置,也没有配置流复制,这个空间将设置为0。 |
Result cache | 后果缓存,当表的拜访形式以读为主前提下,从一张大表中过滤出大量的记录作为后果集,把查问后果集放入result cache,后续雷同的查问语句能够间接从result cache里获取想要的后果,省去了CPU、I/O上的开销。这个SGA组件减速了频繁运行的查问语句的执行速度。 |
<!--more-->
Program global area(PGA)
不同于SGA,PGA属于独占式内存区,它的数据和管制信息为某个会话所独有,当一个会话产生时,Oracle会为这个会话调配一个PGA内存区域。能够了解为操作系统在一个过程启动时,为他调配的内存空间,是一个操作系统含意上的内存区。
User global Area(UGA)
UGA中保留和以后会话相干的信息,比方会话登录的信息,pl/sql的变量,绑定变量的值等等。UGA随着连贯形式不一样能够在SGA中也能够在PGA中。
Software code areas
Oracle寄存本身软件代码的一部分内存区,不容许其余会话拜访
后盾过程
Oracle的过程
用户过程 user process
服务器过程 server process
实例后盾过程 background process
windows查看Oracle有哪些后盾过程
SQL> select program from v$session where program like 'ORACLE.EXE%';PROGRAM----------------------------------------------------------------ORACLE.EXE (GEN0)ORACLE.EXE (DIA0)ORACLE.EXE (CKPT)ORACLE.EXE (MMNL)ORACLE.EXE (RVWR)ORACLE.EXE (ARC0)ORACLE.EXE (QMNC)ORACLE.EXE (ARC1)ORACLE.EXE (DIAG)ORACLE.EXE (MMAN)ORACLE.EXE (SMON)PROGRAM----------------------------------------------------------------ORACLE.EXE (Q001)ORACLE.EXE (SMCO)ORACLE.EXE (PMON)ORACLE.EXE (DBRM)ORACLE.EXE (DBW0)ORACLE.EXE (RECO)ORACLE.EXE (ARC2)ORACLE.EXE (Q002)ORACLE.EXE (CJQ0)ORACLE.EXE (W000)ORACLE.EXE (VKTM)PROGRAM----------------------------------------------------------------ORACLE.EXE (PSP0)ORACLE.EXE (LGWR)ORACLE.EXE (MMON)ORACLE.EXE (ARC3)已抉择26行。
上面重点看一些Oracle后盾过程(链接内存和磁盘的桥梁)
系统监控过程SMON
Oracle数据库至关重要的一个后盾过程,SMON 是System Monitor 的缩写,意即:系统监控。
SMON的次要工作:
- 数据库启动时的实例复原,在RAC环境下,一个节点的SMON能够对另外一个节点做实例复原
- 清理和开释长期段上的数据(排序、长期表…)
- 对于DMT(字典治理表空间),SMON能够合并间断闲暇的extent
- 保护回滚段的online,offline以及空间的回收
过程监控过程PMON
PMON是Process Monitor的缩写,PMON次要有上面的用处:
- 在过程非正常中断后,做清理工作
- 在过程abort后,PMON进行清理工作。
- PMON的第三个用处是,向Oracle TNS listener注册实例信息。
数据库写过程DBWn
DBWn是Database writer的缩写,n代表能够设置多个写过程。
DBWn负责把缓冲区的脏数据写到磁盘上,DBW过程是扩散地把数据写到磁盘上的。而LGWR是间断写redo log。扩散写要比间断写耗时的多。
DBWn触发条件:
- 当buffer cache空间有余时触发。
- DBWn接到checkpoint的指令时触发。
日志写过程LGWR
LGWR是把SGA中redo log buffer的信息写到redo log file的过程。LGWR是程序写入到redo log file中,因而速度很快。LGWR会在上面状况产生:
1,每隔3秒钟,进行一次LGWR
2,任何事务进行了commit操作
3,当redo log buffer是1/3满,或者外面有1MB的数据
基于以上的起因,把redo log buffer设置的很大就没必要的。
检查点过程CKPT
CKPT是checkpoint的缩写,依据checkpoint信息和DBW向磁盘写数据块的信号,CKPT更新管制文件和数据文件头。 Checkpoint information includes the checkpoint position, SCN, location in online redo log to begin recovery, and so on. CKPT 既不向数据文件中写数据块,也不向online redo log files写redo块。
归档过程ARCn
ARCn,Archive归档过程。ARCn的工作是在LGWR把onlone redo log填满后,ARCn把redo log file的内容copy到其余的中央。(也就是说是把联机重做日志变成归档日志)。online redo log 是被用来为实例失败的时候,复原数据文件。而归档日志是被用来在media recovery的时候,复原数据文件。
checkpoint和commit的区别
commit的作用是提交那些事务批改的数据产生的日志,即触发LGWR将redo log buffer中的内容写到redo log files,此时并没有把真正的数据写到磁盘上。commit的目标就是为了写到redo log files中去爱护数据。
checkpoint会触发DBWn过程,将脏数据块写到数据文件中。如果DBWR过程要将事务的后果写入数据文件,但发现要写入的脏数据块相干的重做信息依然处于重做日志缓存中,它将告诉oracle启动LGWR过程,先将这些重做信息写入重做日志文件,直到重做信息全副被写入后,DBWR过程才开始将脏缓存写入数据文件。所以checkpoint的目标是保证数据一致性。
参考:
Oracle官网-Managing the Oracle Instance
Oracle官网-Process Architecture
记得帮我点赞哦!
精心整顿了计算机各个方向的从入门、进阶、实战的视频课程和电子书,依照目录正当分类,总能找到你须要的学习材料,还在等什么?快去关注下载吧!!!
朝思暮想,必有回响,小伙伴们帮我点个赞吧,非常感谢。
我是职场亮哥,YY高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。听我说,提高多,程序人生一把梭
如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。
职场亮哥文章列表:更多文章
自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!