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

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

Oracleは「データベース」と「インスタンス」の2つの要素があります。

  • データべース
  • インスタンス

この2つの違い、わかりますか?インスタンスはプログラミング経験者ならわかるかと思います。プログラミング未経験者には何のことやら?

簡単にいうと、「データベース」は名前のとおり、データベース本体です。でもデータベース稼働中にはこの「データベース」本体と直接やりとりするわけではなく、別のものが実態として動作します。これが「インスタンス」です。

jojoの奇妙な冒険という漫画を知っていますか?知っている人しかわからない例えで恐縮ですが、jojoには本体とスタンドがあります。

これがまさにデータベース(本体)とインスタンス(スタンド)です。実際に戦うのはスタンド(インスタンス)です。でも攻撃されると本体(データベース)も影響をうけます。

これと同じです。Oracleでも、データをINSERTすると先にインスタンスに反映され、その後データベースに反映します。

jojoはデータベースとインスタンスを具現化しているんですね(笑)

ファイルとメモリ

「データベース」と「インスタンス」について具体的にいきましょう。

データベースはファイルのこと

まずは「データベース」です。「データベース」とはファイルのことです。ここでいうファイルとは物理ファイルのことで、データファイル(.dbf)やREDOログファイル(.log)のことです。

データとログのファイルのことですね。Windowsではエクスプローラーから確認できるファイルの事です。

インスタンスはメモリのこと

「インスタンス」とは一時的に使用するメモリのことです。メモリとはSGAやバックグラウンドプロセスのIDの事です。メモリなのでファイルと違い、高速に処理できます。

Oracleは一旦は高速で処理できるインスタンスで処理をし、その後ファイルへ書き込みます。

  • データベース・・・ファイル
  • インスタンス・・・メモリ

本体であるファイルと一時的に使用する高速なメモリ。「データベース」と「インスタンス」の違いがわかってきましたか?


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

では次です。「データベース」と「インスタンス」にも名前がついています。どこで名前をつけるのでしょうか?

「データベース」の名称はインストール時に「グローバルデータベース名」で設定します。「インスタンス」の名称は同じくインストール時に「SID」で設定します。

「データベース」の名前は「グローバルデータベース名」で「インスタンス」の名前は「SID」なんですね。微妙にそれぞれ違いますよね。混乱するポイントなので注意してくださいね。

ここまでをまとめてみましょう。

  • データベース(ファイル)の名前 →グローバルデータベース名
  • インスタンス(メモリ)の名前 →SID

同じような用語が複数あるので混乱してしまいますが、こうやって整理してみると単純なことなんですね。

「データベース」とは本体であるファイルのことで名前はグローバルデータベース名。「インスタンス」とは一時的なメモリのことで名前はSIDでした。

この関連を覚えておけば、もう混乱することはありません。

Oracleのデータベースとインスタンスのまとめ

  • 「データベース」とは本体であるファイルのこと。名前はグローバルデータベース名
  • 「インスタンス」とは一時的な影であるメモリのこと。名前はSID

参照:Oracleインスタンスの管理

以上、データベースとインスタンスのまとめでした。