`
wxyfighting
  • 浏览: 190794 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ORACLE常用后台进程说明

 
阅读更多

本文相对较为简单,简单介绍一下ORACLE后台进程(ORACLE的INSTANCE主体是由内存+后台进程组成),其中部分也是备份与恢复的关键点,本文主要说一下ORACLE后台进程的工作原理,首要分类的是将ORACLE后台进程分为:独立模式、共享模式,我们一般采用独立模式,也就是会话的后台进程是独立的,共享模式相对来说有一个分配资源和并行处理的,所以用于MTS系统中,暂时不考虑这方面的问题,简单说下进程吧:

1、ORACLE进程查询介绍

2、核心进程PMON说明

3、核心进程SMON说明

4、核心进程DBWR说明

5、核心进程LGWR说明

6、CKPT说明

8、其它一些进程

正文(跟着操作一遍即可):

1、ORACLE进程查询介绍

--首先登陆数据库:

SQL> connect / as sysdba;


已连接。

--查看SGA的信息,10g才有的视图

--ORACLE 10G后才可以使用的命令
SQL> select * from v$sgainfo;

NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 1249992 No
Redo Buffers 7135232 No
Buffer Cache Size 398458880 Yes
Shared Pool Size 121634816 Yes
Large Pool Size 4194304 Yes
Java Pool Size 4194304 Yes
Streams Pool Size 0 Yes
Granule Size 4194304 No
Maximum SGA Size 536870912 No
Startup overhead in Shared Pool 50331648 No
Free SGA Memory Available 0

--看下SGA大小:

SQL> show parameter sga_t;

NAME TYPE VALUE
------------------------------------ ----------- -------------------
sga_target big integer 512M

--提取已经分配的后台进程:
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

NAME DESCRIPTION
----- -----------------------------------------------------------
MMNL Manageability Monitor Process 2

在这里看到很多进程,红色标注部分全部为核心进程,CKPT虽然不是核心进程,但是也很重要,所谓核心进程是,实例中要是这些进程死掉了,实例只有重启,没法处理,其余非核心进程死掉,可以处理,通过ALTER SYSTEM REGISTER,即通过配置重新注册一次,有部分修改的配置信息,须立即生效的,也是通过这个命令完成,下面对核心进程和非核心进程说明一下。

2、核心进程PMON说明

全称为:process cleanup ,表示进程清理,负责将死掉的进程杀掉,如连接到数据库后,断掉网络这些进场将会被杀掉,如果是死锁掉的,需要人工干预后才能回收。

3、核心进程SMON说明

System Monitor Process:1、做资源回收、数据库崩溃时自我修复。回收资源包含:排序的、回退的、DROP掉的表,将资源合并;2、当数据库异常关闭时,启动中SMON后台进程通过控制文件发现日志文件和数据文件不一致,通过日志文件恢复数据文件,而动作由SMON执行。

4、核心进程DBWR说明

db writer process 0(db代表DATABASE):带下标的,代表有一组后台进程,不带下标的,都是独立的一个进程运行;DBWR进程,最多20个,最少一个。一般和CPU有关系,根据CPU进行相应的设置。这类进程做一件事情就是写脏数据的过程。dirty buffer。

DBWR触发条件:

1、脏数据库太多,没有多余的缓冲区来存放了。
2、超时 3秒左右
3、CKPT,检查点触发
4、数据库备份
5、表空间离线或只读时
6、停止数据库

可以看出,没有说明COMMIT时会进程DBWR,那么如果COMMIT了,但是没有写数据,在断电、SHUTDOWN ABORT等情况下,数据不就没有了吗,后面说道LGWR和CKPT时会连套起来说明。

SQL> select name,DESCRIPTION from v$bgprocess where name like 'DBW%';

NAME DESCRIPTION
----- ----------------------------------------------------------------
DBW0 db writer process 0
DBW1 db writer process 1
DBW2 db writer process 2
DBW3 db writer process 3
DBW4 db writer process 4
DBW5 db writer process 5
DBW6 db writer process 6
DBW7 db writer process 7
DBW8 db writer process 8
DBW9 db writer process 9
DBWa db writer process 10 (a)

NAME DESCRIPTION
----- ----------------------------------------------------------------
DBWb db writer process 11 (b)
DBWc db writer process 12 (c)
DBWd db writer process 13 (d)
DBWe db writer process 14 (e)
DBWf db writer process 15 (f)
DBWg db writer process 16 (g)
DBWh db writer process 17 (h)
DBWi db writer process 18 (i)
DBWj db writer process 19 (j)

5、核心进程LGWR说明

LGWR Redo etc:写日志文件,将日志缓冲区的数据写入在线日志文件中。其写法为:循环写、顺序写,按组(GROUP)管理日志文件(在前面文章中有说明),一般默认三组,每个成员(GROUP下的一个日志文件)最少4M大小,默认50M,同组下多个成员一起使用过一次后成为孪生兄弟,即相互拷贝,相互备份,因为它是保护数据的,它自己只有自己保护自己,就想控制文件一样。

LGWR触发条件:

1、提交做COMMIT或ROLLBACK;
2、大于1M日志未写入磁盘
3、1/3日志缓冲区未写入磁盘
4、DBWR之前须先写LGWR,也就是LGWR写入的日志文件的SCN号码肯定是大于等于数据文件的
5、超时

LGWR会记录什么?

也就是做COMMIT的时候会将信息写入日志文件中,记录的大致是字段地址、字段值、事务标志。

很多人可能会问:既然这些信息都记录了所有的插入数据文件的信息干嘛还要写日志呢?

很简单的答案:

1、第一使用日志文件是轻量的,相对较为安全,若文件坏掉,绝大部分甚至全部数据可以找回。

2、日志文件写比数据文件写要快很多,大家会发现日志文件只有一个LGWR进程,而DBWR有20,但是20也没有LGWR一个快,主要有两个方面的原因:一个是日志文件是顺序写,循环写,它不用考虑下面的位置,而数据文件需要找到实际的位置去修改并且需要分配磁盘空间;其次,数据文件修改后牵涉相关视图的修改,若频繁使用DBWR,在高并发系统中会很容易就出现瓶颈了,所以你COMMIT的时候,如果ORACLE把成功写入在线日志文件,它就向客户反馈提交成功了。


6、CKPT说明

全称checkpoint:这个概念一直很模糊,因为有个命令是ALTER SYSTEM CHECKPOINT,这里的额CKPT是一个进程,而那个命令是调用这个进程来进程全局的磁盘写,而CHECKPOINT还有一个在中文上很多时候把他称为检查点的概念,这个检查点可以理解为一个已经被存盘的SCN号码,也就是一个特殊的SCN号码,他们都存在于数据文件头、控制文件头、日志文件内部,通过V$DATABASE视图以及表空间视图、数据文件视图、控制文件视图都可以查到(在前面文章已经说过),当日志文件进行增量或者全部存盘时,会将起始的CHECKPOINT_CHANGE#编号,与需要存盘的SCN号码对比(全量存盘以当前SCN号码为准),将这部分脏块写入数据文件,并修改数据文件头和控制文件头的检查点号码。

简单说下一下几个问题:

为什么用SCN号码,不用时间戳?

因为系统时间是可以被改变的,SCN号码永远向上增长。

SCN号码自动增长,会不会有上线?

是的,有的,不过很大,有这么大:

SQL> select to_number('ffffffffffff','xxxxxxxxxxxxx') from dual;

TO_NUMBER('FFFFFFFFFFFF','XXXXXXXXXXXXX')
-----------------------------------------
2.8147E+14

以数据库7*24不休息,每秒20万次业务操作,则查询一下40年使用多少:
SQL> select 40*365*24*3600*200000 FROM DUAL;

40*365*24*3600*200000
---------------------
2.5229E+14

即这样下去最少可以使用四十多年,到四十多年后,ORACLE再给升级一下就搞定这些事情了。

说到第一个问题,COMMIT不写数据文件,数据跑哪里去了?
在LGWR中,COMMIT时是通过LGWR写入在线日志文件后反馈提交成功的,也就是要写入数据文件的内容都在这里面可以找到。当你shutdown abort或者断电时,然后重启到MOUNT时,SMON进程通过控制文件发现检查点记录与日志文件不协调,此时,就通过日志文件增量构造DIRTY LIST,并进行存盘操作,然后启动,这个过程对外部没有任何效果,内部自动完成的。

同理,日志文件坏掉了,所谓的RESETLOGS就是通过这个SCN号码从新构造日志文件;

初始化参数文件坏掉了,编辑一个;

控制文件坏掉了可以提前做一个TRANCE,其实也就是控制文件的空壳创建语句,自己也可以编辑一个,不过记得将临时表空间引入(否则大SQL会报错),然后通过日志文件RECOVER一下。

关于数据文件坏掉不是一两句话可以说明白的,后面专门说这个,只是也会涉及SCN号码来回调用和介质恢复而已。

7、其它的一些进程说明:

ARCH进程:归档进程,在归档模式下,当所有在线日志组全部写满的时候,再进行切换时,就会自动启用ARCH进程,这些日志文件被复制到一个或多个主机上,复制后,被称为归档日志文件。
CJQ0 Job Queue Coordinator:队列进程,可以使用C000~C999的作业进程来运行。
Snnn:共享服务器进程,用于MTS系统。
Dnnn:共享服务器调度进程。

10g后的一些:
QMNn :队列监控进程。
MMON Manageability Monitor Process、MMNL Manageability Monitor Process 2:为自动工作区(AWR)手机数据库的快照,根据调度将SGA的手机信息交给AWR。
MMAN:自动内存管理进程。
等等,如:RBAL、ASMB,11g中还有更多的进程。

分享到:
评论

相关推荐

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle&gt;svrmgrl SVRMGR&gt;connect internal SVRMGR&gt;startup ...

    常用oracle动态性能视图

    包括用户session及后台进程如DBWR,LGWR,arcchiver等等。 V$SESSION中的常用列 V$SESSION是基础信息视图,用于找寻用户SID或SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例: SQL_HASH_VALUE,...

    Oracle的常用命令

    读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档、 数据库介质恢复、 使数据文件联机或脱机...

    Oracle11g从入门到精通2

    3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 3.6.4 转换类函数 3.6.5 聚集类函数 第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 ...

    ORACLE9i_优化设计与系统调整

    §11.2 后台进程与跟踪文件 128 §11.3 用户跟踪文件 128 §11.4 动态性能视图 129 §11.5 UTLBSTAT和UTLESTAT 129 §11.6 STATSPACK 129 §11.7 Oracle等待事件 129 §11.8 Oracle诊断和调整包 129 第12章 优化SQL...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  ...

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

     5.2.4 后台进程  5.3 数据字典  5.3.1 数据字典的概念  5.3.2 数据字典的组成  5.3.3 数据字典的使用  5.3.4 动态性能表和动态性能视图  5.3.5 查询数据字典视图的信息  5.4 SQL语句的执行过程  ...

    Oracle Database 11g初学者指南--详细书签版

    1.2.8 后台进程 5 1.2.9 数据库管理员 7 1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    3.3.2后台进程 3.4 Clusterware隔离机制 3.4.1 Clusterware心跳 3.4.2 Clusterware隔离特性IPMI 3.4.3 RAC隔离体系 3.5网格即插即用 3.5.1 GPnP结构 3.5.2 GPnP profile文件 3.5.3 mDNS服务 3.6日志体系 ...

    Oracle11g从入门到精通

    3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 3.6.4 转换类函数 3.6.5 聚集类函数 第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 ...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    Oracle.11g.从入门到精通 (2/2)

    3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 3.6.4 转换类函数 3.6.5 聚集类函数 第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/...

    Oracle.11g.从入门到精通 (1/2)

    3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 3.6.4 转换类函数 3.6.5 聚集类函数 第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/...

    oracle中的一些常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函数及示例,一是为了...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    1.2.8 后台进程 1.2.9 数据库管理员 1.3 Oracle Database 11g的基本数据类型 1.3.1 varchar2 1.3.2 数字 1.3.3 日期 1.3.4 时间戳 1.3.5 clob 1.3.6 blob 1.4 表 1.5 存储对象 1.5.1 视图 1.5.2 触发器 1.5.3 过程 ...

    oracle动态性能表

     CPU used by this session:所有session的cpu占用量,不包括后台进程。这项统计的单位是百分之x秒.完全调用一次不超过10ms  db block changes:那部分造成SGA中数据块变化的insert,update或delete操作数 这项...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    2.2 SGA和后台进程 53 2.3 连接Oracle 56 2.3.1 专用服务器 56 2.3.2 共享服务器 57 2.3.3 TCP/IP连接的基本原理 58 2.4 小结 61 第3章 文件 63 .3.1 参数文件 64 3.1.1 什么是参数? 65 3.1.2 遗留的init...

Global site tag (gtag.js) - Google Analytics