Developers Summit 2009でお話させていただきます!

* [Development Style(DB)](http://www.seshop.com/event/dev/2009/timetable/Default.asp?mode=detail&eid=124&sid=761&tr=13%5FDevelopment+Style%81iDB%29#761)

なんとDevelopers Summit 2009(2/13(金) 13:10?14:00 at 目黒雅叙園)にてお話させていただくことになりました! 講演のタイトルは「プロとしてのOracleアーキテクチャ入門 ?番外編?」です。 来場される方の担当業務としては、DBA、インフラ設計よりはむしろ SQL/プログラム開発の方が多いのかなという判断で、 SQL実行/チューニングにまつわる Oracleアーキテクチャについてお話させていただきます。 書籍「プロとしてのOracleアーキテクチャ入門」でいうと、 「CHAPTER 13 問い合わせ処理の仕組み」+αの内容になると思います。

「テクノロジーの変化を体感するためのDevelopmentStyle 2.0」というテーマに 沿うよう、11g新機能や知られていないテクノロジを紹介できるように準備を進めてい ますが、SQL/プログラム開発の方にターゲットを絞っている関係上、 内容的には基本的/基礎的なものになるかと思いますので、この点、あらかじめご了承 ください。

さて、具体的には、以下の内容についてお話させていただく予定です。

* SQL実行のためのOracleアーキテクチャ * 実行計画とCBO * ヒストグラムと最適なアクセスパス * SQL開発におけるOracleアーキテクチャ特有の注意点 * オプティマイザ統計の重要性 * 共有プールのflush * バインドピーク

それでは、当日会場でお会いできることを楽しみにしています。

CHAPTER 02 クライアントアプリケーションとサーバープロセス – プロとしてのOracleアーキテクチャ入門

今回のentryでは、「SECTION I Oracleアーキテクチャ概要」の「CHAPTER 02 クライアントアプリケーションとサーバープロセス」について補足説明します。 この章では、SQL*PlusなどのOracleに接続するアプリケーションである「クライアントアプリケーション」 とクライアントから指示に従い実際に処理を実行する「サーバープロセス」について説明しています。

あるクライアントアプリケーションがOracleに接続すると、そのクライアントアプリケー ション専用のサーバープロセスが起動します。 ここで、クライアントアプリケーションとサーバープロセスの間に設定されるコネクションを、 Oracleではセッションと呼びます。 これらについては、書籍で説明したとおりですが、このentryでは、 Linux上でクライアントアプリケーションとしてSQL*PlusでOracleに接続した場合を例に、 クライアントアプリケーションとサーバープロセスの関係について、 プロセスの相互関係、セッションの観点から確認してみます。

まず、SQL*Plusを起動して、connectコマンドでOracleに接続すると、サーバープロセス が起動します。 これは、SQL*Plusにおいて、fork()、exec()システムコールを実行することで、 プロセスが複製され、複製されたプロセスの実体がoracleプログラムに変わるためです。 このような処理を行うことで、サーバープロセスに対応したプロセスが新規に作成されます。 そして、このサーバープロセスはSQL*Plusの子プロセスとなり、 サーバープロセスとSQL*Plusは子プロセス、親プロセスの関係をもちます。 そして、2つのプロセス間にパイプと呼ばれるプロセス間通信路を設定します。 すなわち、セッションはパイプにより実現されるわけです。

ここで説明した動作を実際に確認してみましょう。 まず、SQL*Plusを実行して、Oracleに接続してみます。

[o11106@hp1 ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 – Production on 日 11月 9 15:36:10 2008

Copyright (c) 1982, 2007, Oracle. All rights reserved.

SQL> connect […]

CHAPTER 01 データベースとインスタンス – プロとしてのOracleアーキテクチャ入門

私が中心になって執筆した書籍 「プロとしてのOracleアーキテクチャ入門」について、 紙幅や構成上の制約で触れることができなかった点、誤記などについて、 各章ごとに補足説明をしたいと思っています。

今回のentryでは、「SECTION I Oracleアーキテクチャ概要」の「CHAPTER 01 データベースとインスタンス」 について説明します。 この章では、OS上のファイルの集合として構成される「データベース」と、 OS上のプロセスとメモリとして実現される「インスタンス」について取り上げています。

ファイルはlsコマンド(UNIX/Linux)や、エクスプローラ(Windows)にて実際に確認できます から、「データベース」についてはイメージしやすく実感がわきやすいものと思います。

しかし、プロセスとメモリとして実現される「インスタンス」については、 理解がしにくいかもしれません。このため、書籍のP17 では、UNIX/Linux版Oracleを例にとり、 psコマンドやshow sgaコマンド(SQL*Plus)の実行例を記載することで、 理解を助けるように工夫しています。読者がより親しんでいるであろうOSのWindows版 Oracleを例にとり説明できればよかったのですが、以下の理由でUNIX/Linuxプラットフォーム での説明とせざるをえませんでした。

[…]

書籍 「プロとしてのOracleアーキテクチャ入門」を執筆しました

(なんと前回のエントリから3年近く間が空いてしまいました・・・) Oracle Database のアーキテクチャについて説明した書籍「プロとしてのOracleアーキテクチャ入門」を 執筆するお話をソフトバンククリエイティブ社様よりいただき、 同じ職場のOracle暦10年のベテランエンジニアの方と共同で執筆作業をすすめ、 2008/8/22に(なんとか)無事出版できました。

* [ソフトバンククリエイティブの本:プロとしてのOracleアーキテクチャ入門](http://www.sbcr.jp/books/products/detail.asp?sku=4797349801)

Amazonのレビューでも好意的なコメントをいただけており、ほっと一安心といったところです。

[…]