Layers of Oracle
。如KC,KT,KK;在通过pstack察看Oracle进程堆栈信息和Oracle因内部错误产生core dump的时候,都可以看到这些带有标记的Oracle function.
例如察看正在执行rollback操作的Oracle进程的堆栈
test box > pstack 23845
23845: oraclelewu (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
00000001004f4be8 kcoapl (2000, 9, 106512668, 1065127e8, ffffffff7fff57d8, 0) + 3c8
00000001015343a0 kcbapl (ffffffff7fff6b00, 3e3fbb008, ffffffff7af30190, 3fb77e9e8, ffffffff7fff6f38, 3e381e000) + 1a0
00000001004c7af8 kcrfw_redo_gen (ffffffff7fff6410, 1, 3fffd56f0, 1, ffffffff7fff6440, 0) + 40d8
000000010153193c kcbchg1_main (8, ffffffff7fff6590, 3e3fbb008, 0, 2, 1) + 355c
000000010152da80 kcbchg (8, 0, ffffffff7fff69b8, ffffffff7fff6988, ffffffff7fff89d8, 0) + 240
0000000100d9554c ktuapundo (ffffffff7fff6f38, ffffffff7af769f8, 0, 0, ffffffff7fff89d8, ffffffff7fff6b00) + 24c
0000000100df5920 ktbapundo (ffffffff7fff6f28, 1, 0, 100000000000000, 1, 2) + 40
0000000102836760 kdoiur (8, fc00, 0, 403, 50, 2) + 5c0
00000001004f6710 kcoubk (1056c4768, ffffffff7fff7568, 2, ffffffff7fff76d4, 1, 1028361a0) + 190
0000000100d92f94 ktundo (1056c4, 2, ffffffff7fff8038, 0, ffffffff7fff76d4, 2) + e54
0000000100d903e0 ktubko (3fac2d170, ffffffff7fff89c8, 2, ffffffff7fff89d8, 106748000, ffffffff7fff88d8) + 8a0
0000000100d8d874 ktuabt (10651d000, 105400, 106400, 10651d, 1056c4, ffffffff7fff9660) + af4
0000000100d4ce40 ktcrab (0, 3fac2d0d8, 0, 2, 1065150e8, c0000) + 280
0000000100d5926c ktcabt_lop (3fac2d0d8, 0, 321, 64, 380016b04, 0) + 16c
0000000100d43ae0 k2labo (0, 106515108, 106515000, 106515, 106400, 3fac2d0d8) + 60
000000010248b138 k2send (0, 0, 106515000, 106515100, 3fa3c8170, 106515000) + 7f8
0000000100d9ef14 xctrol (105754000, 105c00, 1057540e8, 3cf8, ffffffff7af29f00, 106512550) + 7b4
00000001019ed264 kksExecuteCommand (ffffffff7acae628, 10651d000, 70021a, 0, ffffffff7af31910, 0) + 504
00000001025458d8 opiexe (0, 0, ffffffff7fffb508, 0, 1, 0) + 31d8
000000010249b5f8 kpoal8 (bffffc00, 8, 0, 820, 105800, 10651f7b0) + 778
0000000100346e0c opiodr (105754300, 5e, 106512550, 1, ffffffff7af26208, 106515) + 60c
0000000103d615a4 ttcpip (17, ffffffff7fffcfe0, 1056aa66c, 1056a7e50, 0, 106512668) + 504
0000000100341378 opitsk (10651f7b8, 1, 0, 10651f7b0, 10586eab8, fffffffd) + 598
00000001003459c8 opiino (106400, 10651f7b0, 0, 40002801, 106400, 10651f7b0) + 468
0000000100346e0c opiodr (10651e928, 3c, 106400, 10651f730, 10651f, 106515) + 60c
000000010033f7a0 opidrv (106521eb0, 0, 3c, 10651ebe8, 3c, 0) + 380
0000000100339d70 sou2o (ffffffff7ffff738, 3c, 4, ffffffff7ffff760, 105df8000, 105df8) + 50
00000001002fc09c opimai_real (2, ffffffff7ffff838, 10403d1cc, 1064ba798, 247d4cc, 14800) + 7c
00000001002fbf58 main (2, 8, 0, ffffffff7ffff848, ffffffff7ffff958, ffffffff7b500140) + 98
00000001002fbe7c _start (0, 0, 0, 0, 0, 0) + 17c
这些Oracle内部核心function的解释,可以从查找得到。在中就有很多解释。
STACK TRACE:
————
Summary Stack (to Full stack) (to Function List)
ksedmp # KSE: dump the process state
kgeriv # KGE Record Internal error code (with Va_list) (IGNORE)
kgeasi # Raise an error on an ASSERTION failure (IGNORE)
kdbmrd ? Module Notes: kdb.c - Kernel Data Block structure and
internal manipulation
kdoqmd ? Module Notes: kdo.c - Kernel Data Operations
kcoapl NAME: kcoapl - Kernel Cache Op APpLy
kcbchg1
kcbchg
ktuapundo ktuapundo - Kernel Transaction Undo APply UNdo
ktbapundo ktbapundo - Kernel Transaction Block APply UNdo
kdoiur declare local objects */
kcoubk kcoubk - Kernel Cache Op Undo callBacK — invoke undo callback routine */
ktundo ktundo - Kernel Transaction UNDO
ktubko Get undo record to rollback transaction, non-CR only */
ktuabt ktuabt - Kernel Transaction Undo ABorT */
ktcrab KTC: Kernel Transaction Control Real ABort - Abort a transaction.
ktdabt
k2labo abort session: first abort aborts tx
k2send TESTING SUPPORT:
xctrol XaCTion ROLlback: Rollback the current transaction of the current session.
opiodr OPIODR: ORACLE code request driver - route the current request
ttcpip TTCPIP: Two Task Common PIPe read/write
opitsk opitsk - Two Task Oracle Side Function Dispatcher
opiino opiino - ORACLE Program Interface INitialize Opi
opiodr OPIODR: ORACLE code request driver - route the current
request
opidrv # opidrv - ORACLE Program Interface DRiVer (IGNORE)
sou2o # Main Oracle executable entry point
main # Standard executable entry point
start # C program entry point (IGNORE)
当发生异常的时候,DBA就可以先根据core dump里面的interal function+”entry point” 简单判断在哪个layer调用出的问题。

这个图很有用,补充一下,其调用规则是自上向下,某些调用可以省略一些层次。
看过一个新的图,有了一些变化!