Oracle Database Server アーキテクチャの導入(インストール前の基本)



Oracle Database Server(DBサーバ)は、Oracleのデータベース管理ソフトウェアがインストールされるマシンです。インストール前に理解しておくべき基本的な3つの重要なコンポーネントがあります:


🔹1. Oracleデータベースソフトウェアファイル

  • バイナリや実行ファイルで構成されている。

  • マシンの物理ディスクに格納される。

🔹2. データベースの物理ファイル

  • 実際のデータや、DB運用に必要な内部情報を保存するファイル。

  • これも物理ディスクに保存されており、データベースの一部とされる。

🔹3. データベースインスタンス(Oracleインスタンス)

  • Oracle DBを起動すると、メモリ上に作成される構造体。

  • 主に、SGA(共有メモリ領域)などのバッファ/キャッシュや、バックグラウンドプロセスで構成される。

  • インスタンスが特定のDBと関連付けられることを**「マウント」**と呼ぶ。

  • インスタンス起動後、DBがオープンされ、ユーザーがアクセス可能になる。


🔹補足用語

  • ユーザープロセス(USER PROCESS):クライアントアプリケーションの処理を担当。

  • サーバープロセス(SERVER PROCESS):インスタンスに接続し、ユーザープロセスの要求を処理。

  • PGA(プログラム・グローバル・エリア):ユーザーごとの処理情報が格納されるメモリ領域。


🖥️ 実際のサーバー上のOracle構成

  1. サーバーに3つのターミナルで接続。

  2. ORCLインスタンスは停止中でも、物理ファイルはすでに確認可能(物理ドライブに存在)。

  3. Oracleソフトウェアのファイルも所定のディレクトリに存在(詳細は後のレッスンで)。

  4. 実行可能ファイルはBINディレクトリに格納されている。


🔧 Oracleインスタンスに接続する前の準備

  1. rootユーザーからoracleユーザーに切り替える。

  2. Oracleインスタンスが停止中なら、ORA_で始まるバックグラウンドプロセスは存在しない。

  3. SQL*Plus で接続しようとしても、環境変数を設定していないとエラーになる。


📁 必要な環境変数の設定

  • ORACLE_HOME:Oracleの実行ファイルの場所を指定。

  • ORACLE_SID:インスタンス名(複数DBがある場合の識別子)。

  • PATH:Linuxが実行ファイルを探す場所の一覧にOracleのBINを追加。

  • 変数設定後、SQL*Plusから接続できるようになる(IDLE=インスタンスが起動していない状態)。


⚙️ 環境変数の自動設定スクリプト:oraenv

  • ORACLE_SIDORACLE_HOMEの設定を自動化。

  • $ORACLE_HOME/binも自動でPATHに追加される。


✅ インスタンスの起動

  • 必要な変数を設定した後、Oracleインスタンスを起動。

  • メモリ領域(SGA)やバッファが確保され、DBがマウントされる。

  • インスタンスがDBと関連付けられ、バックグラウンドプロセスが起動したことが確認できる。

🗂 Oracleデータベースの構成ファイル(物理ファイル)

✅ 1. 制御ファイル(Control File)

  • データベース全体に関する情報を保持するファイル。

  • DBごとに1つは必須(冗長性のため複数コピー可)。

  • バックアップのメタデータも含まれる。

  • このファイルなしではDBを起動できない。


✅ 2. データファイル(Data Files)

  • ユーザーデータ、アプリケーションデータ、メタデータ、データディクショナリを保存。


✅ 3. オンラインREDOログファイル

  • トランザクションの変更履歴を記録。

  • クラッシュ後のインスタンスリカバリで使用。

  • データファイルが失われていない場合、これにより復旧が可能。


📂 その他の関連ファイル

ファイル名役割
初期化パラメータファイル(initファイル)インスタンスやDBの設定に使用される
パスワードファイルSYSDBAなどの特権ユーザーがリモート接続・管理する際に必要
バックアップファイルメディア障害やユーザー誤操作時の復元用
アーカイブログファイルデータ変更履歴の保存。バックアップと併用してデータファイルの復元が可能
トレースファイル(Trace Files)各サーバープロセスやバックグラウンドプロセスがエラー発生時に出力
アラートログファイル(Alert Log)DB全体のエラーやメッセージを時系列で記録するログファイル

💽 ファイルの保存場所について

  • これら物理ファイルは、OSのファイルシステム上に直接保存される場合もあれば、

  • **ASM(自動ストレージ管理)**というOracle専用のストレージ管理機能で管理される場合もあります。


📁 Linuxサーバーにおける主要ディレクトリと環境変数

🔧 環境変数(3つ)

変数名内容
ORACLE_BASEOracle関連ファイルのベースディレクトリ(例:/u01/app/oracle
ORACLE_HOMEOracleの実行ファイル(バイナリ)が置かれている場所
ORACLE_SID使用するデフォルトのインスタンス名(例:ORCL、SALESなど)

🔍 ディレクトリ構造の例

  • /u01/app/oracle(=ORACLE_BASE)

    • oradata/:データベースごとにサブディレクトリ(例:oradata/ORCL)が存在。物理ファイルが格納。

    • diag/:診断関連ファイル(ログ、トレース)が格納。サブディレクトリが多数。

    • product/:Oracleソフトウェア本体。バージョンごとに格納(例:product/19.0.0 など)。

Oracleサーバー構成の種類とRACについて


🔸1. 単一インスタンス構成(Single Instance Database Server)

  • 構成内容:Oracleソフトウェアが1つのサーバにインストールされ、1つのデータベースと、それに対応する1つのインスタンス(メモリ上の構造)を持つ構成。

  • 用途:一般的な中小規模のシステムで使われる。

  • 特徴:単純でセットアップが容易。


🔸2. 複数インスタンス構成(Multiple Instance Configuration)

  • 構成内容:1台のサーバ上に複数のOracleデータベースと、それぞれのインスタンスを持つ構成。

  • 特徴:同一サーバ上で複数のデータベースを分離して運用できる。

  • 用途:テスト環境や共有リソースの効率的な利用など。


🔸3. Oracle RAC(Real Application Cluster)

  • 構成内容:複数のサーバ(ノード)上に、それぞれ Oracle インスタンスを起動し、1つの共有データベースを同時に操作可能にするクラスタ構成。

  • 特徴

    • 各ノードにインスタンスがあり、それらは同一の物理ファイル(共有ストレージ)にアクセス。

    • 高可用性(HA)とスケーラビリティを実現。

    • インターコネクトを通じてインスタンス間でメモリ情報をやり取りする。

  • 利点

    • 処理性能(スループット)の向上

    • 障害時の可用性確保


🧪 Oracle RAC 実例の紹介

  • 実際に RAC クラスタに接続し、複数のノードを確認。

  • srvctl(Server Control Utility)を使い、各ノード上のデータベースやインスタンスの状態を確認。

  • 例:

    • データベースには2つのインスタンス(1つ目は1stノード、2つ目は2ndノード)が存在。

    • 物理ファイル(データファイルやログファイルなど)は、両ノードから共通の共有ストレージ上に存在

    • 実際に ORACLE_SID を変更し、それぞれのノードで同じファイルパスであることを確認。


📦 共有ストレージとファイルの扱い

  • RAC では、すべてのインスタンスが同じ物理ファイル(データベースファイル)にアクセスする必要があるため、

  • ファイルは**共有ストレージ(例:SAN、NAS、ASMなど)**上に配置される。

  • 各ノードの環境変数 ORACLE_SID を切り替えることで、対象インスタンスへの接続を制御できる。