这篇文章是参考甲骨论老相老师的教学视频:
http://v.youku.com/v_show/id_XMzkyMjA5NTEy.html
所做的学习笔记

1.介绍DBWR写进程.
之前介绍过Database buffer cache的作用流程了,参考下图:

具体可以参考我之前的学习笔记:
http://nvd11.blog.163.com/blog/static/200018312201302695451760/

但上面这个流程只提到了用户客户端读取数据的流程, 并没有提到修改数据..

1.1 用户修改数据后, 对应buffer会变成1个脏buffer

 

当用户修改数据,并且提交后, 数据就会写入对应buffer, 该buffer的数据就跟dbf文件中的block不一致了, 所以就成了1个脏buffer.
     并且这个脏buffer会被加入到database buffer cache中的 LRUW链 和 checkpoint queue链中.(参考http://nvd11.blog.163.com/blog/static/200018312201301875752730/)

1.2 这时server process就直接提示用户修改完成,可以进行下1个动作了.
      Server Process就会进行1个动作,  并不负责将这个脏buffer写入dbf文件.

1.3 负责将脏buffer写入dbf文件的是后台的DBWR进程
       而DBWR进程就会隔一段时间触发一次(例如3秒1次), 将LRUW的冷端若干个脏buffer写入dbf文件, 当然也会有其他原因会额外触发DBWR进程, 例如数据库十分繁忙, database buffer cache里脏buffer太多,  要清理一部分脏buffer才能将新的block写入database buffer cache.

1.4 将脏buffer写入dbf文件动作交由后台进程的原因.
       原因都很简单了, 因为Server process的快慢直接影响用户的使用感受,  而将脏buffer写入dbf文件的动作是1个很耗时间的物理写动作, 所以会延时分批地交由后台进程DBWR处理.   而通常物理读无法避免, 很多时候用户必须等待物理读才能得到数据,所以物理读是Server process负责的.

大概流程如下图啦:

所以DBWR是Oracle保证database buffer cache中的脏块能及时 合理地写入数据文件的一个后台进程.

1.5 查看服务器的DBWR进程:

如上图那个就是dbwr进程了, 不过既然他的名字是dbw0, 也就是它可以是dbw1.. dbw2, 也就是可以存在多个dbwr进程了.

查看数据库dbwr进程个数:

可以用下面命令来设置dbwr的个数:
alter system set db_writer_processes = 2 scope=spfile;

然后重启啦

不过, dbwr个数绝不是越多越好, 一般是cpu的核心个数除以8.  也就是服务器如果有2个8核cpu的话可以考虑将dbwr个数设置为2,因为dbwr是1个十分耗cpu资源的进程啦.

2. 设置database buffer cache大小

     这个, 跟shared pool的设置很类似, 也就是有两种设置方法
     1. 设置sga_taget, Oracle会自动分配database buffer cache的大小
     2. 手动设置database buffer cache大小

通常生产中我们会执行第2中,也就是手动的设置

2.1 查看当前buffer cache大小

可以用下面语句来查看当前database buffer cache的当前实际大小:
select component,current_size,min_size from v$sga_dynamic_components;
如图:

可以见到
Default buffer cache就是当前的database buffer cache的大小啦
当然我这个测试数据库不正常啦, 才70m多 而我的sga_target 是628m的.

正常来讲, buffer cache的大小一般占 sga大小的1/2 到2/3
老相老师说一般直接设置在sga 2/3就ok了

2.2 设置当前buffer cache大小
一般来讲先设置sga_max_size大小. 然后设置sga_target 大小,
alter system set sga_max_size = 2G scope = both;
重启数据库
alter system set sga_target = 2G;
alter system set db_buffer_cache = 1.3G scope =both;

也可以参考Oracle db_advice来设置database buffer cache的大小:
执行如下语句:
select size_for_estimate as "Cache Size MB",
       size_factor,
       buffers_for_estimate as Buffers,
       estd_physical_read_factor est_read_fator,
       estd_physical_reads estd_phy_read,
       estd_physical_read_time est_phy_read_t
       from v$db_cache_advice
       where name='DEFAULT'
         and block_size = (select value from v$parameter
                                        where name='db_block_size');

如下图:

其中buffers列是buffer的个数啦,  倒数最后两列分别是物理读次数和物理读时间
可以看到随着buffer cache大小变大, 物理读时间不断减少,

生产中选物理读时间最小那个临界值对应的buffer cache一般就ok了.
我这个渣测试数据库没什么参考意义啦~

Oracle Database_buffer_cache大小的设置及依据相关推荐

  1. oracle sga设置 256G,Oracle SGA大小的解决方法的调整

    以下的文章主要介绍的是调整Oracle SGA大小的解决方法,如果你是调整Oracle SGA大小的解决方法方面的新手,你就可以通过以下的文章对调整Oracle SGA大小的解决方法如何正确使用的详细 ...

  2. Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条

    Seaborn使用set_context函数调整绘图标签和线条的大小.设置不同的模式.例如notebook模式.PPT模式.海报模式等.set_context函数可以指定绘图上下文并自动调整标签和线条 ...

  3. R语言ggplot2可视化设置数据点的大小、设置数据点的颜色、设置数据点边缘线条的厚度(point border thickness)实战

    R语言ggplot2可视化设置数据点的大小.设置数据点的颜色.设置数据点边缘线条的厚度(point border thickness)实战 目录

  4. 字体大小的设置_老年人用智能手机,怎样更改字体大小?3种方法,手把手教您学会...

    分享生活小妙招,共享科技新生活!大家好,欢迎来到今天的知识分享!我是你们的好朋友小俊! 我们的老年朋友在使用手机时候都会觉得字体太小,导致使用起来非常不方便,那么今天我就教大家三种方法来设置字体大小, ...

  5. 字体大小的设置_ios 设置的字体大小与实际的字体大小不一致

    问题缘由:做文章详情页的时候,文字多了一点字体就放大了,真的是奇了怪了. 如果你觉得本文对您有用,可以关注我的个人微信公众号 @前端爱好者社区 会为你带来更多的内容. 问题重现 一段文字的时候 两段文 ...

  6. python配置核_浅谈pytorch卷积核大小的设置对全连接神经元的影响

    3*3卷积核与2*5卷积核对神经元大小的设置 #这里kerner_size = 2*5 class CONV_NET(torch.nn.Module): #CONV_NET类继承nn.Module类 ...

  7. 【问题】HDFS中块(block)的大小为什么设置为128M?

    一.为什么HDFS中块(block)不能设置太大,也不能设置太小? 如果块设置过大, 一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢: 另一方面,mapreduc ...

  8. Foxmail邮件字体大小怎么设置 Foxmail字体的设置方法

    Foxmail写邮件的时候,想要设置邮件的字体,和字体大小,该怎么设置呢?下面我们就来看看详细的教程. Foxmail邮件字体大小怎么设置? Foxmail字体的设置方法 1.下载并安装Foxmail ...

  9. Eclipse编辑器字体大小的设置

    我们在第一次使用 Eclipse 编写程序时,由于 Eclipse 默认使用的是 Cosnolas 字体,字号为 10,所以编辑器中的字体非常小,不方便查看. 我们可以通过下面所示的方法来修改编辑器的 ...

最新文章

  1. Gut: 妊娠期糖尿病与孕妇及其新生儿微生物菌群失调有关(赵方庆作品)
  2. 基于深度学习的目标检测的研究进展2
  3. 第四周项目二-太乐了
  4. 掩码计算工具netmask
  5. org.springframework.beans包
  6. 软件工程师怎样减轻工作过程中遇到的压力
  7. 图像的灰度级数越多越好_MATLAB-数字图像处理 图像直方图归一化
  8. 工作194:vue.runtime.esm.js?2b0e:619 [Vue warn]: Duplicate keys detected: ‘/system‘. This may cause an
  9. python中的pip是什么_python中的pip
  10. Activity之间传递参数
  11. 异常检测: 多元高斯分布
  12. iRecognizer号码扫描开发实录
  13. Android 使用POI导出Excel表格
  14. stm32电容触摸按键实验
  15. vue admin html,vue-admin-template笔记(六)
  16. linux quota原理,[转载]linux下quota实现
  17. 计算机操作系统存在的意义,电脑操作系统的作用
  18. 4.8 期货每日早盘操作建议
  19. 使用Python编程出高级计算器,支持加减乘除、复合运算、三角函数、平方根、二进制转换、幂运算等高阶运算
  20. 使用高德地图 地址一经纬度 之间相互转化的实例代码 python

热门文章

  1. 自动化测试之鼠标悬浮操作、双击、鼠标拖拽
  2. mk_trustonic.mk编译脚本
  3. 密码学-hash加密
  4. 在屏幕上输出你好的python语句是_编程实现:在屏幕上输出中文字符“你好,世界”。(输出结果中不带双引号)_学小易找答案...
  5. androidstuido_schooltest_1
  6. 【逆向分析】快速查找指定代码的几种方法
  7. 攻击者怎样使用HTML和CSS隐藏“外部发件人”电子邮件警告
  8. 无线网络渗透测试-使用Aircrack-ng工具破解无线网络
  9. kali下fcrackzip使用
  10. 【Cockpit】 如何组织管理多台服务器?