Oracleのデータベースとインスタンス
Oracleは「データベース」と「インスタンス」の2つの要素があります。
- データべース
- インスタンス
この2つの違い、わかりますか?インスタンスはプログラミング経験者ならわかるかと思います。プログラミング未経験者には何のことやら?
簡単にいうと、「データベース」は名前のとおり、データベース本体です。でもデータベース稼働中にはこの「データベース」本体と直接やりとりするわけではなく、別のものが実態として動作します。これが「インスタンス」です。
jojoの奇妙な冒険という漫画を知っていますか?知っている人しかわからない例えで恐縮ですが、jojoには本体とスタンドがあります。
これがまさにデータベース(本体)とインスタンス(スタンド)です。実際に戦うのはスタンド(インスタンス)です。でも攻撃されると本体(データベース)も影響をうけます。
これと同じです。Oracleでも、データをINSERTすると先にインスタンスに反映され、その後データベースに反映します。
jojoはデータベースとインスタンスを具現化しているんですね(笑)
ファイルとメモリ
「データベース」と「インスタンス」について具体的にいきましょう。
データベースはファイルのこと
まずは「データベース」です。「データベース」とはファイルのことです。ここでいうファイルとは物理ファイルのことで、データファイル(.dbf)やREDOログファイル(.log)のことです。
データとログのファイルのことですね。Windowsではエクスプローラーから確認できるファイルの事です。
インスタンスはメモリのこと
「インスタンス」とは一時的に使用するメモリのことです。メモリとはSGAやバックグラウンドプロセスのIDの事です。メモリなのでファイルと違い、高速に処理できます。
Oracleは一旦は高速で処理できるインスタンスで処理をし、その後ファイルへ書き込みます。
- データベース・・・ファイル
- インスタンス・・・メモリ
本体であるファイルと一時的に使用する高速なメモリ。「データベース」と「インスタンス」の違いがわかってきましたか?
グローバルデータベース名とSID
では次です。「データベース」と「インスタンス」にも名前がついています。どこで名前をつけるのでしょうか?
「データベース」の名称はインストール時に「グローバルデータベース名」で設定します。「インスタンス」の名称は同じくインストール時に「SID」で設定します。
「データベース」の名前は「グローバルデータベース名」で「インスタンス」の名前は「SID」なんですね。微妙にそれぞれ違いますよね。混乱するポイントなので注意してくださいね。
ここまでをまとめてみましょう。
- データベース(ファイル)の名前 →グローバルデータベース名
- インスタンス(メモリ)の名前 →SID
同じような用語が複数あるので混乱してしまいますが、こうやって整理してみると単純なことなんですね。
「データベース」とは本体であるファイルのことで名前はグローバルデータベース名。「インスタンス」とは一時的なメモリのことで名前はSIDでした。
この関連を覚えておけば、もう混乱することはありません。
Oracleのデータベースとインスタンスのまとめ
- 「データベース」とは本体であるファイルのこと。名前はグローバルデータベース名
- 「インスタンス」とは一時的な影であるメモリのこと。名前はSID
以上、データベースとインスタンスのまとめでした。
コメント