oracle 11g pmon工作内容系列一

背景

   熟悉PMON的含义及工作内容。

结论

1,pmon可以用10246 event进行跟踪PMON工作过程
2,pmon工作内容如下:
后经查询官方手册发现,PMON的工作内容如下:
    1,监控后台进程运行状况
    2,如果某些进程异常中断,PMON去释放会话资源以及占用的锁LOCK
    3,更新事务表的标志以及清除事务XID的标记
    4,清除异常中断会话在BUFFER CACHE占用的缓存
    5,PMON也负责定期把数据库实例注册到监听器中


3,10246 EVENT产生的TRACE FILE分析摘录
--PMON接到通知
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksl2.h LINE:2160 ID:kslges, process=6c, post_num=5


*** 2015-11-01 21:49:30.646
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksl2.h LINE:2160 ID:kslges, process=39, post_num=6
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12751 ID:ksupsc, process=b8, post_num=7


*** 2015-11-01 22:03:02.812
deleting session 0xdc97f1b0 sid=201 serial=188  --PMON发现上述测试会话被人为KILL


*** 2015-11-01 22:03:03.382
deletion of killed session 0xdc97f1b0 successful


--这里就是ORACLE内核代码负责清理被KILL会话占用的资源
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12737 ID:ksuabt, process=0, post_num=8
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=9
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=10
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=11
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=12
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=13
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=14
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=15
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=16
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=17
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=18
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=19
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=20
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=21
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=22
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=23
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=24
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=25
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=26
PMON ignoring post from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2


*** 2015-11-01 22:03:06.428
marked process 0xdd6589c0 pid=184 serial=2 ospid = 11635 dead  --PMON清理完被KILL后,标记为DEAD


*** 2015-11-01 22:03:06.446
deleting process 0xdd6589c0 pid=184 serial=2 priority=0 --然后删除这个会话对应的操作系统进程资源
deletion of process dd6589c0 pid=184 seq=2 successful



测试



1,数据库版本
SQL> select * from v$version where rownum=1;


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production


2,跟踪pmon


SQL> alter session set tracefile_identifier='pmon_test1';


Session altered.


SQL> alter system set events='10246 trace name context forever,level 1';


System altered.


3,用户测试会话
SQL> select sid from v$mystat where rownum=1;


       SID
----------
       201


 SQL> select sid,serial# from v$session where sid=201;


       SID    SERIAL#
---------- ----------
       201        188
       
SQL> create table t_pmon(a int,b int);


Table created.


SQL> insert into t_pmon select level,level from dual connect by level<=1000000;
insert into t_pmon select level,level from dual connect by level<=1000000
            *
ERROR at line 1:
ORA-00028: your session has been killed
ORA-00028: your session has been killed


--另启会话杀掉正在插入记录的上述测试会话
SQL> alter system kill session '201,188';


System altered.


3,关闭pmon跟踪
SQL> alter system set events='10246 trace name context off';


System altered.




4,查看pmon的TRACE FILE


--PMON接到通知
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksl2.h LINE:2160 ID:kslges, process=6c, post_num=5


*** 2015-11-01 21:49:30.646
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksl2.h LINE:2160 ID:kslges, process=39, post_num=6
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12751 ID:ksupsc, process=b8, post_num=7


*** 2015-11-01 22:03:02.812
deleting session 0xdc97f1b0 sid=201 serial=188  --PMON发现上述测试会话被人为KILL


*** 2015-11-01 22:03:03.382
deletion of killed session 0xdc97f1b0 successful


--这里就是ORACLE内核代码负责清理被KILL会话占用的资源
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12737 ID:ksuabt, process=0, post_num=8
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=9
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=10
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=11
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=12
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=13
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=14
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=15
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=16
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=17
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=18
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=19
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=20
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=21
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=22
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=23
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=24
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=25
PMON posted from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2, post_num=26
PMON ignoring post from location=FILE:/ade/b/1640894963/oracle/rdbms/src/hdir/ksu.h LINE:12763 ID:ksuxfd, process=2


*** 2015-11-01 22:03:06.428
marked process 0xdd6589c0 pid=184 serial=2 ospid = 11635 dead  --PMON清理完被KILL后,标记为DEAD


*** 2015-11-01 22:03:06.446
deleting process 0xdd6589c0 pid=184 serial=2 priority=0 --然后删除这个会话对应的操作系统进程资源
deletion of process dd6589c0 pid=184 seq=2 successful




继续测试,如果我们让PMON阻塞,再手工KILL测试会话会如何呢


SQL> select pid,spid from v$process where pname='PMON';


       PID SPID
---------- ------------------------------------------------
         2 10556


SQL> oradebug setospid 10556
Oracle pid: 2, Unix process pid: 10556, image: oracle@seconary (PMON)
SQL> oradebug suspend
Statement processed.


没看到任何有价值的内容




换个思路,如果阻塞PMON,事务提交会不会正常进行呢
SQL> oradebug setospid 10556
Oracle pid: 2, Unix process pid: 10556, image: oracle@seconary (PMON)
SQL> oradebug suspend
Statement processed.




可见事务提交不受影响
SQL> update t_pmon set a=111 where a=1;


1 row updated.


SQL> commit;


Commit complete.




后经查询官方手册发现,PMON的工作内容如下:
1,监控后台进程运行状况
2,如果某些进程异常中断,PMON去释放会话资源以及占用的锁LOCK
3,更新事务表的标志以及清除事务XID的标记
4,清除异常中断会话在BUFFER CACHE占用的缓存
5,PMON也负责定期把数据库实例注册到监听器中




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

转载于:http://blog.itpub.net/9240380/viewspace-1822772/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值