关于数据库与实例的一张图

来源:互联网 发布:js map 存取 编辑:程序博客网 时间:2024/05/19 03:42

    在上OCP课程的时候讲到块结构的时候,老师建议通读Oracle文档中的Concept一节,所以就抽时间看了一下,看到了如下的这张图。

    关于SGA和PGA还略知一二,可是PMON,SMON等有关进程的内容几乎是一片空白。于是查阅资料,进行了一番学习。

    首先,进程包括:客户端进程,Oracle数据库进程,和奴隶进程。其中Oracle数据库进程又包括后台进程了服务器进程。

客户端进程:运行应用或者Oracle工具代码。

后台进程:后台进程和数据库实例一同启动,并且执行维护任务,如实例恢复,清理进程,从redo缓存写到磁盘等等。

服务器进程:根据客户端请求执行工作。例如,如下进程解析SQL查询,把它们放进共享池中,创建并执行一个查询计划为每一个查询,并且读从数据库高速缓冲区或磁盘中读缓存。

奴隶进程:为后台或服务器进程执行额外的任务。、

 

    上述所说的PMON等都属于强制性的后台进程。

    PMON:进程监视器。进程监视器进程用于监视后台进程,并且当服务器或调度进程异常终止的时候执行恢复。PMON为清理数据库高速缓存和释放客户端进程使用的资源负责。例如PMON进程重置ACTIVE的事务表的状态,释放不需要的锁,从active进程列表中移除进程ID。PMON同样用于注册关于实例的信息,并且随着监听器调度进程。当一个实例启动的时候,PMON调查监听器来决定是否运行。如果监听器运行,那么PMON允许相关参数通过;如果监听器没有运行,那么PMON定期的尝试连接它。

    SMON:系统监视器。SMON进程主管系统级的清理工作。SMON负责的包括:

在实例启动时,如果需要,则执行实例恢复。在RAC中一个数据库实例的SMON进程能够为一个失败的进程执行实例恢复。

恢复在恢复实例时因为file-read和表空间掉线错误而终止的事务。

清理没有使用的临时段空间。例如Oracle数据库在创建索引时分配区,如果创建失败,则由SMON进程回收这个临时空间。PS:11g中创建表的时候,默认不会分配空间。

为字典管理的表空间合并连续的空闲区。

PS:记得有个面试题是当你使用shutdown immediate关闭数据库的时候,关闭不了数据库,你该怎么办?

答案是kill the SMON process;

 

    RECO:回收器。在分布式数据库中,回收器进程能够自动的解决失败的分布式事务。当涉及到其他数据库分布式事务中的疑问时,RECO中的一个节点会自动的连接到数据库。

    MMON和MMNL:管理监控器。MMON执行很多和AWR相关的任务。例如MMON记录当度量违反其阀值的时候(如表空间的使用达到warning值的时候),拍快照并且为最近的修改的SQL对象捕获统计数据。

MMNL写统计信息从ASH缓存到磁盘上,当ASH满的时候会直接写到磁盘上。

 

 

原创粉丝点击