2.1.3 后台进程

本文详细介绍了Oracle数据库中的关键后台进程,包括SMON、PMON、DBWR、LGWR、CKPT和ARCH的功能与触发条件。这些进程对于确保数据库的一致性和可靠性至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,SMON(System Monitor)

执行例程恢复

(1)REDO:重新应用那些被记载到重做日志但尚未写入数据文件的数据。因为所有被提交的事务已经记载到了重做日志,所以可以确保恢复事务数据。

(2)打开数据库。在打开数据库时,既包括了已提交的数据,也包括了未提交的数据(加锁)。

(3)UNDO。取消未提交的数据。在打开数据库之后,Oracle 会自动使用UNDO 段回退未提交的数据。

 

2,PMON(Process Monitor)

PMON 用于监视服务器进程的执行,并且在服务器进程失败时清除该服务器进程。当访问Oracle Server 时,Oracle 会在服务器端为用户进程分配服务器进程。假定用户进程地址例外意外终止运行,PMON 可以轮询检测该服务器进程,并执行以下操作:

  • 回退用户的当前事务。
  • 释放服务器进程所占有的表锁和行锁。
  • 释放用户所占用的其他资源。

 

3,DBWR(Database Writer)

DBWR 用于将数据高速缓存的脏缓冲区数据写入到数据文件中。当执行DML 操作时,服务器进程会修改缓冲区,并且将这些缓冲区标识为“脏缓冲区”,将来这些脏缓冲区数据会由后台进程DBWR 写入到数据文件中。

默认情况下只有一个DBW0 进程,通过设置初始化参数db_writer_processes 可以定义最多10个DBWR 进程(DBW0~DBW9)。在出现以下情况时,DBWR 进程会开始工作:

  • 系统发出检查点(checkpoint)。
  • 服务器进程不能找到空闲缓冲区。
  • 删除或截断表。
  • 使表空间正常脱机(ALTER TABLE ... OFFLINE NORMAL)。
  • 开始表空间备份(ALTER TABLESPACE ... BEGIN BACKUP)。

 

4,LGWR(Log Writer)

LGWR 用于将重做日志缓冲区所记载的全部内容写入到重做日志。当执行DML 或DDL 语句时,服务器进程首先将事务变化写到重做日志缓冲区,然后才会修改高速缓存。注意,Oracle  总是“先日志后修改”(先记载变化后修改数据)。因此,在将脏缓冲区数据写入到数据文件之前,Oracle 首先将事务变化写入到重做日志。也就是说,在DBWR 工作之前,LGWR 首先将事务变化写入到重做日志。

在以下情况中LGWR 进程会开始工作:

  • 提交事务(COMMIT)。
  • 每隔三秒钟。
  • 当重做信息超过1M 时。
  • 重做日志缓冲区已有1/3 填满。
  • 在DBWR 进程将脏缓冲区写入到数据文件之前。

 

5,CKPT(Checkpoint Process)

CKPT 用于发出检查点,并且检查点会同步数据库的数据文件、控制文件和重做日志。当发出检查点时,后台进程CKPT 会将检查点时刻的SCN(System Change Number)写入到控制文件和数据文件头部,同时会促使后台进程DBWR 将所有脏缓冲区数据写入到数据文件中。

当发出检查点时,不仅后台进程CKPT 和DBWR 要开始工作,而且LGWR 也会将重做日志缓冲区写入到重做日志,从而确保了数据文件、控制文件和重做日志的一致性。

在以下情况中CKPT 会开始工作:

  • 日志切换。
  • 关闭例程(SHUTDOWN ABORT 除外)。
  • 手工检查点操作(ALTER SYSTEM CHECKPOINT)。
  • 由初始化参数fast_start_mrrt_target 强制发出检查点。

 

6,ARCH(Archive Process)

ARCH 用于将重做日志的事务变化复制到归档日志中。

在ARCHIVELOG 模式下才会被启动。

默认只有两个进程(ARC0、ARC1),通过初始化参数log_archive_max_processes 可以最多定义10个归档进程(ARC0~ARC9)。

在ARCHIVELOG 模式下,当进行日志切换时会自动生成归档日志。

通过查询动态性能视图v$bgprocess ,可以显示所有后台进程信息。

SQL> select name, description from v$bgprocess where paddr<>'00';

NAME  DESCRIPTION
----- ----------------------------------------------------------------
PMON  process cleanup
PSP0  process spawner 0
MMAN  Memory Manager
DBW0  db writer process 0
LGWR  Redo etc.
CKPT  checkpoint
SMON  System Monitor Process
RECO  distributed recovery
CJQ0  Job Queue Coordinator
QMNC  AQ Coordinator
MMON  Manageability Monitor Process
MMNL  Manageability Monitor Process 2

已选择12行。

### STM32与LwIP 2.1.3的配置及示例代码 #### LwIP HTTP服务器的基础设置 为了实现基于STM32和LwIP 2.1.3的HTTP服务器功能,需要对`lwipopts.h`文件进行必要的宏定义调整。这些宏用于启用特定的功能模块,例如CGI支持、SSI模板解析等[^2]。 以下是关键的宏定义: ```c #define LWIP_HTTPD_CGI_SSI 1 // 启用CGI和SSI支持 #define LWIP_HTTPD_FILE_STATE 1 // 支持文件状态管理 #define LWIP_HTTPD_SSI 1 // 启用SSI指令处理 #define LWIP_HTTPD_SSI_INCLUDE_TAG 0 // 不使用标准HTML标签形式的SSI #define LWIP_HTTPD_SSI_RAW 1 // 使用原始字符串作为SSI标记 ``` #### SD卡上的网页服务 当STM32内部Flash无法容纳大量网页资源,可以通过外部存储设备(如SD卡)加载网页文件。此方案依赖于FatFS库来管理和读取文件系统数据[^3]。所有网页文件通常存放在SD卡根目录下的`www`子目录中。 初始化过程包括以下几个方面: 1. **挂载SD卡**:确保FatFS能够成功识别并挂载SD卡。 2. **配置HTTP路径映射**:将HTTP请求的URL地址指向对应的本地文件位置。 3. **启动FTP服务**(可选):允许远程更新或上传新文件到SD卡上。 下面是一个简单的例子展示如何从SD卡提供静态页面: ```c #include "ff.h" #include "httpd.h" // 假定已正确初始化好FATFS对象fs static FATFS fs; void http_server_init(void){ FRESULT res; /* Mount the filesystem */ res = f_mount(&fs, "", 0); if (res != FR_OK) { printf("Failed to mount SD card\n"); return; } /* Initialize LwIP&#39;s HTTP server with CGI support enabled */ http_set_uri_callback(http_file_handler); } err_t http_file_handler(struct http_conn *conn){ char buf[64]; size_t len; FIL file; snprintf(buf,sizeof(buf),"/www/%s", conn->uri); if(f_open(&file,buf,A_READ)==FR_OK){ while((len=f_read(&file,buf,sizeof(buf)-1))>0){ tcp_write(conn->pcb,buf,len,TCP_WRITE_FLAG_COPY); } }else{ tcp_write(conn->pcb,"File Not Found",12,TCP_WRITE_FLAG_COPY); } } ``` 上述代码片段展示了基本框架,实际项目可能还需要考虑错误处理机制以及性能优化等问题。 #### GPIO控制实例结合Web界面操作 除了单纯地服务于预定义好的HTML文档之外,还可以进一步扩展应用程序逻辑使得用户可通过浏览器端发起命令从而改变目标系统的物理行为——比如点亮LED灯泡或是旋转电机等等。这种交互方式往往借助AJAX技术异步提交表单而不刷新整个页面内容;另一方面则是在后台编写相应的脚本来响应前端传来的参数变化情况进而调用对应API完成具体动作执行流程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值