ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 今天培训总结(一)

今天培训总结(一)

原创 Linux操作系统 作者:anycall2010 时间:2009-03-11 15:04:10 0 删除 编辑

我们前面已经学了三个重要的必选后台进程
LGWR
CKPT
DBWR
他们之间都是密切关联和执行顺序

我们接下来学习另外两个必选后台进程

SMON和PMON

我们首先来学SMON

SMON用来维护和监控整个数据库的安全和完整性。

它的主要职责有如下:
o 实例恢复
o 每3秒整理区碎片
o 清理临时段
我们接着详细讲这3部分

我们可以用静安书店来比喻这个实例,那SMON就相当于公司的行政部长
处理这个公司的日常运做

比如停电,公司处理大的活动

还有象一些场地的分配等

那我们的SMON第1个重要任务就是处理实例的异常DOWN机(类似停电)

我们知道,ORACLE为了实现高效,会把最近的数据和日志记录在内存,定期回去刷新,这就是前面的LGWR,DBWR的进程干的活

所以DOWN机也就意味着你的磁盘数据不是最新的或者最后的数据
那最新最后的数据在哪里?

在DB BUFFER
还有及少部分在REDO BUFFER

那还有一个地方有
LOGFILE

o db buffer
o logfile
o redo buffer --这个部分肯定没提交,否则写到logfile

所以停电了会有什么结果
db buffer
redo buffer没了
因为电没了,内存就没了

那新的数据要不丢失,只能从logfile里拿,而redo buffer丢了也不要紧,反正没提交,它的脏块也不需要写到磁盘

我们用图来了解这个过程

 
o SMON在实例启动时完成实例恢复
  应用没有写到磁盘的改动向量
  并回滚没有提交事务的改动向量

停电后SMON等于要做两个动作

我们看增量检查点将写最早的3秒钟的重做向量(图上绿色部分)

前滚 --前滚那些没有写到磁盘的改动向量(白色箭头部分)

这些脏缓存被停电丢了

最后的重做向量是T4,这时箭头以下的部分还没被应用,这时候停电


停电时数据文件是在黑色箭头的状态,日志文件在最后t4的状态

没看到图

前滚后数据文件是在最后t4的状态,日志文件也在最后t4的状态

红色上箭头是回滚的顺序
红色横箭头是回滚的改动向量

我们看到要回滚7条改动向量
这些动作都会在实例启动的时候由SMON触发去检查,来实现实例恢复

好,这是SMON在危机的时刻重要的一个任务

第2.
在字典管理表空间中整理FREE的邻接空间


我们先了解区碎片是怎么清理的,然后了解下什么情况下会去清理


由于字典管理,各个表或者表内分配了不同大小的区,而DELETE,UPDATE后区内容会被删除,变成FREE区
而这些区大小不一样,看我们图里的每一个就是一个区(EXTENT)


那把这些小FREE区合并到一个大区就会更有可能服务于别的空间请求

我们看到右边箭头黄色区域,第2行4个空闲区被合并成一个区,第4行2个空闲区被合并成1个区

那其它黄色空闲区为什么不能一起合并

  ' 
因为他们物理上不是一个连续的区,所以不能合并

好,这就是区整理的概念
那我们来了解下,有哪些情况在字典管理模式下触发区合并

oo 进程申请分配新的空间的时候

当申请分配空间时,没有合适的FREE区满足它申请的大小,则会触发区的合并,来满足这次请求

再看第2种情况
oo PCTINCREASE (SMON)完成
这个就是我们讲的SMON的任务,只有PCTINCREASE>0时,意味着区的大小是线性增长的,每个区都不一样大

为了避免将来空间分配出现困难,SMON每3秒种清理合并区
大家想一下SMON是不是很累
所以我们不建议这样做
第3种情况

oo ALTER TABLESPACE COALESCE

人工触发清理

好,以上我们讲的区合并都是基于字典管理

但是现在几乎用的都是本地管理,所以大家要关心的是下面的知识

在本地管理表空间中不需要特意去整理FREE的邻接空间

因为本地管理的区信息是用位图状态并保存在块级别维护
由位图来实现碎片的维护

ORACLE自动跟踪邻接空间,来减少了整理的操作
好,这是SMON的第二大功能
第3.临时段的清理
SMON的另一个功能是临时段的清理,比如全局临时表
如果不再使用,SMON负责清理工作
好,我们SMON讲到这里
我们接着讲PMON
进程监控
PMON是进程监控程序,用户监控和维护进程的安全和一致性

顾名思义,PMON管理的是进程

ORACLE的所有的进程它来参与维护和监控
它的主要职责是:
对用户进程处理失败后,执行进程清理恢复的操作
看不到图片的同学,可以参考教材《ORACLE基础篇-I-1.pdf》48页

负责每个人的生活起居,碰到的困难,它来帮你解决

那它碰到了进程异常,将处理哪些事情呢

我新来的那个资料可以发一份给我马·


共享里

o 释放该进程的buffer cache资源
o 进程相关的锁资源

o 其他资源,比如进程号等信息,v$process可以看到的一些信息

o 检查调度器和服务器进程,来实现调度器分配请求队列和响应队列

第2.pmon还有一个任务,它可以实现服务注册(在基础II网络部分讲)

它可以把实例提供的服务的当前负载信息告诉listener,在RAC的系统以便让listener选择一个负载低的服务来为客人服务

比如上海图书馆(提供ORACLE服务)
静安图书分店(有40人排队买书) -->告诉书店调度中心(LISTENER)有40个连接
黄浦图书分店(有20人排队买书) -->告诉书店调度中心(LISTENER)有20个连接

小丽 提出要买'CBO 基础'最新版的书,书店调度中心(LISTENER)接收到小丽的请求

判断有两个图书分店提供服务,但是黄浦图书分店只有20个连接,你去的话排队时间会更短

-->告诉书店调度中心(LISTENER)有40个连接
谁告诉书店调度中心(LISTENER)?

就是PMON

这是动态服务注册的概念 --基础II会详细讲这个过程

时间有点紧了
前面讲的后台进程是ORACLE必须有的后台进程.也就是你要开静安图书分店
你必须要有的管理人员,否则这店要关门(DOWN)

所以你杀了这5个进程,实例就会DOWN机
对于不同的组件和版本,还会有很多可选的后台进程,我们会在以后的课里慢慢接触

我们在这本书里再介绍一个最常见的可选后台进程,ARCH

归档进程之所以可选,是以为你实例可归档,也可以不归档

这要看你安全性的级别设置的如何

1.你就设置正确的listener协议/地址/端口
2.tnsnames里指向这个listener协议/地址/端口
   取一个别名orcl
3.然后alter system set local_listener=orcl;
alter system register;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8334342/viewspace-566820/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-24

  • 博文量
    182
  • 访问量
    563137