Layers of Oracle

December 21st, 2008 | Categories: Boring | Tags:

 截取Oracle interal中的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的解释,可以从metalink查找得到。在这页中就有很多解释。

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调用出的问题。

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
  1. eygle
    December 21st, 2008 at 13:31
    Quote | #1

    这个图很有用,补充一下,其调用规则是自上向下,某些调用可以省略一些层次。

    看过一个新的图,有了一些变化!