oracle里面工具-会话,Oracle进程体系(一)

返回应用程序处理的结果

后台进程

为了得到最佳性能和更好的适应用户,Oacle系统引入了后台进程。

一个Oracle实例有很多后台进程,但是并不是包含所有后台进程。后台进程有很多类型。可以通过查询V$BGPROCESS视图来获得后台进程的信息。Oracle实例包含的后台集成有以下一些:

Dababase Writer process(DBWn)

Log Writer Process(LGWR)

Checkpoint Process(CKPT)

System Monitor Process(SMON)

Process Monitor Process(PMON)

Recovery Process(RECO)

Job Queue Process

Archiver Process(ARCn)

Queue Monitor Process(QMNn)

Other Background Process

在大多数系统中,后台进程在Oracle启动时被自动的创建。

下图展示了后台进程与Oracle数据库不同部分的相互作用。

0818b9ca8b590ca3270a3433284dd417.png

Database Writer Process(DBWn)

Database Writer Process(DBWn)把数据缓冲区中的内容写到数据文件。DBWn进程负责把数据库库数据缓冲区中的脏数据块写到磁盘。尽管一个数据库写进程(DBW0)对于大多数进程来说已经足够了,但是在数据修改频繁的情况你可以配置额外的进程(从DBW1到DBW9)来提高写的效率。这种额外的DBWn进程不适合单处理器的系统。

当数据库buffer cache中的的一个buffer被修改时,它被设置成dirty。冷块是根据LRU算法得出的最近不经常使用的块,DBWn进程把冷的,脏的数据块写到磁盘因此用户进程能找到冷的,干净的数据块用来将数据块读到缓存里面。Buffer被用户进程变脏,free buffer的数据在相对的减少。如果free buffer的数量太少的话,当用户需要把数据块读到缓存中时就会找不到free buffer。DBWn管理者buffer cache因此用户进程不会找不到buffer cache。

通过写冷的,脏的缓存到磁盘,将最近经常使用的缓存在内存中,DBWn改进了查找free buffer的效率。例如,频繁被访问的小表或索引的数据块被放在缓存中在下次使用是不需要再次读到缓存中。LRU算法将经常被访问的数据块保存在缓存里,因此当一个buffer写到磁盘后,这个buffer不会包含马上要使用的数据。

初始化参数 DB_WRITER_PROCESSES指定了DBWn进程的数量。DBWn最大的数量是20,如果在实例启动时没有指定这个参数,Oracle根据CPU的个数和处理的组数来决定DB_WRITER_PROCESSES的值。

在下列情况下DBWn进程会将脏数据写到磁盘里:

当服务器进程在扫描了buffers的阀值后没有找到干净可用的buffer,服务器进程会发送DBWn进程写。DBWn写脏数据到磁盘与执行其他进程是异步的。

DBW2阶段行的写buffer从而移动缓存中checkpoint的位置,checkpiont的位置是redo日志文件做实例恢复时开始的地方。这个日志文件的位置有数据库buffer cache中最旧的脏数据库决定。

在多数情况下,DBWn做批量的写来提高效率。每次写入数据块的多少由操作系统决定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值