|
Oralceのコンポーネントは3つの基本領域にわかれており、それぞれoracleサーバーの稼働するサーバーの3つの基本領域に対応しています。そのコンポーネントを下記にまとめました。
メモリー
OracleSGAといい、この領域は全てのユーザーにより共有されます。OracleSGAはいくつもの要素で構成されており各要素はその目的に応じて設計されています。
| バッファキャッシュ |
ユーザーがデータの表示や更新が出来る様に、Oracleデータをメモリーに格納します。これによりユーザーがディスクファイルを直接変更する事はありません。ユーザーに変わってOralceが適切なデータをメモリーに読み取り、ユーザーが変更を行った後のコミットの時点で変更内容をディスクに書き込みます。バッファキャッシュ内の情報はOracleに同時に接続する全てのユーザーで共有されます。 |
| REDOログバッファ |
REDOという特別な情報が格納されています。この情報はシステムに障害が発生した時にOracleがデータの変更内容を再構築する際に使用されます。REDO情報は、ユーザーがデータを更新したときにログバッファに書き出され、Oracleによってディスクに書き込まれるまでログバッファに貯えられています。 |
| 共有プール |
使用済みのSQL文を他のユーザーが再利用できるように格納しておくためのライブラリキャッシュで、メモリー内のOralceデータディクショナリ情報を素早くアクセスできる様に格納しておく為のディクショナリキャッシュなどがあります。 |
| ラージプール |
Oracleバックアップ、リストア処理、I/Oサーバー処理、および共有サーバーに対するセッションメモリーのサポートに使用されているサイズの大きいメモリー割り当て領域を意味します。 |
| その他のメモリー領域 |
Javaプールなどが例にあげられます。 |
ディスク
Oracleデーターファイル、REDOログファイル、制御ファイル、パスワードファイル、パラメータファイル、アーカイブログファイルがあり、これらのファイルにはOralceサーバーに格納されるデータが含まれています。
| データファイル(*.dbf) |
必須のディスクコンポーネントで、データディクショナリとアプリケーションのデータベースオブジェクトを格納しています。データファイルは非常に大きなサイズになる特徴をもっています。また、メモリー内のバッファキャッシュや、ディクショナリキャッシュにある情報はディスク上のデータファイルから読み込まれたものです。全てのOracleデータベースには、少なくとも1つのデータファイルが含まれます。Oracleでテーブルを作成し、行を挿入する場合、テーブルと行がデータファイルに格納されます。1つのデータファイルは1つのデータべースに関連付ける事ができます。 |
| REDOログファイル(*.log) |
2つ以上のふぁいるが必須のディスクコンポーネントで、REDO情報を格納します。メモリー内のログバッファにある情報は最終的にこのREDOログファイルに書き込まれます。このコンポーネントはOracleデータベース内のデータに対する全ての変更点を記録します。このようなログは、データべースに問題が発生した場合、データをリストアするのに不可欠です。 |
| 制御ファイル(*.ctl) |
必須のディスクコンポーネントでデータベース名やOracleディスクコンポーネントの位置に関する情報を格納します。制御ファイルにはサーバーのファイルシステムに置けるデータファイルとREDOログの両方の物理的な位置が格納されます。Oracleデータべースには制御ファイルが複数あってもかまいません。複数あっても完全に同一のコピーとなります。これを制御ファイルのミラー化と言います。 |
| パスワードファイル |
オプションのディスクコンポーネントで、特権を持つユーザーの接続情報を保持し、データベースをOracleのデータベース管理ツールであるEnterprise
Managerでリモート管理できます。 |
| パラメーターファイル (*.ora) |
必須のディスクコンポーネントで、Oracleが稼働中にどのように動作するのかを設定するためのものです。SGAのサイズ等、Oracleインスタンスの特性を定義するファイルです。 |
| アーカイブログファイル |
ディスクの障害等から回復する際に必要なREDOログファイルのコピーです。 |
プロセス
Oracleのバックグラウンドプロセス又は個別のプロセス、サーバープロセスのスレッド。これらのプロセスによりOracleサーバーを正常に稼働させるために必要な、全てのバックグラウンド処理が実行されます。
<リクエストの流れ>
Select文が発行された場合の処理の流れは次の様になります。

1,ユーザープロセスの要求(SQL文)をサーバープロセスが受け取ります。
2,受け取ったSQL文の構文チェックを行います。データディクショナリを検索し、権限のチェックなどを行います。
3,データディクショナリから最も効率の良い検索パスを調べて実行計画を立てます。
4,実行計画を再利用可能にする為に、SQL文と実行計画をSGAの共有プールに格納します。
5,該当データがSGAのデーターべースバッファキャッシュに存在しないか調べます。
6,バッファキャッシュに存在しない場合はデータファイルから該当データを読み込み、バッファキャッシュに置きます。
7,該当のデータをユーザープロセスに返します。
DML文が発行された場合の処理の流れは次の様になります。

1,ユーザープロセスの要求(SQL文)をサーバープロセスが受け取ります。
2,該当データがSGA内のバッファキャッシュに存在するかチェックします。
3,存在しない場合には、データファイルから該当データを取り出しバッファキャッシュに置きます。
4,UNDOセグメントをSGA内のバッファキャッシュに確保します。
5,取り出したデータの該当行をロックします。
6,変更前、変更後のデータをREDOバッファログに書き込みます。
7,変更情報を、UNDOセグメントブロックに書き込みます。
8,データブロックの該当行を変更します。
<環境変数>
Oracleの実行環境に必要な環境変数があります。インストールログにも紹介しましたが、変更する場合はそれぞれ下記の項目を実行して下さい。
ORACEL_HOME
Oracleシステムのホームディレクトリです。モジュールがインストールされる元となるディレクトリであり、各PATHはこのディレクトリからの相対リンクになります。
setenv ORACLE_BASE
/oracle/product
setenv ORACLE_HOME $ORACLE_BASE
|
ORACLE_SID
Oracleのインスタンス識別子名を指定します。これにより1つのシステム内で複数のOracleシステムを運用する事が可能です。
setenv ORACLE_SID
ORACLEDB
|
PATH
Oralceシステムの実行モジュールが入っているディレクトリを指定します。
set PATH $PATH $ORACLE_HOME/bin
|
NLS_LANG (省略可)
地域を指定します。これにより出力がその地域の言語になります。また通貨や日付けなどもその地域に合わされます。
setenv NLS_LANG JAPANESE_JAPAN.JA16EUC
|
|