本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
【体系结构】Oracle进程架构
吴振华 · 398浏览 · 发布于2021-03-17 +关注

目录

Client Process的介绍
Client and Server Processes
Connections and Sessions
Server Processes的介绍
Dedicated Server Processes
Shared Server Processes
Background Processes的介绍
Mandatory Background Processes
Optional Background Processes
文献参考

Client Process的介绍

Client and Server Processes

Client Process代表着客户端进程,每一个客户端进程关联着一个Server Process(服务器进程)。并且客户端进程包含着一个私有的PGA内存。

客户端的进程

  1. 可以通过代码的方式(JAVA,C或者其他语言)来和数据库建立进程连接。

  2. SQL*Plus的方式建立。

  3. 通过远程的plsqldev等客户端工具建立连接。

举例:用一个SQL*Plus连接数据库,如下:

1.本地连接
[oracle@db1 ~]$ sqlplus "/as sysdba"
SYS@prod> 
[oracle@db1 ~]$ sqlplus scott/tiger
SCOTT@prod> 
2.远程主机连接
[oracle@db2 admin]$ sqlplus scott/tiger@prod
SCOTT@prod>

效果图如下:

在本地主机和远程主机,对应的每一个client process的建立情况如下:

1.本地的client process
[root@db1 ~]# ps -ef |grep sqlplus |grep -v grep
oracle   13474 13455  0 10:38 pts/3    00:00:00 rlwrap sqlplus /as sysdba         
oracle   13538 13503  0 10:43 pts/5    00:00:00 rlwrap sqlplus scott/tiger
2.远程的client process
[root@db2 ~]# ps -ef |grep sqlplus |grep -v grep
oracle    2962  2916  0 10:45 pts/0    00:00:00 rlwrap sqlplus scott/tiger@prod

在数据库的主机下,可以查看服务器进程的建立情况,(LOCAL=NO)代表非本地连接,(LOCAL=YES)代表本地连接。

[root@db1 ~]# ps -ef |grep LOCAL |grep -v grep
oracle   13476 13475  0 10:38 ?        00:00:00 oracleprod (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   13540 13539  0 10:43 ?        00:00:00 oracleprod (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle   13590     1  0 10:46 ?        00:00:00 oracleprod (LOCAL=NO)

Connections and Sessions

  • 什么是Connections

    一个Connection代表着client proces和数据库实例之间的一条物理连通路径。

  • 什么是Sessions

    一个session是在数据库实例内存中的一个逻辑实体。代表着一个当前用户连接数据库的状态。

所以,一个connection可以有0,1或者更多的sessions的建立。

Oracle的网络连接有两种形式:dedicated serverShared server

下图表示:一个session对应一个connection的情况:[一般在dedicated server模式下]

下图表示:两个session在一个connection的情况:[一般在Shared server模式下]

Server Processes的介绍

Oracle数据库会创建Server Process用于处理来自于客户端进程连接数据库的请求。一个client process会对应一个独立的Server Process用于和数据库之间的通信。

Server Processes完成如下工作:

  • 解析和运行SQL语句,包括创建和运行执行计划query plan,官方文档介绍SQL执行的过程"Stages of SQL Processing"

  • 运行PL/SQL代码块

  • data files中读取数据块,然后去修改database buffer cache的数据。(DBWn后台进程,用于把已修改过的blocks写入至磁盘)

  • 将结果返回给应用程序。

Dedicated Server Processes

专用模式下,client processserver process是一一对应的。在linux操作系统下,20个连接数据库实例的client processes就会有20个server processes

每一个client process是直接与server process通信的。在会话存续期间,这个server process是专属于client process,server process在PGA中存储其特定的进程信息和UGA。

UGA:User global area。一个会话内存,存储会话变量,例如登录信息,同时包括OLAP池

Shared Server Processes

共享模式下,多个client process共享一个server process。它是通过dispatcher process进行调度。这种连接方式很少见,不过多讨论。

Background Processes的介绍

一个数据库实例有许多后台进程,可以通过如下查询语句,查看数据库正在运行的后台进程:

SELECT PNAME 
FROM   V$PROCESS 
WHERE  PNAME IS NOT NULL 
ORDER BY PNAME;

操作系统的命令

[oracle@oradb ~]$ ps -ef |grep ora_

Mandatory Background Processes

这些强制性,标志性的进程。在最小话配置的初始化参数文件启动的数据库实例中运行。

Process Monitor Process (PMON)系统监控

pmon是监控其他后台进程并且检测会话中的问题。

1.会话异常终止时,PMON 销毁对应服务器进程。 释放所有当前挂起的锁定。释放服务器端使用的资源(PGA 内存等)。回滚正在进行的未完成的事务。

2.监控其他进程,如果进程异常终止时执行进程恢复,亦或者终止数据库实例。

3.动态注册实例到监听器(listener)。

System Monitor Process (SMON)进程监控

SMON在实例启动时执行实例恢复instance recovery。具体的操作:

  • 在线redo日志做前滚的修改。

  • 打开数据库让用户可以访问。

  • 回滚未提交的事务。

  • 合并空闲资源。

  • 释放不再使用的临时段。

Database Writer Process (DBWn)数据库写进程

写脏块。将修改后的缓冲区(脏 buffer) 数据写入数据文件中。

DBWn写入的时机:

  • 触发Checkpoint

  • Dirty buffers达到了阈值

  • 没有多余的空闲buffers。

  • 超时触发。

  • RAC ping request is made

  • 表空间的操作OFFLINE,READ ONLY,BEGIN BACKUP下线,只读,备份

  • 表的操作DROP,TRUNCATE

Log Writer Process (LGWR)日志写进程

log writer process (LGWR)管理着redo日志缓存区,负责将日志缓冲区中的日志条目(redo entries)写入日志文件。dirty buffer(修改database buffer的脏块) to disk是分散写入,redo to disk是快速频繁写入。皮面数据库的频繁IO操作,提升数据库的性能。

dbwn 是lazy write,lgwr 是速写,频繁写。

由于是lazy write所以dbwn有多个线程,而lgwr是一个线程。保证一个平衡

LGWR写入的时机:

  • commit提交的时候。

  • 三分之一满(或 1M 满)。

  • 每3秒触发一次写入。

  • dbwr 写之前(先记后写,先记日志后写脏块,保证未提交数据都能回滚)

LGWR and Commits

Oracle数据库使用快速提交机制 (fast commit) 来提高提交事务的性能。当用户发起一个commit语句,事务会分配一个system change number (SCN)。LGWR会把commit记录放置在redo log buffer中,同时快速写入至磁盘。这里面包括commit SCN and transaction's redo entries.

Checkpoint Process (CKPT)检查点进程

checkpoint process (CKPT)会更新数据文件头部和控制文件中的检查点信息。并发出一个信号通知或督促 dbwr 写脏块。

检查点信息(Checkpoint information ) 包含

  • the checkpoint position,

  • SCN

  • location in online redo log to begin recovery等等。

CKPT不会把data blocks写入至数据文件中,不会把 redo blocks写入至redo日志文件中。

完全检查点 full checkpoint:保证数据一致性。
增量检查点 incremental checkpoint:不断更新控制文件中的检查点位置,当发生实例崩溃时,可以尽量缩短实例恢复的时间。其部分目的是避免在联机重做日志交换机上写入大量块。
局部检查点 tablespace/datafile checkpoint:特定的操作下,针对某个表空间的。

Manageability Monitor Processes (MMON and MMNL)管理监控进程

manageability monitor process (MMON)执行许多与自动工作负载存储库(AWR)相关的任务。例如,当度量值违反阈值时,MMON就会写入,为最近修改的SQL对象获取快照和统计值。

manageability monitor lite process (MMNL)将SGA中的活动会话历史(ASH)缓冲区中的统计信息写入磁盘。当ASH缓冲区满时,MMNL写入磁盘。

Recoverer Process (RECO)

在分布式数据库中,恢复进程(RECO)自动解决分布式事务中的故障。节点的RECO进程会自动连接到涉及可疑分布式事务的数据库。当RECO在数据库之间重新建立连接的时候,它会自动处理所有可疑的事务,从每个数据库的挂起事务表中删除与已解析事务对应的任何行。

Optional Background Processes

Archiver Processes (ARCn)

归档模式下,发生日志切换时,把当前日志组中的内容写入归档日志,作为备份日志。ARCn只有在数据库开启归档模式下才会启用。

Job Queue Processes (CJQ0 and Jnnn)

Oracle数据库使用job queue processes来运行用户作业,通常采用批处理模式。作业是计划运行一次或多次的用户定义任务

Flashback Data Archiver Process (FBDA)

**flashback data archiver process (FBDA) **对被跟踪表的历史修改信息存入至闪回数据归档中。这个需要设置某个表有闪回归档区。才有此特性。

Space Management Coordinator Process (SMCO)

SMCO process协调各种空间管理相关任务的执行,如空间主动分配和空间回收。

文献参考

Process Architecture


相关推荐

使用SELECT语句检索数据

奔跑的男人 · 806浏览 · 2019-06-03 09:33:43
部署MySQL延迟从库的几个好处

吴振华 · 666浏览 · 2019-05-14 21:57:51
MongoDB凭什么跻身数据库排行前五?

iamitnan · 723浏览 · 2019-06-18 10:04:56
Oracle开启和关闭的几种模式

qq2360248666 · 754浏览 · 2019-06-04 10:18:47
加载中

0评论

评论
坐标是江苏.南京,行业是互联网,技术是PHP和java,还有熟悉前后端等。
分类专栏
小鸟云服务器
扫码进入手机网页