后台进程
后台进程分为2类, 有专一任务的, 以及能够执行多种任务的.
在UNIX环境下面, 我们通过PS命令就可以很容易看到后台运行的ORACLE进程, 但是在Windows下面却每这么简单, 因为Window下面它们是以线程的方式出现的, 分布在一大块内存里面, 属于唯一的一个进程Oracle.exe.
PMON, 进程监控器
这个进程主要负责连接断开后的清理工作. 例如, 某个专注服务进程失败, PMON会负责释放资源, 回滚transaction, 释放锁, 释放SGA资源等. 除了清理工作, PMON还负责监控其它后台进程, 并且在必要的时候重启它们. 例如如果一个共享服务器或者分发器失败, PMON就会介入, 清理失败进程后将它们重启. PMON会监控这其它进程, 并且在合适的时候重启或者结束掉它们. 例如, 当写日志的进程失败, PMON就会重启Instance, 因为这是非常严重的错误.
PMON的另外一个任务就是向NET8 Listener注册Instance, ini.ora文件中的LOCAL_LISTENER参数可以控制该Instance的在哪个端口监听.
SMON, 系统监控器
SMON做的事情是其他人都不愿意做的, 它被成为Oracle的”捡垃圾的人”.
它的工作主要有:
1. 临时空间清理, 随着真正的临时表空间的使用, 这种工作在减少, 但并没有消失. 例如, 建index的时候, 那些被分配的索引extent会被标记为Temporary, 一旦出错, 这些extent就需要被清理. SMON还负责清理一些其它进程产生临时extent.
2. 崩溃的恢复
3. 自由空间的连接
如果你使用的是字典管理表空间, SMON就需要负责将table space中未使用的extents连接起来, 形成一个大的区域. 这仅仅在字典管理表空间并且存储参数PCTINCREASE设为了非零值.
4. 对于文件不可得的transaction活动恢复
在数据库down掉进行恢复的时候, 可能由于文件不可得而跳过, SMON就负责这种恢复工作
5. OPS失败节点的恢复
当OPS中某一个节点down掉, 其它节点会使用down掉节点的重做日志, 进行数据恢复工作
6. OBJ$的清理
OBJ$是一个底层的数据字典表, 这个表中可能会包含很多无用的object信息, SMON就负责清理掉它们
7. 回滚段的收缩
8. 脱机回滚段管理
DBA有时候会手动使一些回滚段脱机, 但是这些回滚段可能存在活动的事务, 这个时候, 这些回滚不会真正脱机, 而只是标记为Pending Offline, SMON需要尝试将它们真正脱机.
SMON周期性的启动或者被其它进程激活来做家务.
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/767125/viewspace-997649/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/767125/viewspace-997649/