oracle五大进程详解

oracle五大进程详解
标签: 暂无标签
kengicsoft

写了 3 篇文章,拥有财富 77,被 2 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2017-9-13 09:58:12
谢谢楼主 ,收下了
回复

使用道具

P4 | 发表于 2017-1-9 18:12:32
学习一下wechat:lang_wechat_threadmessage
回复

使用道具

P4 | 发表于 2015-9-18 10:23:46
谢谢楼主 ,收下了
回复

使用道具

P4 | 发表于 2015-7-19 17:37:19
oracle必须的五大进程:
1、server process 服务器进程
【以客户端执行一条sql为例说明】:
          1、sql语句通过网络到达实例、server process 接收sql语句
          2、server process 去shard pool找sql和执行计划 若没有则硬解析解析sql
          3、server process  根据执行计划去buffer cache(缓存dbf的数据)找相关的数据(逻辑读),
             如没有找到则到dbf文件中取出数据(物理读)放到buffer chache 再返给用户。
          4、若需要修改数据,server process 读出数据到buffer cache中,在内存中修改数据,修改完返给用户。
          server process始终为用户服务,故:server process处理的快慢直接影响用户体验的快慢。

          PGA就是为了server process服务
                PGA会为每一个新产生的server process分配一块内存,这块内存就是这个server process的工作空间
       
          server process什么时候会大量的使用到pga分配的内存空间?
                1)排序
                        sort order by
                        group by
                        union
                2)hash join
       
          server process进行排序或者hash的时候,如果所需要的pga内存不足
                server process就会把一部分数据写入到temp表空间,产生物理io
                性能会很差(大部分结果是性能非常差)
          查看进程
          select * from v$process;
          查看临时文件使用情况,以确认PGA是否出现过问题
          select * from v$tempstat;(可查看临时表物理IO情况)
          select * from v$tempfile;
          select * from v$sql_workarea_active;
          根据sql_id查看SQL语句
          select t.SQL_FULLTEXT from v$sql t where sql_id='23p6x4thkyfsz'
2、PMON  Servr process进程监视器
            1.清理与实例非法断开的server procese残留的资源,非正常终止的用户进程产生的垃圾资源
            2.负责重启以外死掉的调度器(网络监听中使用的)
            3.将实例的信息注册到监听程序

3、SMON 系统监视进程
             空间管理:  定期合并空间(老版本才有) 定期回收临时段
             实例恢复:  (如掉电导致实例意外终止)
                      恢复的方法: 先前滚==>后回滚==>释放资源
             前滚       将数据库中的SQL(包括提交的和未提交的)全部重新做一遍
             回滚       将没提交的SQL句从数据库中将老的镜像取出覆盖
             释放资源      将前滚和回滚中使用到的资源释放

             IO带宽是否被占满

4、LGWR 只有一个进程,不会向数据写进程那么多,因为写要求有顺序 将redo log buffer里的条目写到redo文件
            LGWR触发写的条件
           1.commit
           2.redo log buffer 1/3满
           3.redo log buffer 日志缓冲区达到1M
           4.写日志优先(任何一次数据写之前)
           当更新数据量很多时 日志量很少(就是一update) 数据量却很多 所以采用写日志优先
           5.3秒写一次
   查看redo Log buffer大小的语句
   show parameter log_buffer
  数据文件重要性
   1、日志的重要性高于一切
      特别是redo log
      redo log 一定要实现复用
    select * from v$log;

DBWn n指的是0-9 a-j 多个写进程的区分 将脏块写盘
             触发写的条件
                  1.产生检查点
                  2.脏数据缓冲区达到阀值 默认10%
                  3.扫描整个db buffer没有空闲  db buffer中包含脏的和未脏的 优先写脏数据列表 再写未改的
                  4.timeout超时 如果DBWR没事做 会被每三秒唤醒一次去巡检 写不写不一定
                  5.集群环境的ping请求触发多实例的数据写请求
                  6.表级别的truncate或drop也会触发数据写
                  7.修改表空间的read only
                  8.做表空间的offline(离线)
                  9.热备份 begin backup命令



CKPT 把新的检查点写入指定位置
           1.调度数据写dbwN
           2.将新检查点写数据文件头
           3.将新检查点写控制文件中的数据文件头的记录


lix kengic


回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈