欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle的体系结构、进程管理与结构组件详细介绍

程序员文章站 2022-08-09 18:58:11
oracle的体系结构、进程管理与结构详细介绍 user process:连接到服务器的进程,用户通过它跟数据库进行交互。但是user process不能直接和数据库进行交互,它必须和服务器的组...

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