DBA的にはデータベースはインスタンス(SGA、バックグラウンドプロセス)とデータベース(データファイル、制御ファイル、REDOログファイル)の構成物である

DBA的にはデータベースはインスタンス(SGA、バックグラウンドプロセス)とデータベース(データファイル、制御ファイル、REDOログファイル)の構成物である

データベースをDBA的な感覚で考えると、データベースはインスタンスとデータベースで構成されています。

データベースをデータベースで構成?

良く意味が分からないかもしれません。

それもそのはず、SELECTやINSERT、CREATE TABLEなどを使う一般ユーザーが呼んでいるデータベースは、広義でのデータベースです。

いわば、データを記憶するものを全体的にデータベースと呼んでいます。

しかし、本当の意味でのデータベースはインスタンスとデータベース(記憶域構造)で構成されています。


データベース管理をするためのプロセスやプロセスが使用するメモリの総称をインスタンスと言います。具体的な固有名詞を使うと、そのプロセスをバックグラウンドプロセスと呼び、そのメモリをSGA(システムグローバル領域)と呼びます。

データベースをシンプルに考えると、データを保存する表なのですが、例えばその表のデータをUPDATEした時は魔法のようにデータが突然変更されるわけではなく、裏で何かしらの処理が実行されてデータが変更されるワケです。データベースをバックアップする時は裏で何かしらの処理が実行されてデータがバックアップされるワケです。

処理の本質的な部分とでも言うべきでしょうか。
その動作はインスタンスが実行しています。

また、それらのプロセスの途中経過時点でデータを格納しておくのがSGAです。

例えば、UPDATEでデータを変更した後、コミットするまでに変更済みデータを一時的にどこかに記録しておく必要があります。そのようなデータを格納する場所がSGAです。

一方でデータベースはファイル群の総称です。データを記憶するためのファイル群です。SGAとは違い、完了済みの内容を保存するファイルといったイメージです。

データベースはデータファイル、制御ファイル、REDOログファイルの3種類のファイルで構成されています。

データベースの記憶部分はたった3種類のファイルが担っています。

それぞれの役割を説明します。データファイルは、すべての表や索引のデータが格納される場所です。普段、直接目にするデータはデータファイルに格納されています。REDOログファイルはデータに対して実行された変更情報は格納されています。コミットされた変更内容がREDOログファイルに記録されています。最後に制御ファイルですが、これはいわばデータベースの司令塔です。すべてのデータファイルやREDOログファイルが格納されているパス情報を格納しています。

このデータファイルは〇〇にあって、このREDOログファイルは△△にあります。という感じ。

最初に読み込まれるため(データベースのマウント時)、制御ファイルが壊れていたらデータベースは動きません。

とても大事なファイルです。(制御ファイルの場所は、SPFILE内のCONTROL_FILESで指定します。)

と、このようにDBA的にデータベースを考えると今まで知らなかった用語や構造が浮かび上がってきます。では普段使っている表はどこと繋がっているのか。
それは、データファイルです。表を含む表領域のデータはすべてデータファイルに入っています。表のデータが変更するのは、データファイルのデータが変更するのと同じ意味を持ちます。表に見えるデータと繋がっているところは、データベースを構成するファイルのうち、データファイルのみということになります。

データファイルは表領域と繋がっていますが、データが多い場合は2つのデータファイルと1つの表領域が繋がっている場合もあります。イラストで言うと、A表領域は一番下のデータファイルに紐づいています。一方でB表領域は上2つのデータファイルと紐づいていますね。ただ、データファイルが1つだろうが2つだろうが、SQLを実行する側からすれば関係ないですので、DBA以外は意識しなくていいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です