Oracle的体系结构、进程管理与结构组件详细介绍
oracle的体系结构、进程管理与结构详细介绍
user process:连接到服务器的进程,用户通过它跟数据库进行交互。但是user process不能直接和数据库进行交互,它必须和服务器的组件server process进行连接。
server process:服务器进程,用来解释由user process传递过来的sql语句,负责commit和rollback,参与io。启动server process的时候会分配一块内存区域,叫做pga(process global area),分为四个部分:堆栈(指向其他pga内存结构的指针)、session info(保存会话的信息)、cursor info(每个会话游标的信息)、sort area(排序区)。pga区域是私有区域,不能被其他进程所共享
以执行一条sql语句为例,从发出sql语句到返回结果集,可以分为三个部分:
1.解析:
(1)还原成ascii码,生成hash_value
(2)到pga中匹配hash_value,进行快速软解析,如果在pga中没有找到,就到library cache中匹配hash_value,进行软解析
(3)如果都没有找到,就转入硬解析(语法分析:sql语句是否符合语法要求、语义分析:sql语句中对象是否存在、安全审核:发出sql的用户是否有权限执行操作、由优化器进行优化、行资源生成)。
2.执行:按照执行计划查找需要的数据和对象
3.获取:将找到的数据返回给user process
instance(实例):访问数据库的手段,包括sga(system global area)、实例进程
sga包括:
shared pool(共享池):
library cache:缓存sql语句的执行计划
data dictionary cacche:保存最近访问过的数据字典的行
database buffer cache(数据库缓冲区):以8k为单位,缓存硬盘数据的副本(缓冲io的瓶颈),使用lru(最近最少使 用原则)机制进行空间管理。
large pool(大池):保存与sql、plsql不相关的数据,比如做数据备份还原恢复时候所用到的块。
java pool:为java的编译提供缓存
streams pool:缓存流复制数据,如果启用了流复制而又没有定义streams pool,oracle会分配shared pool的10%来作 为stream pool。
log buffer:保存redo条目,所有条目的变化,将来参与recover。
后台进程
pmon(process monitor)进程监视器:监控其他非主要核心进程,如果异常进行重启,清理由于user process异常导致的垃圾数据、在实例的动态注册时,负责向监听进程注册实例,在集群环境,每60秒收集一次当前节点的cpu压力,实现load balance基于cpu压力的负载均衡,
dbwn(database writer):把database buffer cache里面的脏数据同步到物理硬盘中,使数据同步,其中n的取值从0~9,a~z,一共36个,默认是一个。触发条件包括:ckpt(检查点)、database buffer cache达到存储上限(存储容量的10%)、database buffer cache没有可用空间进行写操作、timeout、rac ping request集群环境中的ping请求,表级别的truncate或者drop操作、tablespace readonly、tablespace offline、begin backup。
smon(system monitor)监控进程:空间管理(合并空闲临时段、回收临时段)、实例恢复(涉及前滚后滚、锁机制)
ckpt(checkpoint)检查点:调度数据写进程,将完成的检查点写到数据文件头,将完成的检查点写到控制文件。
lgwr(log writer)日志写进程:将log buffer里面的内容写到硬盘的联机日志二进制文件中。触发条件包括:commit、达到日志缓冲区空间的1/3,timeout、任何一次数据写之前都要先写日志。
reco(recover):在分布式系统下,完成分布式环境中的事务的恢复。
cjq0:作业队列的调度进程:调度job队列。
jnnn:作业从属进程,为作业服务的进程。
arcn:归档进程。
qmnn:队列监视器。
mman:内存管理。
mmon:内存监控。
mmnl:内存指示灯。
数据库在硬盘的存储方式
controlfile 控制文件:记录数据库的物理信息、数据库属性、数据库名字、id号、创建时间、resetlog change number、角色等记录数据库物理信息一致性的文件,至少一个。
redlogfile 联机日志文件:记录所有数据块的变化(logbuffer中保存的条目),至少两个。
datafile 数据文件:一个数据库可以包括65535个文件,每个文件可以管理最多4m个oracle块。
passwordfile 口令文件:记录超级用户的名字和口令,用来做超级用户的审核。
parameterfile 参数文件:记录所有非默认值的初始化参数,约束实例的行为。
tracefile 跟踪文件:asii码格式的文本文件,记录数据库工作时的一些信息和一些报错内容,用来做trouble shooting。
archivedlogfile 归档日志文件:redologfile的镜像备份。
上一篇: IOS常用功能