Oracleのグローバルデータベース名とSID
Oracleには「グローバルデータベース名」と「SID」があります。「グローバルデータベース名」と「SID」は同じ名称をつける事が多いため違いがわかりにくいのですが、一体どのような違いがあるのでしょうか?
データベースとインスタンスの名称
- データベース・・・名前はグローバルデータベース名。初期化パラメータDB_NAMEに記述される。
- インスタンス・・・名前はSID。Windowsのサービス名や初期化パラメータのファイル名で使用される。
「グローバルデータベース名」は「データベース」のこと、「SID」は「インスタンス」のことです。
「データベース」と「インスタンス」の違いはわかりますよね?わからない場合はこちらを参照してください。
「グローバルデータベース名」はファイルの名称、「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の説明でした。
コメント