Oracleアーキテクチャの全体像
Oracleの構成要素は、大きく書きの三つに分かれます。
- Oracleソフトウェア
- データベース
- インスタンス
Oracleソフトウェア
Oracleを構築する際は、初めにインストールを行います。
この中に含まれる「DBCA」というソフトを利用して、「インスタンス」と「データベース」を作成することになります。
データベース
Oracle内でのデータを格納庫です。(「データファイル」、「制御ファイル」等を持つ。)
インスタンスとは、シングル構成であれば1:1で対応しています。
Oraleの三大要素の一つである「データベース」ですが、構成としては下記のようになっています。
データベースの構成要素
データベースは、大きく下記三つの構成要素で構成されています。全て物理ファイルです。
- データファイル
- REDOログファイル
- 制御ファイル
これらは、シングル構成の場合は、一つのインスタンスに対して必ず1:1で作られます。
データファイル
データベースの主要なファイルが格納されます。(テーブルや、インデックス情報等)
「データファイル」については、詳しくは、下記の記事でも解説しています。
REDOログファイル
データベースの更新履歴を逐次格納します。Oracleは、複数のREDOログファイルをローテーションして上書きして使っています。
制御ファイル
容量は非常に小さいファイルです。「データファイル」や「REDOログファイル」等の各ファイルの最終更新日時等の情報を書き込んだりします。
物理ファイルの場所
下記のコマンドを実行すると、物理ファイルの場所を確認することができます。
1 |
select file#,name from V$datafile; |
「(Oracleのインストールディレクトリ)\oradata\<SID>\」に配置されます。
上記の画像では、ほぼDBFファイルしかありませんが、普通に運用しているOracleなら下記のように3種類の拡張子のファイルができるでしょう。
ファイル名 | 説明 |
---|---|
データファイル | 拡張子「.DBF」 |
REDOログファイル | 拡張子「.LOG」 |
制御ファイル | 拡張子「.CTL」 |
サービス名
- データベースは、クライアントからは、一つの「サービス」として見え、クライアントは「サービス名」を指定して、データベースに接続をする。
- 1つのデータベースには、クライアントからの処理を識別するために、複数のサービス名を対応付けることができる。
サービス名の設定方法
初期化パラメータ「SERVICE_NAMES」や、「tnasname.ora」のSERVICE_NAMEを使う。
グローバルデータベース名
「サービス名」のデフォルトの値(下記の画像のように、データベース作成時に設定しています。)
リスナー(リスナープロセス)
- データベースサーバー側で動作しているプロセスで、クライアントからの接続要求を待っているプロセス。
- 接続要求を受けると、その要求を目的のデータベースに転送します。
インスタンスとは?
インスタンスが起動していなければ、Oracleは起動できません。
インスタンスには、下記二つの構成要素があります。
- SGA
- バックグラウンドプロセス
SGA
インスタンスの起動時に確保されるプロセス間で共有するデータを保管するためのメモリ領域です。
SGAのデータは、サーバープロセスや、バックグラウンドプロセスで共有されます。
「初期化パラメータ」という設定値によって、そのサイズを確保します。
SGAの構成要素
SGAは、下記の要素で構成されます。
SGAの各構成要素の説明
用語 | 説明 |
---|---|
共有プール | 「ライブラリキャッシュ」や「データ・ディクショナリキャッシュ」等から構成されるメモリ領域です。 |
ラージプール | プロセス間の通信に使用するメモリ領域です。 |
Javaプール | JVMの実行に必要な情報を格納するメモリ領域です。 |
Streamプール | Streamの実行に必要なメモリ領域です。 |
データベースバッファキャッシュ | ブロックを保管するメモリ領域です。 |
REDOログバッファ | REDOログファイルに書き込まれていない、REDOデータを保管するメモリ領域です。 |
共有プール
データブロック以外の共有データ(主にSQL関連の問い合わせ結果データ等)を保管する領域です。
詳しくは下記の記事でも解説しています。
ラージプール
比較的大きいサイズのデータをプロセス間でやり取りする際に使用されるメモリ領域です。
Javaプール
Java言語で書かれたストアドプロシージャをキャッシュするための領域です。
Streamプール
「Oracle Streams」というメッセージング機能を実現するためにキャッシュする領域です。
データベースバッファキャッシュ
固定サイズのデータブロックをキャッシュするために使用されます。
これのおかげで、一度発行したSQLは非常に高速に動作するようになります。
REDOログバッファ
SQLでのデータを更新する際に、REDOログも更新しますが、後でまとめて書き込むためにそれを一時的にバッファしておく領域です。
詳しくは、下記の記事でも解説しています。
バックグラウンドプロセス
インスタンスの起動にあわせて、起動しています。
ユーザーから直接指令があって動くのではなく、プロセスを監視したり、データの書き出しといった裏方的な仕事をします。
SID
インスタンスを識別するIDです。
SQL Plus等で、Oracleに接続する際はまずはこれを使います。
環境変数「ORACLE_SID」にSIDを設定して、接続するインスタンスを指定したりもします。
インスタンスの起動の仕組み
Oracleが起動するまでは下記のステップを辿ります。
- 未起動状態
- NOMOUNT状態
- MOUNT状態
- OPEN状態
未起動状態
単純に、まだインスタンスが起動していない状態です。
SYSDBA権限を持ったSYSユーザーで接続して、「STARTUP」コマンドを実行すると、NOMOUNT状態に移行します。
NOMOUNT状態
インスタンスを起動した際は、まずはこの状態になります。
未起動状態で、STARTUPコマンドを実行すると、Oracleは「初期化パラメータファイル」を読み込み、初期化パラメータによってインスタンスを起動します。
その後、バックグラウンドプロセスが起動し、SGAが確保されます。
この状態(NOMOUNT状態)に遷移するためのコマンド
1 |
STARTUP NOMOUNT |
この状態(NOMOUNT状態)の用途
DBCAを利用せずに、手動でデータベースを作成する場合のみです。
MOUNT状態
「制御ファイル」(.ctlのファイル)をオープンが完了すると、この状態になります。
なお、制御ファイルが複数ある場合に一つでもオープンに失敗すると、この状態に遷移することができません。
この状態(MOUNT状態)に遷移するためのコマンド
1 |
STARTUP MOUNT |
この状態(MOUNT状態)の用途
下記の用途の場合にこの状態に遷移させます。
- データファイルや、REDOログファイルのパス変更
- 「アーカイブログモード」と「非アーカイブログモード」の切り替え
OPEN状態
インスタンスは、「データファイル」と「REDOログファイル」をオープンが完了すると、この状態に遷移します。
「データファイル」と「REDOログファイル」のパスは、「制御ファイル」に格納されています。
この状態まで来ると、データベースに格納されたデータにアクセスすることが出来るようになります。
この状態(OPEN状態)に遷移するためのコマンド
1 |
STARTUP |
このコマンドを実行すると、NOMOUNT→MOUNT状態を経て、OPEN状態まで自動で遷移します。
状態遷移の確認方法(アラートログにて)
これらの状態遷移は、「アラートログ」を見れば、確認することができます。
アラートログには、各状態の遷移情報が格納されています。
初期化パラメータファイル
サーバーパラメータファイル(SPFILE):初期化パラメータファイル
「設定値を保持しているOracleの動作特性を決定するパラメータを保持しているバイナリファイル」です。
読み込みタイミング
「インスタンスの起動時」に読み込まれます。
SPFILEが存在しない場合や、読み込めない場合はインスタンスを起動することはできません。
初期化パラメータの設定方法の違い
初期化パラメータを設定する際は、下記の二つのレベルがあります。
- 「インスタンスレベル」で設定する。
- 「セッションレベル」で設定する。
インスタンスレベルで設定
1 2 |
ALTER SYSTEM SET (パラメータ名)=(設定値) SCOPE = {MEMORY | SPFILE | BOTH}; |
設定値について
設定値 | 設定変更の範囲 |
---|---|
MEMORY | 設定変更は即座、再起動後は、設定変更が無効になってしまいます。 |
SPFILE | 「初期化パラメータ」の設定値のみが変更されて、再起動後に設定変更が有効になります。起動中は設定変更ができないです。 |
BOTH | デフォルトがこれです。設定変更が即座で、「初期化パラメータ」での再起動後の設定変更も可能です。 |
セッションレベルで設定
設定変更は、実行したセッション内でのみ有効となります。
1 |
ALTER SESSION SET (パラメータ名) = (設定値); |
用途
特定のSQL処理のみ初期化パラメータを一時的に変更したい場合に有効です。
PFILEについて
Oracle8i以前では使われていた「テキスト形式の初期化パラメータ」です。
9以降では、デフォルトでSPFILEが作成されるので、作成されなくなりました。
クライアント側
ネット・サービス名
tnsnames.ora(クライアントPC側のリモート接続設定ファイル)で、「接続記述子(Oracle接続情報をまとめた情報)」を一意にまとめた名前のことです。
接続記述子は、長くなることが多いので、「ネット・サービス名」を付けることで、短縮しています。
この記事へのコメントはありません。