ablog

不器用で落着きのない技術者のメモ

第1回 Oracle8i Internal Services 1人読書会

読んだところ

  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 の間で再帰的な呼出しが発生する。
name short name
Oracle Call Interface OCI
User Program Interface UPI
Net8
Oracle Program Interface OPI
Compilation Layer KK
Execution Layer KX
Distributed Execution Layer K2
Network Program Interface NPI
Security Layer KZ
Query Layer KQ
Recursive Program Interface RPI
Access Layer KA
Data Layer KD
Transaction Layer KT
Cache Layer KC
Services Layer KS
Lock Management Layer KJ
Generic Layer KG
Operating System Dependencies S

妄想

ところで、この 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