设为首页 收藏本站
查看: 739|回复: 0

[经验分享] oracle体系结构三部曲之进程结构

[复制链接]

尚未签到

发表于 2016-8-6 13:48:27 | 显示全部楼层 |阅读模式
  与oracle相关的进程可分:用户进程和oracle进程。oracle进程可分:服务器进程和后台进程。服务器进程可分:专用服务器进程和共享服务器进程。后台进程可分:DBWn,LGWR,CKPT等。
  和用户进程有关的概念是:连接和会话
连接和会话是两个不同的概念。一条连接上可以建立0个,1个或多个会话,而且各个会话单独且独立的。一条连接即一个进程。
比如:
SQL> set autotrace on
SQL> select sid from v$session where username=USER;
  SID
----------
146
158
159
以上这条连接上有三个会话。
连接:用户进程到实例之间的一条物理路径。
会话:实例中存在的一个逻辑实体。
所以,物理上是条连接,逻辑上是个会话。
这里有两个名字起得不好的命令:
connect:应该是叫创建会话
disconnect:结束所有会话。
用sql*plus,真正要断开连接的命令是:exit
  服务器进程就是代表客户会话完成工作的进程。它们是干重活的苦命娃,几乎所有的工作都是由它们来做的,因此占用系统cpu的时间最多。
1)对sql进行解析和执行
2)如果所需的数据不在sga中,则server process会去磁盘上将其读到sga的database_buffer_cache中。
3)把结果返回给应用程序
  单个会话查询服务器进程和用户进程的pid:
SQL> select a.spid "专用服务器进程",b.process "客户进程"
from v$process a,v$session b
where a.addr=b.paddr
and b.sid=(select sid from v$mystat where rownum=1) 2 3 4
5 /
  专用服务器进 客户进程
------------ ------------
8313 8304
  SQL> !ps -p 8313 8304
PID TTY STAT TIME COMMAND
8304 pts/2 S+ 0:00 sqlplus
8313 ? Ss 0:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL
  后台进程都来自同一个二进制可执行程序oracle(/u01/app/oracle/product/10.2.0/db_1/bin/),可以从v$bgprocess查询.
PMON
1)清理异常连接,如,回滚未提交的事务,释放资源等
2)监视所有oracle进程,如果进程失败,可能重启进程,也可能终止实例(LGWR失败)
3)向监听器注册这个实例并与之通信。
[回滚未提交的事务:oracle server根据server process做动作,server process根据user process做动作。如果user process中断,server process会出现盲等待。这时,PMON就会检查有无server process所对应的user process出现中断,如果有,就回滚那笔事务]
  SMON
1)实例恢复:将online redo log file中保护的数据写回到数据文件
2)收集空间:合并空闲空间
  CKPT
检查点进程并不像它的名字所暗示的那样真的建立检查点,建立检查点主要是DBWn的任务。CKPT只是发出要求将database_buffer_cache中的脏块写到数据文件,而响应这个号召的人是DBWn。当DBWn完成了它所建立的检查点后(这里的检查点是指DBWn去检查某些redo entry是否写入了online redo log file中,然后再去redo log file保护的数据写入数据文件,这整个过程叫检查点事件),CKPT就会在控制文件和数据文件的文件头中做记录。这两人的关系好比,诸葛亮和关羽,CKPT是诸葛亮,DBWn是关羽,诸葛亮要求攻打祁连山,他发出了这条军令,那么关羽就会带兵去攻打,等占领了祁连山后,再由诸葛亮做后续的一些工作。
  DBWn
DBWn行为是为了释放缓冲区,或者对日志过账。负责保持oracle内存数据与磁盘数据的一致性。
为了提高DBWn的写性能,建议使用支持异步I/O的平台。采用异步I/O,DBWn会收集要写的块,交给os,但他不会等待os将块写到磁盘,而是立马返回,去收集下一批要写的块,当os完成写操作时,他会异步的通知DBWn。另外,DBWn是分散写,LGWR是顺序写,分散写比顺序写慢多了。这也是oracle使用LGWR和重做日志文件的主要原因。dbwn的数量和cpu的数量通常是一样的.
  LGWR
oracle有个快速提交机制,即:当用户提交时,redo entry被server process放入redo log buffer,LGWR很快会把这些日志条目从日志缓冲区写到在线重做日志文件中。但是,被修改的数据并没有立即写入磁盘上的数据文件,而是被延迟了。
当事务提交时,会被赋予一个SCN,它随着redo entry一起被写入到联机重做日志文件里。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253720-1-1.html 上篇帖子: Oracle存储过程做大数据量插入 下篇帖子: oracle的正则表达式(regular expression)详细介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表