TNS-12514 & TNS-12505 & service_died(2) - 模拟PMON等待latch free

TNS-12514 & TNS-12505 & service_died
http://space.itpub.net/8242091/viewspace-749738

尝试 SUSPEND PMON,虽然能观察到监听日志中显示service_died,但是监听仍然还注册在上面

那么下一步,打算模拟下PMON卡在某个LATCH上时情况

本打算用gdb跟踪下pmon请求过哪些latch,但是可惜测试环境为64bit的,参数的位置不一样,没测试出来,就只有换一种办法
gdb跟踪进程参考:http://space.itpub.net/8242091/viewspace-676943

在gdb跟踪时,发现pmon会在固定间隔请求一个latch,找到该latch,持有它应该就可以模拟出来

[oracle@zhangqiaoc ~]$ ps -ef|grep pmon
oracle   25040     1  0 19:18 ?        00:00:00 ora_pmon_o9208
oracle   25141 24993  0 19:23 pts/6    00:00:00 grep pmon
[oracle@zhangqiaoc ~]$ gdb -p 25040
GNU gdb Red Hat Linux (6.5-37.el5rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Attaching to process 25040
Reading symbols from /u01/app/oracle/product/9.2/db_1/bin/oracle...(no debugging symbols found)...done.
Using host libthread_db library "/lib64/libthread_db.so.1".
Reading symbols from /u01/app/oracle/product/9.2/db_1/lib/libodm9.so...done.
Loaded symbols for /u01/app/oracle/product/9.2/db_1/lib/libodm9.so
Reading symbols from /u01/app/oracle/product/9.2/db_1/lib/libskgxp9.so...done.
Loaded symbols for /u01/app/oracle/product/9.2/db_1/lib/libskgxp9.so
Reading symbols from /u01/app/oracle/product/9.2/db_1/lib/libskgxn9.so...done.
Loaded symbols for /u01/app/oracle/product/9.2/db_1/lib/libskgxn9.so
Reading symbols from /u01/app/oracle/product/9.2/db_1/lib/libjox9.so...done.
Loaded symbols for /u01/app/oracle/product/9.2/db_1/lib/libjox9.so
Reading symbols from /lib64/libdl.so.2...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libpthread.so.0...done.
[Thread debugging using libthread_db enabled]
[New Thread 47321884053952 (LWP 25040)]
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/libnsl.so.1...done.
Loaded symbols for /lib64/libnsl.so.1
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libnss_files.so.2...done.
Loaded symbols for /lib64/libnss_files.so.2
0x0000003cfdcc8fdf in poll () from /lib64/libc.so.6
(gdb) b kslgetl
Breakpoint 1 at 0x6789c0
(gdb) c
Continuing.
[Switching to Thread 47321884053952 (LWP 25040)]

Breakpoint 1, 0x00000000006789c0 in kslgetl ()

******************************************************
SQL> select * from v$latchholder;

no rows selected
******************************************************

(gdb) n
Single stepping until exit from function kslgetl,
which has no line number information.
0x0000000000ca01e1 in kmmlod ()

******************************************************
SQL> /

       PID        SID LADDR
---------- ---------- ----------------
NAME
----------------------------------------------------------------
         2          1 0000000050022528
session timer
******************************************************

(gdb) c
Continuing.

Breakpoint 1, 0x00000000006789c0 in kslgetl ()

******************************************************
SQL> /

no rows selected
******************************************************

(gdb) n
Single stepping until exit from function kslgetl,
which has no line number information.
0x0000000000ca01e1 in kmmlod ()

******************************************************
SQL> /

       PID        SID LADDR
---------- ---------- ----------------
NAME
----------------------------------------------------------------
         2          1 0000000050022528
session timer
******************************************************

下面开始测试:

SQL> oradebug setmypid
Statement processed.
SQL>  oradebug call kslgetl 1342317864 1
Function returned 1


-- 这个时候可以看到,PMON卡在了latch free上
SQL> l
  1* select * from v$session_wait
SQL> /

       SID       SEQ#
---------- ----------
EVENT
----------------------------------------------------------------
P1TEXT                                                                   P1
---------------------------------------------------------------- ----------
P1RAW
----------------
P2TEXT                                                                   P2
---------------------------------------------------------------- ----------
P2RAW
----------------
P3TEXT                                                                   P3
---------------------------------------------------------------- ----------
P3RAW             WAIT_TIME SECONDS_IN_WAIT STATE
---------------- ---------- --------------- -------------------
         1        113
latch free
address                                                          1342317864
0000000050022528
number                                                                  138
000000000000008A
tries                                                                     0
00                       -1              27 WAITED KNOWN TIME


-- 监听日志也有报错
12-DEC-2012 19:29:32 * service_died * o9208 * 12537

-- 再看动态监听已经没有了
[oracle@zhangqiaoc ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 12-DEC-2012 19:29:56

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 9.2.0.8.0 - Production
Start Date                12-DEC-2012 15:38:02
Uptime                    0 days 3 hr. 51 min. 53 sec
Trace Level               off
Security                  OFF
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/9.2/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/9.2/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zhangqiaoc)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@zhangqiaoc ~]$

-- 当前没没法测试释放后是否能自动注册回去
-- 因为我测试了个PMON经常请求的latch,如session timer,sort extent pool,释放后PMON都会由于报错而宕库
-- 9i PMON和latch的BUG本来就常有发生,9208都遇到过

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

转载于:http://blog.itpub.net/8242091/viewspace-750993/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值