在 Oracle 的故障诊断时,我们往往会发现大量的内核调用在堆栈中抛出,有时候理解这些堆栈的含义对诊断和解决问题意义重大。但是在 Oracle 的文档中,往往没有详细的描述。我将在系列文章中,记录点滴的研究心得。以便有同样需要的朋友,在遇到问题时,可以参考。
在 ASM 的问题诊断中,经常可以看到类似如下的堆栈:
<- dbgeEndDDEInvocation <- kfnFenceNearClient <- kfnrclKill <- kfnrcl_gc <- kfnTimeout
这其中:
kfn - kernel automatic storage management networking subsystem
kfnrcl 则事实上存在一个 X$ 对象: x$kfnrcl ,其中记录的是所有远程的 ASM 客户端连接。
SQL> desc x$kfnrcl
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
CON_ID NUMBER
CLUSID VARCHAR2(33)
INSTNAME VARCHAR2(64)
DBNAME VARCHAR2(8)
ASMSID VARCHAR2(32)
DETECTED TIMESTAMP(0)
LASTSEEN TIMESTAMP(0)
INSTID NUMBER
OWNERID NUMBER
NODEID NUMBER
GROUPID NUMBER
MEMBERID NUMBER
FLAGS NUMBER
CLUSTERNAME VARCHAR2(31)
CFLAGS NUMBER
正常情况下,该表的记录包括:
SQL> select indx,instname,dbname,groupid,memberid,flags,clustername from x$kfnrcl;
INDX INSTNAME DBNAME GROUPID MEMBERID FLAGS CLUSTERNAME
---------- ---------- ------------------------ ---------- ---------- ---------- --------------------
0 orcl2 orcl 2147483662 0 4 zdb-cluster
1 orcl1 orcl 2147483662 0 5 zdb-cluster
所以:
kfnrcl - kernel automatic storage management networking subsystem remote ASM clients entries list
在 x$kfnrcl 中记录的远程失效的连接,将每 60秒一次进行删除。
kfnrcl_gc 顾名思义,就是 kfnrcl 的 glocal cache 处理。
供参考。如有错谬,欢迎指正。
最后修改时间:2020-07-10 10:50:47
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




