Oracleのグローバルデータベース名とSIDとは

Oracleのグローバルデータベース名とSID

Oracleには「グローバルデータベース名」と「SID」があります。「グローバルデータベース名」と「SID」は同じ名称をつける事が多いため違いがわかりにくいのですが、一体どのような違いがあるのでしょうか?

データベースとインスタンスの名称

  • データベース・・・名前はグローバルデータベース名。初期化パラメータDB_NAMEに記述される。
  • インスタンス・・・名前はSID。Windowsのサービス名や初期化パラメータのファイル名で使用される。

「グローバルデータベース名」は「データベース」のこと、「SID」は「インスタンス」のことです。

「データベース」と「インスタンス」の違いはわかりますよね?わからない場合はこちらを参照してください。

Oracleのデータベースとインスタンスとは

「グローバルデータベース名」はファイルの名称、「SID」とはメモリの名称のことでした。

「グローバルデータベース名」は初期化パラメータDB_NAMEに記述されています。「SID」はWindowsのサービス名や初期化パラメータのファイル名で使われます。

クラスタ環境でのSID(インスタンス)

通常、グローバルデータベース名とSIDは同じ名称にします。ファイルとメモリの名前が同じです。

ただし、クラスタ環境(RAC)ではSIDを別の名称にする事があります。念のため、「クラスタ」を解説しますと、クラスタ環境では冗長化のためにサーバーを2台たて、サーバー1とサーバー2にそれぞれOracleをインストールします。

通常はサーバー1が稼動していますが、サーバー1がダウンしてしまったら自動的にサーバー2に切り替わるような構成です。これがクラスタです。

このクラスタ環境ではグローバルデータベース名は1つで、SIDを2つにわけます。どういうことかわかりますか?思い出してください。

グローバルデータベース名はファイルの事で、SIDはメモリのことでした。つまり、「グローバルデータベース名は1つで、SIDを2つ」というのは「ファイルが1つでメモリが2つある」という構成です。

言い換えると、「データベース」は1つで「インスタンス」が2つあります。サーバー1にSID(インスタンス)が1つ、サーバー2にSID(インスタンス)が1つあり、これが切り替わるような構造なのです。サーバ3には本体であるデータベース(ファイル)が1つあります。

通常のサーバー構成

  • サーバー1・・・インスタンス「DB1」、データベース「DB1」

クラスタ環境のサーバー構成

  • サーバー1・・・インスタンス1「DB1」
  • サーバー2・・・インスタンス2「DB2」
  • サーバー3・・・データベース「DB3」

ここではインスタンス名やデータベース名に「DB1」「DB2」「DB3」という名称をつけました。

クラスタ構成の場合、このようにグローバルデータベース名とSIDが違う場合もありますが、クラスタではない場合はグローバルデータベース名とSIDは同じ名称に設定しておけばよいです。

参照:グローバル・データベース名の決定 – Oracle Database管理者ガイド

以上、Oracleのグローバルデータベース名とSIDの説明でした。