当前位置: 主页 > 数据库

oracle数据库缓存机制-java数据库缓存机制

发布时间:2023-02-08 14:07   浏览次数:次   作者:佚名

java数据库缓存机制_hibernate 缓存机制_oracle数据库缓存机制

数据库进程的主要作用是维护数据库的稳定,相当于企业中的管理者,负责统筹规划。 Oracle数据库进程分为以下三类。

1.用户进程:当数据库用户请求连接到Oracle服务器时启动。

2. Server Process(服务器进程):连接到Oracle实例(Oracle instance),并在用户创建会话时启动。

3、后台进程(Background Processes):后台进程随着Oracle实例的启动而开始,并不直接为用户提供服务。

01

用户进程

用户进程是指在运行程序或Oracle工具时,需要建立与Oracle实例通信的用户进程。 所谓Connection(连接)就是用户进程与Oracle实例之间建立的通信通道。 Oracle 的连接允许用户同时多次连接到同一个数据库实例。 所谓Session(会话)就是用户成功连接到Oracle服务器并通过Oracle认证后,用户将与Oracle服务器建立会话。 同时,同一个用户可以同时与数据库建立多个会话。 图 2-8 显示了一个用户进程的示例。

java数据库缓存机制_hibernate 缓存机制_oracle数据库缓存机制

图2-8 用户进程示例

要了解有关用户进程的信息,您可以使用动态性能视图 (v$session)。 主要提供数据库连接信息,主要是客户端信息oracle数据库缓存机制,观察动态视图结构,了解其主要属性列。

machine:在哪台机器上。

终端:使用什么终端。

osuser:谁是操作系统用户。

program:使用什么客户端程序,比如SQL PLUS。

process:操作系统分配给SQL PLUS的进程号。

taddr:是否执行事务处理。

当然,v$session还有一些服务器端的信息:

hibernate 缓存机制_oracle数据库缓存机制_java数据库缓存机制

paddr:服务器进程在v$process中的地址。

服务器:服务器是专用服务器还是共享服务器。

02

服务器进程

服务器进程主要用来分析和执行SQL语句。 当需要的数据不在SGA内存中时,它必须执行将数据文件从磁盘复制到SGA的共享数据缓冲区等工作。

用户进程和服务进程的关系如图2-9所示。

java数据库缓存机制_hibernate 缓存机制_oracle数据库缓存机制

图2-9 用户进程与服务进程关系图

Oracle提供了相应的视图v$process来监控整个数据库的进程。 此动态视图中的公共属性列如下所述。

addr:可以与v$session的paddr字段相关联。

pid:Oracle 进程标志。

spid=:操作系统进程标志。

pname=:进程的名称(从中可以看出前台和后台进程)。

username:运行这个进程的操作系统的用户名。

terminal:终端名称类似于v$session。

程序:程序的名称。

background: 1代表后台进程,NULL代表普通服务器进程。

03

java数据库缓存机制_hibernate 缓存机制_oracle数据库缓存机制

后台处理

后台进程在Oracle实例启动时建立,用于优化性能和协调多用户连接和通信工作。 常用的Oracle后台进程可以通过数据字典V$bgprocess和V$process查询。

有5个重要的后台进程必须在后台进程中执行。 当数据库启动时,这5个进程会自动开始在后台执行,下面会详细介绍。

1.数据库写入过程

数据库的典型操作是大规模I/O。 为了提高Oracle系统的效率,需要减少I/O的执行次数。 这是 Oracle 引入 Database Writer (DBWn) 进程的主要原因之一。

DBWn进程的工作原理如图2-10所示。

hibernate 缓存机制_oracle数据库缓存机制_java数据库缓存机制

图2-10 DBWn进程工作原理

DBWn进程负责将数据库高速缓冲区中脏缓冲区中的数据写入数据文件。 为了提高效率,每当数据库高速缓冲区中的数据发生变化时,DBWn进程并不写入数据文件,而是在积累足够多的内存数据块后,才依次将大量内存数据块写入数据文件。

这是DBWn进程的触发时机。 DBWn进程的具体触发时机可以归纳如下。

(1) 当检查点进程(CKPT)发生时,DBWn进程被触发。

(2)如果脏数据块总数超过一定的限制,也会触发DBWn进程。

(3)服务进程在设定时间内没有找到空闲块,触发DBWn进程。

(4) 每3s自动唤醒DBWn进程。

Oracle 通常使用 db_writer_process 来定义 DBWn 进程数。 如果Oracle实例启动时没有指定DBWn进程数,Oracle会根据CPU数来确定参数设置。 执行以下查询以显示写入进程数。

SQL> show parameter db_writer_process;
NAME TYPE VALUE
------------------------------------ ----------- --------
db_writer_processes integer 1

2. Checkpoint流程

为了提高系统的效率和维护数据库的一致性,Oracle系统引入了一个进程,称为Checkpoint Process(CKPT)。 CKPT 进程负责发起检查点信号。 检查点可以强制 DBWn 进程写入缓冲区并更新控制文件。

hibernate 缓存机制_oracle数据库缓存机制_java数据库缓存机制

CKPT 流程职责可以细化如下:

(1)用检查点信息修改数据文件头,重写新的SCN。

(2)用检查点信息修改控制文件,改写最新的SCN。

(3)在检查点时调用DBWn,通知其将缓存中的脏数据写入磁盘。

Checkpoint流程的原理如图2-11所示。

java数据库缓存机制_hibernate 缓存机制_oracle数据库缓存机制

图2-11 CKPT检查点流程原理

CKPT过程的触发时机可以总结如下。

(1) 用户进程的任何事务提交,任何DDL和DCL都会触发CKPT进程。

(2) 日志切换时触发CKPT进程。

要手动设置检查点,请执行以下代码。

SQL> alter system checkpoint;
系统已更改。

3.日志写入过程

日志写入(Log write,LGWR)进程也是一个后台进程,主要负责将日志缓冲区内容写入磁盘上的联机重做日志文件或重做日志文件组。

LGWR进程的工作原理如图2-12所示。

hibernate 缓存机制_oracle数据库缓存机制_java数据库缓存机制

图2-12 日志写入流程工作原理

LGWR进程的触发条件可以归纳如下。

oracle数据库缓存机制_java数据库缓存机制_hibernate 缓存机制

(1) 当用户发出commit命令时,触发LGWR进程。

(2)每隔3s定时唤醒LGWR进程。

(3) 如果log buffer超过1/3,或者log条数超过1M,则触发LGWR进程。

(4)DBWn进程触发:DBWn尝试写脏数据块到磁盘,检测他的相关重做记录是否写入在线日志文件,如果没有,通知LGWR进程;

注意:在Oracle中,是一种预写机制(WriteAhead),即重做记录必须先于数据记录写入磁盘。

(5)在线日志文件切换也会触发LGWR进程。

4.系统监控流程

对于 Oracle 数据库。 系统监视器(SMON)进程并不负责很多内容,但它对数据库的安全和性能起着关键作用。

SMON进程的主要职责可以概括如下。

(1)负责Oracle实例的恢复,前滚(Roll Forward)恢复到Oracle实例的关闭状态,利用最后一个检查点后的日志进程重做。 这包括已提交和未提交的事务。 打开数据库并回滚(Roll Back),即回滚未提交的事务。

(2)负责清理临时段,释放空间。

SMON进程的工作原理如图2-13所示。

oracle数据库缓存机制_java数据库缓存机制_hibernate 缓存机制

2-13 SMON进程工作原理

SMON进程被周期性唤醒和被其他事务主动唤醒有两种触发条件。

5.进程监控进程

Process Monitor(PMON)进程主要用于监控服务器进程。 当一个进程崩溃时,PMON会负责对其进行清理,主要包括:

(1) 回滚用户当前的事务。

hibernate 缓存机制_java数据库缓存机制_oracle数据库缓存机制

(2)释放用户占用的锁。

(3) 释放用户拥有的其他资源等。

PMON进程的工作原理如图2-14所示。

hibernate 缓存机制_oracle数据库缓存机制_java数据库缓存机制

图2-14 PMON进程工作原理

PMON进程被周期性唤醒和被其他事务主动唤醒有两种触发条件。

6、其他工艺

以上五个后台进程都是必须的,也就是说,其中任何一个停止,Oracle实例都会自动关闭。 可选后台进程中还有其他进程,其中最重要的是归档日志进程。

(1)归档日志过程(Archive Log, ARCn)

ARCn 进程的职责是在发生日志切换时将完整的在线日志文件复制到存档目录中。 当写入日志需要覆盖重写时,触发ARCn进程传输日志文件oracle数据库缓存机制,复制后形成归档日志文件,避免日志丢失。 ARCn进程会在日志切换时被LGWR进程唤醒。

ARCn进程的工作原理如图2-15所示。

hibernate 缓存机制_java数据库缓存机制_oracle数据库缓存机制

图2-15 归档日志进程工作原理

(2) RECO:在分布式数据库环境中恢复流程,保持一致性。

(3)LCKn:锁进程,用于多个Oracle实例之间的阻塞。

(4)dnnn:调度进程,用于多线程服务器模式。

04

相关书籍

《Oracle数据库系统管理与运维-微课视频版》

书号:9787302566106