Oracle数据库系统管理与运维 | 数据库进程

简介: Oracle数据库系统管理与运维 | 数据库进程

数据库进程的主要作用是维护数据库的稳定,相当于一个企业中的管理者,具有负责全局统筹的作用。Oracle数据库进程共分为以下3类。

1、User Process(用户进程):在一个数据库用户请求与Oracle服务器连接时启动。

2、Server Process (服务器进程):与Oracle instance(Oracle实例)相连,当用户创建一会话时启动。

3、Background Processes(后台进程):后台进程伴随Oracle实例的启动而启动,它们并不会直接给用户提供服务。


01、用户进程


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

image.png


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

● machine:在哪台机器上。

● terminal:使用什么终端。

● osuser:操作系统用户是谁。

● program:通过什么客户端程序,比如SQL PLUS。

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

● taddr :是否执行事务处理中。


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

● paddr:即v$process中的服务器进程的addr。

● server:服务器是专有服务器还是共享服务器。


02、服务器进程


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


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

image.png


Oracle提供了相应的视图v$process,用来监视整个数据库的进程情况。该动态视图中的常用属性列如下所述。

● addr:可以和v$session的paddr字段关联。

● pid :Oracle进程标志。

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

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

● username:运行此进程的操作系统的用户名称。

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

● program:程序的名称。

● background:1代表后台进程,NULL代表正常服务器进程。


03、后台进程


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


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


1.数据库写进程


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


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

image.png


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.检查点进程

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

CKPT进程职责可以细化如下所述:

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

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

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


检查点进程原理如图2-11所示。

image.png


CKPT进程触发时机可以归纳如下所述。

(1)用户进程任意的事务提交、任何的DDL与DCL都触发CKPT进程。

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


若要手动设置检查点,则执行如下代码。

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

3.日志写进程

日志写(Log write,LGWR)进程也是一种后台进程,主要负责将日志缓冲内容写到磁盘的在线重做日志文件或重做日志文件组中。


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

image.png

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

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

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

(3)日志缓冲区log buffer超过1/3,或日志数量超过1M,触发LGWR进程。

(4)DBWn进程触发:DBWn试图将脏数据块写入磁盘,并检测他的相关redo记录是否写入联机日志文件,如果没有,就通知LGWR进程;

注意:在 Oracle中是提前写机制(WriteAhead),即redo记录须先于数据记录被写入磁盘。

(5)联机日志文件切换也将触发LGWR进程。


4.系统监控进程

对于Oracle数据库来说。系统监控(System Monitor,SMON)进程负责的内容并不是很多,但是对于数据库的安全与数据库的性能却有着很关键的作用。

SMON进程的主要职责可以归纳如下所述。

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

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


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

image.png

SMON 进程的触发条件有定期被唤醒和被其他事务主动唤醒两个。


5.进程监控进程


进程监视(Process Monitor,PMON)进程主要用来监视服务器进程。当某个进程崩溃时,PMON将负责它的清理工作,主要包括:

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

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

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


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

image.png

PMON进程的触发条件有定期被唤醒和被其他事务主动唤醒两个。


6.其他进程

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

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

ARCn进程职责是发生日志切换时把写满的联机日志文件复制到归档目录中。写日志写到需要覆盖重写的时候,触发ARCn进程去转移日志文件,进行复制后形成归档日志文件,以免日志丢失。ARCn进程会在日志切换时被LGWR程唤醒。

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

image.png

(2)RECO:恢复进程,维护分布式数据库环境下的一致性。

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

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


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
7月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
642 93
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
347 0
|
9月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
506 8
|
9月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
445 11
|
9月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
9月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
263 0
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
2415 28
|
10月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
414 9

热门文章

最新文章

推荐镜像

更多