Oracle Databaseのアーキテクチャ
Oracle Databaseサーバーは大別すると2種類の構造から成り立っています。まず、データを格納するストレージ上のファイル群からなるデータベースと、サーバー上の共有メモリとバックグラウンド・プロセス群からなるOracleインスタンスです(図1)。
データベースのファイル群
Oracleのデータベースを構成するファイルにはさまざまな物がありますが、厳密には表や索引のデータを格納するデータファイル、更新履歴を記録するオンラインREDOログ・ファイル、データファイルの位置などを記録する制御ファイルの3種類を指します。
データファイルは表や索引を格納する論理的な領域である表領域を構成します。表領域は複数のデータファイルで構成することもできます。過去、OSのファイルシステムが扱える1つのファイル・サイズが小さかったころには、巨大な表を格納するための論理的な表領域のサイズを大きくするために、表領域が複数のファイルで構成できることに意味がありました。しかしOracle Database 10gで導入されたAutomatic Storage Management(ASM)では巨大かつ冗長性と拡張性を備えたストレージ・プールを形成することが可能になり、それに伴い1つの表領域を1つの巨大なファイルで構成するbigfile表領域が導入されました。ASMについては別途説明の回を設けます。
表領域はその用途によっていくつかに分類されます。データ・ディクショナリなどのデータベースのシステム情報が記録されているSYSTEM表領域、監査情報など肥大化しやすいデータが記録されるSYSAUX表領域、読み取り一貫性のための変更前データを記録するUNDO表領域、そしてアプリケーションの表や索引を格納するユーザー表領域です。ユーザー表領域は複数作成することができ、用途ごとに表領域を用意することも可能です。
更新履歴を記録するオンラインREDOログ・ファイルは特に重要で、更新をCOMMITしたことに永続性を持たせるのはこのREDOログ・ファイルに記録されたかどうかで決まります。Oracleインスタンスに障害が発生したり、データファイルに破損が発生してリストア/リカバリが必要になったとき、REDOログ・ファイルの内容を読み取ってデータベースへの更新を再現していきます。オンラインREDOログ・ファイルは固定長の固定数のファイルなので、循環されて使用されます。そのため、オンラインREDOログ・ファイルには上書きが発生します。変更の履歴を保存しておくため、上書きされる前にアーカイブREDOログ・ファイルとしてコピーされます(図2)。
制御ファイルにはデータファイルの位置などが記録されています。制御ファイルとオンラインREDOログ・ファイルは特に重要であるため、Oracleインスタンスの機能によって複数個所に複製を記録することができます。