SMON进程、PMON进程、LGWR/ARCH

SMON 进程:system monitor instance monitor 系统监控、实例监控进程

说明及作用:在实例关闭时,会清理临时段,整理空闲空间free space;

实例非正常关闭后,启动实例时,做instance recovery ;

SMON如何判断是否需要实例恢复: --在数据库mount状态,可以通过last_change#是否未Null;

select name,checkpoint_change#,last_change# from v$datafile;

--数据库在一致性关库的时候会触发ckpt,完全检查点,控制文件会记录相应的值;

前滚,通过redo日志查询到离数据库最近的一次检查点SCN为起始点,通过应用redo往前滚走到redo日志的最后一刻,重演操作,也就是将数据库的脏块还原,随后应用Undo,回滚事物的方式将未提交的事物回滚,确保事务一致性后,数据库open;

PMON:SMON是实例级别的管理,那么 进程谁管理呢?

PMON:  process cleanup 进程清理

说明:用户连接数据库,会产生一个会话分配一个server process提供服务,以及分配一个Uga,正常情况下,会话退出,释放资源。但是如果异常退出呢?比如客户端死机,server process 不会正常退出,持有的资源还在不断消耗,PMON进程会监控进程,一旦发现后,释放资源,回滚事物:锁、内存等消耗释放

监控进程,将Instance注册到listener,Oracle自动的,如果数据库多个实例,然而监听程序就一个,需要将实例注册到监听中,让其识别;如果配置的是动态监听,数据库启动,需要等待Pmon进程去注册,可能需要等待一段时间,可以通过命令手工注册:alter system register;

LGWR: 日志写进程:

说明:从log buffer 写入redo log files文件中;

在单实例环境下,只有一个Log buffer,因此设置多个lgwn进程没有意义,日志是串行写进程,顺序写;

12c可以有00-99个lgwr进程;

触发条件:1.commit提交,commit操作只涉及到了LGWR进程,提示commit成功,只表明log buffer 写入了log file文件且在redo undo中事物标记commit提交标识;

2. 每3s

3、1/3满:存储的数据,在Log buffer中存储三分之一就触发条件;

4、 1M累计

5、 DBWR写脏块前  写入redo log file 文件中,ORACLE 一定要记住,日志先行’

ARCN   归档进程,作为日志文件的补充;

Oracle如何保证恢复的完全恢复,就是应用redo 日志来解决的恢复问题;

Oracle的日志文件有个特点: 循环覆盖写,最少一个单实例数据库所需的redo file文件最少两组,A写满,切换B,如果B写满,在循环使用A, 如果是非归档模式下,则覆盖文件;

在生成环境下,为了确保数据0丢失,因此保留日志文件是非常有必要的,因此会开启归档,开启归档后,在A切换B之后,立刻马上,A写满的日志文件会在ARCN的进程引导下按照归档文件命名规则,生成一个归档文件;

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch

SQL> startup force mount;        --设置归档,需要数据库一致性关闭数据,并启动到mount状态

ORA-00265: instance recovery required, cannot set ARCHIVELOG mode

SQL>alter database open;

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database archivelog;

SQL> archive log list; Database log mode              Archive Mode

SQL> alter database open;

--开启归档后,归档进程的数量

SQL> show parameter arch

log_archive_max_processes            integer     4  --归档进程数量

--查询当前状态:

select dest_id,dest_name,status,binding,name_space,destination,log_sequence from v$archive_dest where status=‘VALID‘;

1 LOG_ARCHIVE_DEST_1                VALID       OPTIONAL  SYSTEM   /u01/guidang/   0

2 LOG_ARCHIVE_DEST_2                VALID       OPTIONAL  SYSTEM /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch/                  0

---参数,标识数据库,归档文件命名规则

log_archive_format                   string      %t_%s_%r.dbf

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch

SQL> show parameter log_arch

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_config                   string

log_archive_dest                     string

log_archive_dest_1                   string

log_archive_dest_2                   string

SQL> show parameter db_recovery

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string

db_recovery_file_dest_size           big integer 0

--更改归档路径:

如下,设置了两个归档参数,两个归档互为备份,Location本地,server远程

mkdir -p /xxx目录,权限需要注意,chown -R oracle.oinstall
alter system set log_archive_dest_1="location=/u01/guidang/";
SQL> alter system set log_archive_dest_2="location=/picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch/";

时间: 2024-10-04 11:45:19

SMON进程、PMON进程、LGWR/ARCH的相关文章

Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度(六)

日期 内核版本 架构 作者 GitHub CSDN 2016-05-29 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的创建 前言 Linux下有3个特殊的进程,idle进程(PID=0), init进程(PID=1)和kthreadd(PID=2) * idle进程由系统自动创建, 运行在内核态 idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产

Linux进程创建、可执行文件的加载和进程执行进程切换

作者:刘磊 文中参考代码出处:https://github.com/mengning/linuxkernel/ 本文主要针对进程创建.可执行文件的加载和进程间切换三大部分进行实验并分析. 实验环境:Ubuntu 16虚拟机.VMware 14 1 进程创建 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程

进程(二) —— 进程控制块

进程(二) —— 进程控制块 进程控制块(PCB, Process Control Block) 定义: 操作系统管理和控制进程运行所用的信息集合 操作系统用 PCB 来 描述进程的 基本情况 以及 运行变化 的过程 PCB是进程存在的唯一标志 每个进程都在 操作系统 中有一个对应的PCB 进程控制块的使用 进程创建 生成 该进程的 PCB 进程终止 回收它的PCB 进程的组织管理 通过对PCB的组织管理来实现 进程控制块内容 进程标志信息 处理机现场保存 进程控制信息 进程控制信息 调度和状态

孤儿进程 && 僵尸进程

background: unix: 每个子进程退出,内核释放该进程所有资源,打开的文件,占用的内存 保留的信息:the process ID,the termination status of the process,the amount of CPU time taken by the process 父进程用wait()/waitpid()释放子进程的保留信息 父进程不调用wait()/waitpid()进程号一直被占用,系统所能提供的进程号有限,没有可用的进程号导致系统不能产生新的进程 Z

进程管理—进程描述符(task_struct)

http://blog.csdn.net/qq_26768741/article/details/54348586 当把一个程序加载到内存当中,此时,这个时候就有了进程,关于进程,有一个相关的叫做进程控制块(PCB),这个是系统为了方便进行管理进程所设置的一个数据结构,通过PCB,就可以记录进程的特征以及一些信息. 内核当中使用进程描述符task_struct. 这个task_struct就是一个定义的一个结构体,通过这个结构体,可以对进程的所有的相关的信息进行维护,对进程进行管理. 接下来我们

进程与进程之间通信Manager

1 #!/usr/bin/env python 2 from multiprocessing import Process,Manager 3 4 #Manager进程与进程之间通信 5 def Foo(i,dic): 6 dic[i] = 100+i 7 print(dic.values()) 8 if __name__ == '__main__': 9 manage = Manager() 10 dic = manage.dict() 11 for i in range(2): 12 p =

进程篇—进程整理(转)

一.概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题. 1.1 父进程 在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下: kthreadd进程: 是所有内核进程的父进程 init进程 : 是所有用户进程的父进程(或者父父进程) zygote进程 : 是所有上层Java进程的父进程,另外zygote的父进程是init进程. 1.2 重量级进程 在Android进程中,有3个非常重要的进程(

c# 关闭软件 进程 杀死进程

c# 关闭软件 进程  杀死进程 foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("Server")) { p.Kill(); }

linux内核之进程的基本概念(进程,进程组,会话关系)

进程是操作系统的一个核心概念.每个进程都有自己唯一的标识:进程ID,也有自己的生命周期.一个典型的进程的生命周期如图4-1所示. 进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家族树.除此以外,进程还有其他层次关系:进程.进程组和会话. 进程组和会话在进程之间形成了两级的层次:进程组是一组相关进程的集合,会话是一组相关进程组的集合. 这样说来,一个进程会有如下ID: ·PID:进程的唯一标识.对于多线程的进程而言,所有线程调用getpid函数会返回相同的值. ·PGID:进