Oracle-13-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的镜像备份。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值