用strace跟踪分析oracle 10.2.0.1 rac lmd进程系列二

结论:

1,strace -p跟踪lmd进程,是和fd为9及17的2个socket进行通讯
2,这2个socket为
    9为socket:[1361566],而17为socket:[1361581]
3,strace的应用关键在于有针性性理解操作系统的函数,比如times,getrusage,poll的含义是什么,你就明白了lmd进程到底在作什么
4, find .|xargs grep -ri "2015-11-10 17:30:32.608" -l获取当前目录是哪个文件字符串2015-11-10 17:30:32.608,仅打印文件名称出来
   或者通过strace输出的write函数的write函数也可定位到是写入到lmd trc file

测试

1,获取lmd进程
[oracle@jingfa1 ~]$ ps -ef|grep lmd
oracle    4774     1  0 Nov09 ?        00:01:19 asm_lmd0_+ASM1
oracle   15271     1  0 07:40 ?        00:00:42 ora_lmd0_jingfa1
oracle   17639 17535  0 17:06 pts/3    00:00:00 grep lmd




2,用strace跟踪lmd进程
[oracle@jingfa1 ~]$ strace -p 15271
Process 15271 attached - interrupt to quit
times({tms_utime=3783, tms_stime=445, tms_cutime=0, tms_cstime=0}) = 436476294
getrusage(RUSAGE_SELF, {ru_utime={37, 830248}, ru_stime={4, 459322}, ...}) = 0
getrusage(RUSAGE_SELF, {ru_utime={37, 830248}, ru_stime={4, 459322}, ...}) = 0
getrusage(RUSAGE_SELF, {ru_utime={37, 830248}, ru_stime={4, 459322}, ...}) = 0
getrusage(RUSAGE_SELF, {ru_utime={37, 830248}, ru_stime={4, 459322}, ...}) = 0
times({tms_utime=3783, tms_stime=445, tms_cutime=0, tms_cstime=0}) = 436476294
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=17, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 2, 80) = 0 (Timeout) --fd为9及17,会一直相同的循环使用poll函数
times({tms_utime=3783, tms_stime=445, tms_cutime=0, tms_cstime=0}) = 436476302
getrusage(RUSAGE_SELF, {ru_utime={37, 830248}, ru_stime={4, 459322}, ...}) = 0
getrusage(RUSAGE_SELF, {ru_utime={37, 830248}, ru_stime={4, 459322}, ...}) = 0
times({tms_utime=3783, tms_stime=445, tms_cutime=0, tms_cstime=0}) = 436476302
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=17, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 2, 80) = 0 (Timeout)


3,到对应目录查查上述的fd到底是什么?
可见9为socket:[1361566],而17为socket:[1361581]
[root@jingfa1 fd]# pwd
/proc/15271/fd
[root@jingfa1 fd]# ll
total 0
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 0 -> /dev/null
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 1 -> /dev/null
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 10 -> /u01/app/oracle/product/10.2.0/db_1/dbs/lkinstjingfa1 (deleted)
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 11 -> /dev/zero
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 12 -> /u01/app/oracle/admin/jingfa/adump/ora_15228.aud
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 13 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 14 -> /dev/zero
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 15 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_jingfa1.dat
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 16 -> socket:[1361569]
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 17 -> socket:[1361581]
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 18 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
l-wx------ 1 oracle oinstall 64 Nov 10 17:00 2 -> /u01/app/oracle/admin/jingfa/bdump/jingfa1_lmd0_15271.trc
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 3 -> /dev/null
lr-x------ 1 oracle oinstall 64 Nov 10 17:00 4 -> /dev/null
l-wx------ 1 oracle oinstall 64 Nov 10 17:00 5 -> /u01/app/oracle/admin/jingfa/udump/jingfa1_ora_15228.trc
l-wx------ 1 oracle oinstall 64 Nov 10 17:00 6 -> /u01/app/oracle/admin/jingfa/bdump/alert_jingfa1.log
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 7 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_jingfa1.dat
l-wx------ 1 oracle oinstall 64 Nov 10 17:00 8 -> /u01/app/oracle/admin/jingfa/bdump/alert_jingfa1.log
lrwx------ 1 oracle oinstall 64 Nov 10 17:00 9 -> socket:[1361566]
[root@jingfa1 fd]# 




可见如果lmd进程暂停,内部机制如下,提示资源暂不可用
SQL> oradebug setospid 15271
Oracle pid: 6, Unix process pid: 15271, image: oracle@jingfa1 (LMD0)
SQL> oradebug suspend
Statement processed.


semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)
semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)
semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)
semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)
semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)
semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)
semtimedop(1277953, 0x7fff7d684890, 1, {1, 0}) = -1 EAGAIN (Resource temporarily unavailable)


如果恢复LMD,资源又恢复正常,又开始了各种操作系统函数的调用运行
SQL> oradebug resume
Statement processed.


getrusage(RUSAGE_SELF, {ru_utime={38, 665122}, ru_stime={4, 631295}, ...}) = 0
times({tms_utime=3866, tms_stime=463, tms_cutime=0, tms_cstime=0}) = 436558478
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=17, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 2, 80) = 0 (Timeout)
times({tms_utime=3866, tms_stime=463, tms_cutime=0, tms_cstime=0}) = 436558486
getrusage(RUSAGE_SELF, {ru_utime={38, 665122}, ru_stime={4, 631295}, ...}) = 0
getrusage(RUSAGE_SELF, {ru_utime={38, 665122}, ru_stime={4, 631295}, ...}) = 0
times({tms_utime=3866, tms_stime=463, tms_cutime=0, tms_cstime=0}) = 436558486
poll([{fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=17, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 2, 80) = 0 (Timeout)
times({tms_utime=3866, tms_stime=463, tms_cutime=0, tms_cstime=0}) = 436558494
getrusage(RUSAGE_SELF, {ru_utime={38, 665122}, ru_stime={4, 631295}, ...}) = 0
getrusage(RUSAGE_SELF, {ru_utime={38, 665122}, ru_stime={4, 632295}, ...}) = 0


而且lmd进程状态变化时,会向其trace file写入信息


write(2, "*** 2015-11-10 17:30:32.608", 27) = 27  ---write函数含义:write(fb,buf,size)
write(2, "\n", 1)                       = 1
write(2, "SKGXPIWAIT: keepalive_reset elap"..., 86) = 86
write(2, "\n", 1)                       = 1


[root@jingfa1 fd]# locate "2015-11-10 17:30:32.608"
[oracle@jingfa1 bdump]$ pwd
/u01/app/oracle/admin/jingfa/bdump


[oracle@jingfa1 bdump]$ find .|xargs grep -ri "2015-11-10 17:30:32.608" -l
./jingfa1_lmd0_15271.trc
./jingfa1_lmd0_15271.trc






[oracle@jingfa1 bdump]$ more *|grep "2015-11-10 17:30:32.608"
*** 2015-11-10 17:30:32.608


或者通过write函数的write函数也可定位到是写入到lmd trc file
[oracle@jingfa1 fd]$ pwd
/proc/15271/fd
[oracle@jingfa1 fd]$ ll -l 2
l-wx------ 1 oracle oinstall 64 Nov 10 17:00 2 -> /u01/app/oracle/admin/jingfa/bdump/jingfa1_lmd0_15271.trc
[oracle@jingfa1 fd]$ 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值