Oracleインスタンスを管理するORACLE MASTER Bronze DBA講座(5)

Oracleデータベースエンジニアとしての実力を証明するORACLE MASTER資格。その入り口であるBronze資格の取得は難しくない。本連載と、同時掲載中の連載「Bronze SQL基礎I 講座」で合格を目指そう!(参考記事:「Oracle 10g対応のORACLE MASTERとは?」)

» 2005年09月16日 00時00分 公開
[有限会社 G.F.インフィニティ (Project - ∞)]

 前回「Oracleのネットワークを構成する」で、Oracleのネットワーク環境の構成方法を学びました。今回は、Oracleインスタンスの管理について紹介します。

Oracleインスタンスの管理

理解しておきたいこと

1.確認しておきたい内容

  • Oracleインスタンスの起動と停止
  • Oracleインスタンスを構成するパラメータについて
  • Oracleインスタンスのメモリ管理
  • Oracleインスタンス構成の確認

2.Oracleインスタンスの構造

 Oracleサーバは、OracleインスタンスとOracleデータベースから構成されます。OracleインスタンスはSGA(システムグローバルエリア)と呼ばれるメモリ領域とバックグラウンドプロセスで構成され、Oracleデータベースは実際のファイルで構成されます。

図1 OracleインスタンスとOracleデータベース 図1 OracleインスタンスとOracleデータベース

 アプリケーションサーバなどの中間層を使用する場合は、中間層サーバにOracle Netをインストールします(中間層がOracleデータベースから見たクライアント)。クライアントPCからはWebブラウザでアクセスします。

Oracleインスタンス

  • SGA(システムグローバルエリア)
構成要素 説明
共有プール ユーザー間で共有できるようにSQL文をキャッシュしたり、データディクショナリ結果をキャッシュしたりする
データベースバッファキャッシュ データファイルから取り出したデータブロックをキャッシュする。問い合わせの場合もDML(Data Manipulation Language:データ操作言語)の場合も、一度データベースバッファキャッシュにキャッシュしてから処理を行う。DMLにて変更されたデータベースブロックはDBWnによってデータファイルに書き出される
REDOログバッファ データベースに対する変更情報をREDOレコードとしてキャッシュする。REDOレコードはデータベースの回復のために使用され、LGWRによってREDOログファイルに書き出される
Javaプール OracleJVM(Java仮想マシン)で動作するJavaコードやデータを格納する
ラージプール 共有サーバ接続時のセッション関連メモリやI/O要求、Recovery Manager(RMAN)で使用するメモリを格納する。ラージプールはオプションメモリで、構成していない場合は共有プールが使用される
  • バックグラウンドプロセス
プロセス 説明
DBWn(データベースライタ) データベースバッファキャッシュ内の変更されたデータブロックをデータファイルに書き出す
LGWR(ログライタ) REDOログバッファのREDOログレコードをREDOログファイルに書き出す
CKPT(チェックポイント) チェックポイント(データベースバッファキャッシュとデータファイルの同期を取り、書き込みを保証するイベント)が発生した場合、DBWnにシグナルを送ってデータファイルに書き込ませ、その後データファイルと制御ファイルにチェックポイント情報を書き込む
ARCn(アーカイバ) REDOログファイルのログスイッチ(切り替え)が発生した場合、アーカイブ領域にアーカイブログファイルを作成する。データベースがARCHIVELOGモードのときのみ起動するバックグラウンドプロセス
SMON(システムモニタ) システム障害のためにデータベースが停止した場合、次回のインスタンス起動時にインスタンスリカバリを開始する
PMON(プロセスモニタ) ユーザープロセスに障害が発生したとき、対応しているサーバプロセスのリソースを開放する

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

Oracleデータベース

構成要素 説明
データファイル 表内のデータや索引など、すべてのデータベースデータを格納する。論理的には表領域に対応する
REDOログファイル データベースに対する変更を格納し、システム障害があったときの回復処理に利用する。最低2つのグループを持ち、ログスイッチで切り替えながら循環して書き込みが行われる
制御ファイル データベースの物理構成やチェックポイント情報などの管理情報を格納したファイル
アーカイブログファイル REDOログファイルのバックアップに相当するファイル。REDOログファイルのログスイッチ時にARCnによって作成される。ディスク障害が発生した場合のリカバリ処理に利用される。データベースがARCHIVELOGモードのときだけ作成されるファイル

問題

問題1

データベースライタ(DBWn)によって処理される内容を選択しなさい。

a.REDOログバッファ内のエントリをREDOログファイルに書き出す
b.データベースバッファキャッシュ内の変更済みバッファをデータファイルに書き出す
c.ユーザープロセスの異常をクリーンアップし、リソースを開放する
d.REDOログファイルのコピーを作成する

正解:b

解説

DBWnは、正解bのとおりの動作を行います。不正解となる選択肢を解説しましょう。

選択肢a:LGWRによって処理されます。

選択肢c:PMONによって処理されます。

選択肢d:ARCnによって処理されます(アーカイブログファイルの作成)。

問題2

ログライタ(LGWR)によって処理される内容を選択しなさい。

a.REDOログバッファ内のエントリをREDOログファイルに書き出す
b.データベースバッファキャッシュ内の変更済みバッファをデータファイルに書き出す
c.ユーザープロセスの異常をクリーンアップし、リソースを開放する
d.REDOログファイルのコピーを作成する

正解:a

解説

LGWRは、正解aのとおりの動作を行います。不正解となる選択肢を解説しましょう。

選択肢b:DBWnによって処理されます。

選択肢c:PMONによって処理されます。

選択肢d:ARCnによって処理されます(アーカイブログファイルの作成)。

3.Oracleインスタンスの起動と停止

 Oracleサーバの起動には、インスタンスの起動とデータベースの起動が必要です。

  1. インスタンスの起動(NOMOUNT):SGAを割り当て、バックグラウンドプロセスを起動
  2. データベースのマウント(MOUNT):制御ファイルをオープン
  3. データベースのオープン(OPEN):データファイル、REDOログファイルをオープン
図2 Oracleインスタンスの起動(クリックで全体を表示します) 図2 Oracleインスタンスの起動(クリックで全体を表示します)

 通常のOracleユーザは、データベースがオープン(OPEN)するまでは接続できません。データベースのリカバリ作業などの特定処理を行う場合にはマウント(MOUNT)で起動することができます。新規にデータベースを作成する場合などにインスタンスのみの起動(NOMOUNT)を使用します(図2)。

 インスタンスを停止するときは、「標準」「トランザクション」「即時」「中断」の4つからオプションを選択します(図3)。

図3 Oracleインスタンスの停止(クリックで全体を表示します) 図3 Oracleインスタンスの停止(クリックで全体を表示します)

 デフォルトは「即時」停止です。「中断」を使用すると、次回インスタンス起動時にリカバリ作業が入ります。

問題

問題1

一般ユーザーに接続させず、管理したいときに使用するデータベースの状態を選択しなさい。

a.MOUNT
b.SHUTDOWN
c.OPEN
d.STARTUP

正解:a

解説

 前回、宿題とした問題です。一般ユーザーが接続できず、管理に使用するのはマウント状態の特徴です(正解a)。

 データベースの管理にはリカバリ作業などが該当し、マウント状態で行われる可能性があります。今回の選択肢にはありませんが、データベースがオープンしている必要があるが一般ユーザーに接続させたくない場合、「データベースアクセスの制限」という方法があります。状態は「STARTUP RESTRICT」です。

 問題の選択肢は、V$INSTANCEビューのSTATUS列に表示される値です。STARTUPはインスタンスのみが起動した状態(選択肢d)、OPENはデータベースがオープンした状態です(選択肢c)。SHUTDOWNという状態はV$INSTANCEビューからは見られませんが、データベースが停止しているということです(選択肢b)。

4.初期化パラメータ

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

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

 Database Controlでは、「管理」タブ→「インスタンス」リージョンの「すべての初期化パラメータ」から現在の初期化パラメータ値の参照や変更ができます。

図4 初期化パラメータの参照と変更(クリックで全体を表示します) 図4 初期化パラメータの参照と変更(クリックで全体を表示します)

 「現行」タブか、「SPFile」タブの「SPFileモードでの変更を現在実行中のインスタンスに適用する」チェックボックスを使用すると、動的な変更が行えます(図4)。

問題

問題1

Oracle Enterprise Manager Database Controlにて「すべての初期化パラメータ」を表示しています。このページにおいて、現在のインスタンスのみに影響を与えることのできるパラメータはどれですか。

a.「SPFile」タブに含まれるパラメータ
b.「現行」タブに含まれるパラメータ
c.「現行」タブまたは「SPFile」タブに含まれるもののうち、「基本」にチェックがあるパラメータ
d.「現行」タブまたは「SPFile」タブに含まれるもののうち、「動的」にチェックがあるパラメータ

正解:d

解説

 初期化パラメータは、次の2種類に分かれます。

  • インスタンス起動時のみ設定が行えるパラメータ
  • インスタンス起動時に設定を行い、インスタンス起動後にも変更できるパラメータ

 Database Controlでインスタンス起動後にも変更できるパラメータを確認する方法を答えればよいので、正解は選択肢dです。「動的」にチェックのないパラメータは、初期化パラメータファイルでのみ設定が行え、データベースの起動後は変更できません。

 不正解の選択肢の解説は以下のとおりです。

選択肢a:SPFILEのみにパラメータ変更を保存するか、「SPFileモードでの変更を現在実行中のインスタンスに適用する」チェックボックスを使用して、SPFILEと現在のインスタンスにパラメータ変更を反映します。

選択肢b:SPFILEに保存せず、現在のインスタンスにのみパラメータ変更を反映します。

選択肢c:Oracleサーバ構成において、一般的に編集することの多いパラメータを「基本」、環境に依存しているものや通常変更する必要のないパラメータを「拡張」としています。

5.自動共有メモリ管理

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

  • 共有プール
  • データベースバッファキャッシュ
  • Javaプール
  • ラージプール
図5 合計SGAサイズの設定(クリックで全体を表示します) 図5 合計SGAサイズの設定(クリックで全体を表示します)

 SGA全体のターゲットサイズは、「SGA_TARGET」初期化パラメータで設定します。このパラメータで、データベースバッファキャッシュなどの動的変更されるメモリとREDOログバッファなどの変更されないメモリの合計サイズを設定します。Oracleサーバは、このメモリサイズを超えない範囲で動的変更されるパラメータを自動調整します。

 Database Controlを使用する場合は、「管理」タブ→「インスタンス」リージョンの「メモリー・パラメータ」ページから構成できます。「自動メモリー管理」の「有効」ボタンを使用することで、自動共有メモリ管理の合計SGAサイズを設定できます。設定後も合計サイズを修正することが可能です(図5)。

問題

問題1

自動共有メモリ管理機能を有効にするためには、どの値を設定する必要がありますか。

a.共有プールサイズ
b.自動共有メモリ管理の合計SGAサイズ
c.ラージプールサイズ
d.最大SGAサイズ
e.PGAターゲット総計

正解:b

解説

 Database Controlで自動共有メモリ管理機能を有効化するには、自動共有メモリ管理の合計SGAサイズを設定します(図6)。

図6 自動共有メモリ管理(クリックで全体を表示します) 図6 自動共有メモリ管理(クリックで全体を表示します)

 この設定により、データベースのワークロードが監視され、共有プール、データベースバッファキャッシュ、ラージプール、Javaプールが自動調整されます。

 選択肢aと選択肢cは、自動調整されるメモリコンポーネントです。合計サイズは、選択肢dの「最大SGAサイズ」以下に設定する必要があります。最大SGAサイズを超えて設定しようとするとエラーになります。最大SGAサイズは動的変更できない初期化パラメータです。

 選択肢eは、自動共有メモリ管理には関係ありません。「PGAターゲット総計」は自動PGAメモリ管理に関係する設定で、データベース全体でのPGA最大サイズを設定することで、メモリソートサイズなどをOracleサーバが自動調整します。

問題2

自動共有メモリ管理機能を使用するために設定される初期化パラメータを選択してください。

a.SGA_MAX_SIZE
b.JAVA_POOL_SIZE
c.SGA_TARGET
d.LARGE_POOL_SIZE
e.SHARED_POOL_SIZE

正解:c

解説

 問題1の「自動共有メモリ管理の合計SGAサイズ」では、SGA_TARGET初期化パラメータを設定しています(正解c)。自動共有メモリ管理で、共有プール(選択肢e)、データベースバッファキャッシュ、ラージプール(選択肢d)、Javaプール(選択肢b)が自動調整されます。SGA_TARGET初期化パラメータの値は最大SGAサイズを超えて設定することはできず、最大SGAサイズはSGA_MAX_SIZE初期化パラメータで設定されます(選択肢a)。SGA_MAX_SIZE初期化パラメータは、SGA_TARGET初期化パラメータと異なり、動的変更できない初期化パラメータです。

まとめ

 次の内容をチェックしておきましょう。

  • Oracleバックグラウンドプロセスの名称とその役割
  • Oracleサーバの起動ステップと使用目的
  • 初期化パラメータファイルの変更(Database Controlのページ内容)
  • 自動共有メモリ管理の設定はSGA_TARGET初期化パラメータで行う

宿題

 次回は、「データベース記憶域の管理」を確認します。次の宿題を解いておいてください。

問題

データベースの領域を大きくする方法を4つ選択しなさい。

a.表領域を追加する
b.セグメントサイズを大きくする
c.エクステントサイズを大きくする
d.表領域のデータファイルサイズを大きくする
e.「フルになった場合に自動的にデータファイルを拡張」を有効にする
f.表領域にデータファイルを追加する

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、Oracle関連の資格をテーマとして取り上げています。Bronze SQL 基礎 I、Bronze DBA 10gも近日中に追加予定です。「無料お試し版」もありますので、記事と併せてご覧ください。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。