--查询dbwr进程号

select pname,spid from v$process where pname like 'DBW%';

PNAME SPID
----- ------------------------
DBW0  9776      ---查询的是操作系统的进程号

--linux 系统查询的进程号

[oracle@yang admin]$ ps -ef|grep ora_dbw |grep -v grep

UID        PID  PPID       C         STIME         TTY          TIME               CMD
oracle    9776     1         0            Oct29            ?           00:00:02            ora_dbw0_yang

UID: 程序的用户所有者

PID : 程序的ID号

PPID:则是其上级父程序的ID

C   :   cpu的使用百分比

linux命令: ps ( process status进程状态的缩写)

参数a 显示所有程序(比-a更详细)-a显示同一个终端的所有程序

-A 显示所有进程  = -e 两者相同

-f  显示所有进程之间的关系

|grep ora_   --过滤查询显示ora_开头的文件, -v 查询的结果过滤(除去) grep 的字段

应用: ps -ef|grep ora_  =》查询linux下,所有Oracle正在使用的进程

[oracle@yang ~]$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S  1001 13677 13676  0  80   0 - 16518 wait   pts/5    00:00:00 bash
0 R  1001 14133 13677  0  80   0 - 15878 -      pts/5    00:00:00 ps

F- 4  代表进程权限root: 1 表示只能查询

S- S可以唤醒使用,R正在运行,D不能使用,T停止状态,Z僵尸进程

UID/PID/PPID 代表进程的拥有者老板,进程的身份证,进程的父亲管理者

C CPU使用率,百分比;

PRI/NI  进程被CPU执行的顺序优先级,小高;

ADDR/SZ/WCHAN:  运行显示-,使用多少内存,-表示工作中

TIME:使用CPU时间,实际花费CPU时间

CMD,启用进程时间

uix: ps uix  --查询

--知道进程号的作用,linux系统操作强制关闭数据库:

Kill -9 dbw0_pid          --杀死了进程

--查询dbwr进程的描述:

select paddr,name,description from v$bgprocess where name like 'DBW%';

PADDR            NAME  DESCRIPTION
---------------- ----- ------------------------------
00000000B5510FB0 DBW0  db writer process 0  (数据写进程)
00                              DBW1  db writer process 1

---

00               DBW9  db writer process 9
00               DBWa  db writer process 10 (a)

--

00               DBWy  db writer process 34 (y)

00               DBWz  db writer process 35 (z)

36 rows selected.      11.2.0.4版本,dbwr进程最多36个进程;此时只使用了一个dbw0

SQL> show parameter writer   --查询数据库写进程数量,与上分对比发现,未启用的DBWN进程PADDR=‘00’

NAME TYPE VALUE
-----------------------------------
db_writer_processes integer 1

SQL> show parameter count  --查询CPU个数

cpu_count                            integer     1

SQL> alter system set db_writer_processes=5 scope=spfile;

SQL> startup force

SQL> show parameter writer

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes integer 5

SQL> select paddr,name,description from v$bgprocess where name like 'DBW%' and paddr not in '00';

--只有四条记录:

DBWN进程,数量收到CPU个数的限制,本次操作虽然参数改为5个,但是实际启用的进程数量为4;

一个CPU支持4个dbwn写进程

DBWR-是什么,是数据写进程,写什么? 将实例中的,buffer_cache中的脏块,写入database中的数据文件中,干活的是DBWR进程;

那么DBWR什么时候触发,什么时候写呢?

1.当数据库触发完全检查点的时候:

SQL> show parameter alert

NAME                                 TYPE        VALUE

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

log_checkpoints_to_alert             boolean     FALSE

SQL> alter system set log_checkpoints_to_alert=true;  修改参数后,生成的检查点会写入告警日志

System altered.

--触发检查点
alter system checkpoint;

show parameter dump=> tail -200f *.log
ALTER SYSTEM SET log_checkpoints_to_alert=TRUE SCOPE=BOTH;
Sun Oct 29 17:30:42 2017
Beginning global checkpoint up to RBA [0x33.c38.10], SCN: 1568364
Completed checkpoint up to RBA [0x33.c38.10], SCN: 1568364

疑问有个增量检查点,是什么呢?

SQL> alter system checkpoint;
Beginning global checkpoint up to RBA [0x33.c38.10], SCN: 1568364
Completed checkpoint up to RBA [0x33.c38.10], SCN: 1568364

SQL> alter system switch logfile;
Beginning log switch checkpoint up to RBA [0x34.2.10], SCN: 1568383
Thread 1 advanced to log sequence 52 (LGWR switch)

什么是实例恢复:从最近的一个完全检查点作为启始点,前滚走到数据库崩溃的最后一个日志记录的SCN;

然后回滚利用UNDO删除未提交的事务;

如果完全检查点半年触发,半年后数据库崩了,实例恢复,前滚应用半年日志吗?

是不是很傻,整理了一个增量检查点的概念,为啥要增量检查点,减少实例恢复的时间;

增量和完全的区别在哪? 完全检查点一致性,Buffer_cache中的所有脏块,立刻马上全部写入磁盘,对磁盘IO压力山大;

而增量检查点的触发条件是,切换日志组,可能几个小时就切换一次;

增量的检查点做了哪些操作,第一,找到现在的SCN号,做一条红线,将SCN小的所有脏块,记录一下,放到Buffer_cache的脏块列表中(已数据对象为间隔的脏列表中,所以移动整理消耗不会太大),每隔3S时间,就去检查一下是不是有脏块写入数据文件了,写入了打个勾,红线越来越退后,直到没有这个红线,工作完成,只是记录,不主动触发写进程,实例崩溃也会找最近的增量检查点没有必要找完全检查点了;

2.buffer_cache空间不够,新的查询数据块在Buffer_cache中寻找空闲的数据块少,不够,触发写进程,空出内存;

3.脏块太多,溢出,空闲块太少

SQL> select kvittag,kvitval,kvitdsc from x$kvit where kvittag in('kcbldq','kcbfsp');

KVITTAG KVITVAL KVITDSC
---------- ------- ------------------------------------------------------------
kcbldq 25 large dirty queue if kcbclw reaches this        ---如果脏块数量的百分比达到了25%,就会触发DBWN写进程
kcbfsp 40 Max percentage of LRU list foreground can scan for free---SERVER PROCESS进程拿着物理块,扫描了百分之40的LRU链还是没找到足够的空闲块,DBWR触发

4.dbwr规定内的间隔时间 3S

5.RAC节点释放空间

6.表空间OFFLINE.READ ONLY,热备份begin backup;

7表的DROP,TRUNCATE的操作都会触发DBWN进程,脏块写入数据文件

DBWR进程的更多相关文章

  1. 【Oracle】-【体系结构】-【DBWR】-DBWR进程相关理解

    对DBWR的一些理解 首先从名称上,DBWR全称是Database Writer Process,属于Oracle后台进程的一种,有的地方也叫DBWn,我想这里是出于DBWR进程个数的原因,DBWR进 ...

  2. Oracle 后台进程(二)DBWR进程

    一.DBWR进程介绍 DBWR进程执行将数据块缓冲区写入数据文件的工作,是负责缓冲存储管理的一个Oracle后台进程.在修改DB Cache中的某个缓冲区时,会将它标志为“DIRTY”,DBWR的主要 ...

  3. Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结

    一.  DBWR写磁盘数据触发条件 1. 当进程在辅助LRU链表和主LRU链表上扫描以查找可以覆盖的buffer header[空闲缓冲区]时,如果已经扫描的buffer header的数量到达一定的 ...

  4. oracle进程

    http://blog.csdn.net/leshami/article/details/5529239 Oracle实例和Oracle数据库(Oracle体系结构) 几类进程:用户进程,服务进程,后 ...

  5. 修改dbwr后台进程数量

    批量执行脚本时,批量数据写回到数据库:从EM中查看到有较多的dbwr的IO请求   查看后台dbwr的进程数量 select * from v$bgprocess 在查询结果中paddr的字段为非'0 ...

  6. Oracle CheckPoint进程

    在实例经过分配内存结构,加载控制文件后,然后要打开数据库的时候,需要做到控制文件,数据文件,联机重做日志保持相互状态一致性,数据库才可以打开.当数据库发生实例不正常关闭时(比如系统掉电或者Shutdo ...

  7. ORA-00471: DBWR process terminated with error案例

    每年年底,系统管理员都要组织一次容灾方案的测试.演练.会在一个与生产环境网络隔离的DR环境中,启动各个"生产环境服务器",然后让各路人员参与其中测试.演练容灾方案是否可靠.这次演练 ...

  8. Oracle体系结构之Oracle10gR2体系结构-内存、进程

    oracle体系结构图1 oracle体系结构图2 用户进程(访问oracle的客户端的总称) 工具的使用:sqlplus.pl/sql developer 如何访问数据库: 本机直接通过sock方式 ...

  9. Oracle 常见进程

    1 服务器进程 专用服务器连接:数据连接跟服务器上的一个进程之间存在1:1的映射 共享服务器连接:多个会话共享一个服务器进程池,由一个调度程序分配 1.1 专用服务器连接 专用服务器连接模式下,客户连 ...

随机推荐

  1. Django模板语言详解

    本节将介绍Django模版系统的语法.Django模版语言致力于在性能和简单性上取得平衡. 如果你有过其它编程背景,或者使用过一些在HTML中直接混入程序代码的语言,那么你需要记住,Django的模版 ...

  2. Java入门:零碎的知识点

    实例变量经常被称为属性 成员变量和局部变量:前者在类中定义,后者在类的方法中定义且系统不会自动赋初始值 我们创建一个对象的时候实际上执行的是无参的构造方法 静态变量 static String arr ...

  3. Chrome开发者工具之JavaScript内存分析(转)

    尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝 ...

  4. Codeforces 834C - The Meaningless Game

    834C - The Meaningless Game 数学. 思路1:判断a•b能不能化成v3且a%v==0且b%v==0.v可以直接用pow求(或者用cbrt),也可以二分求:还可以用map映射预 ...

  5. mysql 将一张表里的数据插入到另一张表

    1. 表结构一样 insert into 表1 select * from 表2 2. 表结构不一样 insert into 表1 (列名1,列名2,列名3) select 列1,列2,列3 from ...

  6. English trip -- Phonics 4 元音字母 i

    IPA   国际音标(英语:International Phonetic Alphabet [ælfəbet],缩写:IPA),早期又称万国音标 VOWELS [ɪ]   [u]   [ʌ]   [ɒ ...

  7. Report CodeForces - 631C (栈)

    题目链接 题目大意:给定序列, 给定若干操作, 每次操作将$[1,r]$元素升序或降序排列, 求操作完序列 首先可以发现对最后结果有影响的序列$r$一定非增, 并且是升序降序交替的 可以用单调栈维护这 ...

  8. 新项目中使用的linux命令

    要通过跳板机进入内网之后,访问内网域名 mysql -h xxxxxxx -u u_caojiangjiang -p -P 3306 上传文件: scp -r /Users/qudian/Deskto ...

  9. loj#101. 最大流 dinic+当前弧

    板子题 当前弧优化版本 目前效率最高 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize(&q ...

  10. vij 1097 贪心

    合并果子 描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之 ...