http://d.hatena.ne.jp/yohei-a/20091017/1255791152

第1回 Oracle8i Internal Services 1人読書会Oracle8i Internal Services-LMLPHPOracle8i Internal Services-LMLPHPOracle8i Internal Services-LMLPHPOracle8i Internal Services-LMLPHPOracle8i Internal Services-LMLPHP

Oracle

読んだところ

  1. Introduction

    • The Oracle Kernel Layers
    • The Kernel Services

書かれていること

  • この本の2章以降を理解するために必要なこと。
  • それは「Oracle の中心部 (Kernel) の階層構造 (layers)」。

要約

  • Oracle の中心部は階層構造になっている。
  • 各層は自分より下の層なら、好きな順番で、直接呼び出すことができる。
  • 呼出しから戻るとき以外、上の層に制御が上がることはない。
    • 例えば、Oracle Program Interface (OPI) から直接 Operating System Dependencies (S) を呼出して、次に Compilation Layer (KK) を呼出すことができる。しかし、Compilation Layer (KK) から Oracle Program Interface (OPI) を呼出すことはできない。
    • ただし例外がある。例えば、インデックスのリーフ・ブロックの分割やエクステント管理のようなケースで、transaction layer と data layer の間で再帰的な呼出しが発生する。
nameshort name
Oracle Call InterfaceOCI
User Program InterfaceUPI
Net8
Oracle Program InterfaceOPI
Compilation LayerKK
Execution LayerKX
Distributed Execution LayerK2
Network Program InterfaceNPI
Security LayerKZ
Query LayerKQ
Recursive Program InterfaceRPI
Access LayerKA
Data LayerKD
Transaction LayerKT
Cache LayerKC
Services LayerKS
Lock Management LayerKJ
Generic LayerKG
Operating System DependenciesS

妄想

ところで、この layer ってあくまでモジュールなど物理的なものをグルーピングする論理的な概念だと思う。

Oracle の実行ファイルを見てもこんな名前のはないし。この論理は物理とどう対応するのか? 手元の Oracle10gR2(Solaris10) で $ORACLE_HOME 下をちょっと調べてみたら、それっぽい名前のオブジェクトファイルがあった。Oracle のインストール時にこいつらが、リンクされて実行ファイルや共有ライブラリになるんだなたぶん。

$ cd /export/home/oracle/product/10.2.0/db_1/rdbms/lib
$ ls *k[a-zA-Z0-9]*
genksms.o kecwr.o kkpoban.o kprnts.o kpundf.o ksnktd.o kxmnsd.o kzvndv.o libskgxpg.a s0kuzr.o skrmpt.o sskfoded.o
kciwcx.o kfod.o kkxntp.o kprwts.o ksms.o ksnnni.o kxmwsd.o libknlopt.a libskgxpr.a s0kvpf.o skrnpt.o sskrmed.o
kcsm.o kgupc.o kkxwtp.o kpucb.o ksnkcs.o ksnnt2.o kzlilbac.o libskgxns.a libskgxpu.a skfedpt.o skrspt.o sskrned.o
kecnr.o kgutc.o kopc.o kpudfo.o ksnkkpo.o ktd.o kzlnlbac.o libskgxpd.a s0kudbv.o skfodpt.o sskfeded.o sskrsed.o
05-13 16:45