@WIKI

Oracleインスタンス

最終更新:

atyou

- view
管理者のみ編集可
データベースを起動・停止する単位


Oracleサーバーは、
  • Oracleインスタンス
  • Oracleデータベース
から構成されている。

Oracleインスタンス


Oracleインスタンスは、
  • システムグローバル領域(SGA)いう作業用メモリ空間
  • バックグラウンドプロセス
から構成されている。

Oracleデータベースに対して、最低1つのOracleインスタンスが必要
1つのOracleサーバ上に複数のインスタンスを作成し、複数のデータベースを同時に使うこともできる。


『SGA(システムグローバル領域)』
共有プール ユーザー間で共有できるようにSQL文をキャッシュしたり、データディクショナリ結果をキャッシュしたりする
データベースバッファキャッシュ データファイルから取り出したデータブロックをキャッシュする。
問い合わせの場合もDML(Data Manipulation Language:データ操作言語)の場合も、一度データベースバッファキャッシュにキャッシュしてから処理を行う。
DMLにて変更されたデータベースブロックはDBWnによってデータファイルに書き出される
REDOログバッファ データベースに対する変更情報をREDOレコードとしてキャッシュする。
REDOレコードはデータベースの回復のために使用され、LGWRによってREDOログファイルに書き出される
Javaプール OracleJVM(Java仮想マシン)で動作するJavaコードやデータを格納する
ラージプール 共有サーバ接続時のセッション関連メモリやI/O要求、Recovery Manager(RMAN)で使用するメモリを格納する。
ラージプールはオプションメモリで、構成していない場合は共有プールが使用される

自動共有メモリ管理

Oracle Database 10gから「自動共有メモリ管理」機能が提供されるようになりました。
SGA全体のターゲットサイズを設定するだけで、Oracleサーバは以下のメモリを動的に調整してくれるようになります。

  • 共有プール
  • データベースバッファキャッシュ
  • Javaプール
  • ラージプール

SGA全体のターゲットサイズは、「SGA_TARGET」初期化パラメータで設定します。

『バックグラウンドプロセス』
プロセス 説明
DBWn(データベースライタ) データベースバッファキャッシュ内の変更されたデータブロックをデータファイルに書き出す
LGWR(ログライタ) REDOログバッファのREDOログレコードをREDOログファイルに書き出す
CKPT(チェックポイント) チェックポイント(データベースバッファキャッシュとデータファイルの同期を取り、書き込みを保証するイベント)が発生した場合、
DBWnにシグナルを送ってデータファイルに書き込ませ、その後データファイルと制御ファイルにチェックポイント情報を書き込む
ARCn(アーカイバ) REDOログファイルのログスイッチ(切り替え)が発生した場合、アーカイブ領域にアーカイブログファイルを作成する。
データベースがARCHIVELOGモードのときのみ起動するバックグラウンドプロセス
SMON(システムモニタ) システム障害のためにデータベースが停止した場合、次回のインスタンス起動時にインスタンスリカバリを開始する
PMON(プロセスモニタ) ユーザープロセスに障害が発生したとき、対応しているサーバプロセスのリソースを開放する

 ユーザーがアクセスするときは、アプリケーション側のプロセスとサーバ側のプロセスが通信します。
アプリケーション側のプロセスをユーザープロセス、サーバ側のプロセスをサーバプロセスと呼びます。
サーバプロセスやバックグラウンドプロセスは、PGA(プログラムグローバルエリア)と呼ばれる独自のメモリを持ちます。


Oracleデータベース

Oracleデータベースは実際のファイルで構成されます。

制御ファイル データベースの物理構成やチェックポイント情報などの管理情報を格納したファイル
REDOログファイル データベースに対する変更を格納し、システム障害があったときの回復処理に利用する。
最低2つのグループを持ち、ログスイッチで切り替えながら循環して書き込みが行われる
データファイル 表内のデータや索引など、すべてのデータベースデータを格納する。論理的には表領域に対応する

REDOログファイル


 REDOログ・ファイルは、データに対して行われたすべての変更履歴を記録するファイルです。
 そして、REDOログ・ファイルに記録された変更履歴を基に、障害時に失われたデータのリカバリを行います。

 REDOログ・ファイルが記録している内容は、表に格納しているデータの変更だけではありません。
 索引の付いている列に対して変更を行った場合、索引のデータの変更も記録します。

 REDOログファイルは「グループ」で構成されます。グループには1つ以上のREDOログファイルを含めることができ、
 1つのグループに複数のファイルが存在する場合は、それらは同じ内容を記述したコピーファイルです。
 グループを構成するこれらのファイルを「メンバー」と呼びます。
 グループへの書き込みは、LGWR(ログライタ)が行います。
 REDOログファイルが満杯まで書き込まれるか、明示的にコマンドによる切り替えが行われると、次のグループに書き込みを開始します。
 このような切り替えを「ログスイッチ」と呼びます。新しいグループには、「ログ順序番号」という内容を診断するための順序番号が新たに割り当てられ、
 循環して上書きされても、どの時点のREDOログエントリであるかが判断できるようになっています。

 LGWRは、グループ内の1つのメンバーにREDOログエントリを書き込むことができる限り、動作し続けることができます。

アーカイブログファイル
 REDOログファイルのバックアップに相当するファイル。
 REDOログファイルのログスイッチ時にARCnによって作成される。
 ディスク障害が発生した場合のリカバリ処理に利用される。
 データベースがARCHIVELOGモードのときだけ作成されるファイル

データファイル


 データファイルには、データベースが扱う実際のデータが格納されています。
 データはサーバプロセスによりデータベースバッファキャッシュに読み込まれ、データベースバッファキャッシュ上で問い合わせや更新処理が行われます。
 更新処理が行われたブロックは「使用済みバッファ」と呼ばれ、DBWn(データベースライタ)によってデータファイルに書き込まれます。
 データファイルへの書き込みは、チェックポイント(CKPTによる信号送信)時、データベースバッファキャッシュのメモリ不足時、データベース停止時(ABORTによる停止を除く)に行われます。
 コミット時にはデータファイルへの書き込みは行われません。コミット時は、LGWRによるREDOログファイルへの書き込みが行われているため、
 障害発生時はREDOログファイルからのリカバリ処理で対応できるようになっています。



■Oracleインスタンスの起動


Oracleサーバの起動には、インスタンスの起動とデータベースの起動が必要です。
インスタンス起動の準備
SQLPLUS /NOLOG
┗ 	手順1 まず、データベースに接続せずに、SQL*Plus を起動します。コマンドラインから「/NOLOG」オプションを付けてSQLPLUSコマンドを発行します。
CONNECT username/password AS [SYSDBA | SYSOPER]
┗ 	手順2 SQL*Plusセッションを起動したら、管理者アカウント(デフォルトではsysまたは system)として、SYSDBA(あるいはSYSOPER)システム権限でOracleデータベースに接続します。これで、データベース・インスタンスを起動する準備が完了します。

インスタンスを起動し、データベースをマウントしてオープンする
STARTUP

1. NOMOUNT(インスタンスの起動:SGAを割り当て、バックグラウンドプロセスを起動)


初期化パラメータファイルを読み込み、SGAを割り当て、バックグラウンドプロセスを起動することで、インスタンスが起動します。
このとき、初期化パラメータCONTROL_FILESにて制御ファイルが識別されます。
新規にデータベースを作成する場合などにNOMOUNT(インスタンスのみの起動)を使用します。

初期化パラメータ

Oracleインスタンスのメモリサイズなどは、インスタンスが起動するときに読み込まれる初期化パラメータファイルで設定されます。
初期化パラメータファイルには、
  • SPFILE(サーバパラメータファイル)
  • PFILE(テキストのパラメータファイル)
があります。

種類 説明
SPFILE Oracleサーバによる読み取りと書き込みが可能なバイナリ形式の初期化パラメータファイル。
Oracleインスタンスを起動したままで動的に変更した初期化パラメータ値の保存が可能。
PFILEよりも優先して読み込まれる
PFILE Oracleサーバによる読み取りのみ可能なテキスト形式の初期化パラメータファイル。
動的に変更した初期化パラメータ値はファイルに保存されないため、エディタなどで手動編集が必要

Database Controlでは、「管理」タブ→「インスタンス」リージョンの「すべての初期化パラメータ」から現在の初期化パラメータ値の参照や変更ができます。
 「現行」タブか、「SPFile」タブの「SPFileモードでの変更を現在実行中のインスタンスに適用する」チェックボックスを使用すると、動的な変更が行えます

2. MOUNT(データベースのマウント:制御ファイルをオープン)


制御ファイル内に記録されているREDOログファイル、データファイルを識別します。
データベースのリカバリ作業などの特定処理を行う場合にはMOUNT(データベースのマウント)で起動することができます。

3. OPEN(データベースのオープン:データファイル、REDOログファイルをオープン)


REDOログファイル、データファイルをオープンします。
特権ユーザー(SYSDBA、SYSOPER)以外のユーザーの接続が可能になります。
(通常のOracleユーザは、OPEN(データベースのオープン)するまでは接続できません。)


■インスタンスの停止

インスタンスを停止するときは、
  • 標準(NORMAL)
  • トランザクション(TRANSACTIONAL)
  • 即時(IMMEDIATE)
  • 中断(ABORT)
の4つからオプションを選択します
デフォルトは「即時」停止です。

ABORT処理で停止した場合、次回の起動時にインスタンスリカバリが必要であることに注意しましょう。
その場合のインスタンスのリカバリ情報は、アラートログから確認することができます。


■初期化パラメータ

初期化パラメータには、インスタンスレベルで変更可能なものとセッションレベルで変更可能なもの、両方で変更可能なものがあります。
V$PARAMETERビューでは、セッションレベルで変更した値が表示されます。

SQL> ALTER SYSTEM SET db_file_multiblock_read_count=16;

システムが変更されました。

SQL> ALTER SESSION SET db_file_multiblock_read_count=8;

セッションが変更されました。

SQL> SELECT name,value FROM v$parameter
  2  WHERE name = 'db_file_multiblock_read_count';

NAME                           VALUE
------------------------------ ----------
db_file_multiblock_read_count  8

初期化パラメータは、すべてを調整する必要はありません。基本パラメータのみを調整すれば、最低限の動作は保証されます。拡張パラメータは特殊な要件の場合に使用します。

■トレースファイル

 Oracleサーバの動作を確認するためのログファイルとして、アラートログファイルがあります。アラートログファイルには次のような情報が記録されます。

  • 発生するすべての内部エラー(ORA-600)、ブロック破損エラー(ORA-1578)、デッドロックエラー(ORA-60)
  • データベースの起動と停止、表領域の追加と削除、変更、ALTER DATABASE、ALTER SYSTEMコマンドといった管理作業
  • デフォルト値以外に設定された初期化パラメータ(インスタンス起動時)

 アラートログファイルとバックグラウンドプロセスが作成するトレースファイルは、BACKGROUND_DUMP_DEST初期化パラメータで指定したディレクトリ配下に生成されます。

SQL> show parameter background_dump_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------
background_core_dump                 string      partial
background_dump_dest                 string      /u01/app/.../bdump

SQL> !tail -100 /u01/app/.../bdump/alert_orcl.log
Tue Nov 21 22:45:38 2006
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on. 
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.2.0.
System parameters with non-default values:
 processes                = 150
 __shared_pool_size       = 125829120
 shared_pool_size         = 117440512
 __large_pool_size        = 4194304
 large_pool_size          = 4194304
 __java_pool_size         = 4194304
 java_pool_size           = 4194304
 __streams_pool_size      = 8388608
 streams_pool_size        = 8388608
‥‥
目安箱バナー