ORACLE MASTER BRONZE DBA11g、資格取得、概要把握と試験対策(無料問題付き)

講座5    ORACLE DATABASE、起動・停止を通して分かるシステム構造について

    ORACLE製品も他のベンダー製品と同様に起動・停止に掛るプロセスやシステム構造の理解が必要です。
    起動・停止という流れの中で、どのようなステップでプロセスが利用されてゆくかという基本の流れを理解しましょう
    また、ファイルのデータ更新という1作業から見た、バックグラウンドの状態を確認しましょう。

    Enterprize ManagerにはORACLE DATABSEの起動・停止や補完する機能が備えられていますのでこちらを活用しましょう。
   

        流れとしてはEnterprize Managerで以下の行動を行います。

            1.ORACLE DATABASEの起動・停止
                ↓
            2.ORACLE DATABSEが読み込む初期化パラメータ
                ↓
            3.アラートログの確認
                ↓
            4.メモリの確認とORACLE DATABASEのメモリー構造
                ↓
            5.一連の処理の流れ(ファイルのデータ更新という1作業から見た、バックグラウンドの状態)
           
       
           
詳細な流れ

    1.ORACLE DATABASEの起動・停止

        ユーザがORACLE DATABASEを利用するには起動(OPEN状態)である必要があります。
        起動状態には4つの段階があります。

        段階    ORACLEで言う状態用語        サーバ起動のステップ    プロセスとして起動するもの。実行すると次の段階に上がれる

        1段階目    ORACLEインスタンス未起動        SHUTDOWN       
   
                             ↓            ①初期化パラメータ・ファイルの読み込み
                             ↓            ②インスタンの起動(SGA、バックグランド・プロセス)
                             ↓            ③アラートファイルの起動
   
        2段階目    ORACLEインスタンスの起動        NOMOUNT
   
                             ↓            ④制御ファイル読み込み
                             ↓            ⑤データベースのマウント
   
        3段階目    ORACLEデータベースのマウント    MOUNT           
            (制御ファイルがオープン)
            (インスタンスとデータベースが         ↓            ⑥REDOログ・ファイル読み込み
            関連づけられている)         ↓            ⑦クラッシュ・リカバリ
                             ↓            ⑧データファイルのオープン
   
        4段階目    ORACLEデータベースのオープン    OPEN
            (全てのデータベースがオープンされ
            ユーザがアクセス出来る)
           
            例えば、
            サーバのコンポーネントであるシステムファイルが破損していた場合、②でエラーとなり、NOMOUNTにできません。
            制御ファイルが壊れていた場合、④でエラーとなりMOUNTできません。
            REDOログファイルやデータファイルが破損していた場合、⑥でエラーとなり、OPENできません。
           
            以上のように、何かのファイルが壊れている場合、次のステップに進めません。
            トラブル時はどこでエラーになっているかを判断する為にもこの構造の理解は必要となります。

        起動方法        EMではEMにアクセスし起動ボタンを押すだけで、上記の起動が実行されます。
                SQL*PLUSの場合はSTARTUPと入力します。

        停止方法        EMではEMにアクセスし停止ボタンを押すだけで、上記の逆のステップで停止が実行されます。
                SQL*PLUSの場合はSHUTDOWNと入力します。
               
                停止の場合はEMでもSQL*PLUSでもモードを選択する必要があります。モードによって
                落とし方が変わります。

                Normal(標準)    =    SQL*PLUSでSHUTDONWコマンドを利用した場合のデフォルトの停止モード
                            すべてのユーザがログアウトするのを待ってから停止が動く
                            停止時にはチェックポイント・イベントが発生する。

                Transactional    =    すべてのユーザのトランザクションが終了するのを待ってから停止が動く
                (トランザクション)        実行中のトランザクションが終了した後は、ユーザのログアウトは待たず、
                            強制的に切断する。
                            停止時にはチェックポイント・イベントが発生する。

                Immediate(即時)    =    EMを使用した場合のデフォルトの停止モード
                            すべてのユーザを強制的に切断し、即座に停止が動く
                            実行のトランザクションは強制的にロールバックされる
                            停止時にはチェックポイント・イベントが発生する。

                Abort(中断)    =    停止時にはチェックポイント・イベントが発生せず、強制切断する。
                            雷などで電源が停止した際と同じで、インスタンス障害が発生する。
                            次回に起動する際はクラッシュ・リカバリの作業が必要となります。


    2.ORACLE DATABSEが読み込む初期化パラメータ

        ORACLE DATABASEを起動する際に一番最初に起動するのは1で紹介した①初期化パラメータです。200種類以上ある為、
        基本的な設定を行い、設定がない項目は初期値が設定されます。

        パラメータファイルの形式は2種類です。

            サーバー・パラメータ・ファイル(SPFILE)        =    ORACLE DATABASEが編集したバイナリ形式。
                                    手動では編集できない。
                                    EMやSQLを利用して命令する。
                                    ファイル名はspfile<SID>.ora

            テキスト初期化パラメータ・ファイル        =    手動で編集したテキスト形式       
                                    ORACLE DATABASEは起動時の読み込みだけの為、
                                    編集は行わない。DATABASEが起動中に設定変更した場合
                                    認識する部分は変更するが、全て反映するには一旦、停止が必要。
                                    ファイル名はinit<SID>.ora

            EM上の初期化パラメータページにて【現行(インスタンス)/SPFILEを選択出来、現在実行中のインスタンス・モードでの変更を
            SPFILEに適用するー静的パラメータの場合、データベースを再起動する必要があります】のチェックを入れると
            現行の設定値(インスタンス)に加え、SPFILEの値も変更できる。

   
    3.アラートログの確認

        ORACLE DATABASEを起動した際に、エラーが発生した場合、アラート・ログ・ファイルに書き込みます。
        1で紹介した③アラートファイルの起動が該当します。こちらを確認する事でトラブル解決や原因を知ることができます。
       
        アラート・ログ・ファイルの格納場所はBACKGROUND_DUMP_DEST初期化パラメータで指定された場所で
        テキスト形式のファイルとなります。alert_<SID>.logの形式でエラーだけでなく、イベント情報も表示します。

            アラートの内容    内部エラー情報
                    ブロック破損エラー情報
                    管理者によるALTER(変更)文のSQLの実行
                    インスタンス起動時のデフォルト値以外の初期化パラメータの値
                    データベースの起動・停止日時



        EMの操作では関連リンクからアラート・ログの内容を確認できます。
                       
        同じようなログでトレース・ファイルもあります。

            バックグラウンド・プロセス    =    バックグランド・トレース
            サーバ・プロセス        =    ユーザー・トレース・ファイル
                            SQLのトレースや制御ファイルのバックアップ取得時に書き込みます。
           


    4.メモリの確認とORACLE DATABASEのメモリー構造

        まず、ORACLE DATABASEのメモリー構造として、メモリー関連の用語を抑えておきましょう。

            共有プール    =    実行されたSQLのテキストや解析結果が保存され
                        次回に同じSQLを実行した時に同じ処理を再利用する事で高速化できるいわば
                        キャッシュのような存在です。
                       
            ラージ・プール    =    RMANがバックアップするときのデータや、共有サーバ構成時のユーザ情報が存在し
                        上記の利用が無い場合、通常使用しません。(オプション機能)

            JAVAプール    =    JAVAプログラムを利用する際に格納する領域(オプション機能)

            ストリームプール    =    ORACLE Streamsが利用するメモリー領域(オプション機能)

            PGA        =    サーバ・プロセスやバックグラウンド・プロセスが個別に持っているメモリー領域。
            (プログラム・グローバル領域)    ユーザの処理に関するデータ(セッション状態・カーソル状態)も保有します。

            REDOログ・バッファ    =    INAERT文やUPDATE文の(DML文)実行によって、データ変更した履歴情報を格納する領域。
            (REDOエントリ)        障害回復(リカバリ)に利用します。
           
            データベース・バッファ・キャッシュ    =    表データを処理する際に一時的に保存する領域。更新処理で言えば、
                                実際のデータが変わる前に、まず、このキャッシュ領域にファイルをコピーします。
                                その後、キャッシュから実際のデータファイルに書き込み処理が行われます。                       
                                書き込みを行うのはDBWnが書き込みを行います。

                                使用可能バッファ    =    実際のデータとキャッシュ状のデータが同じ状態
                                使用済バッファ    =    実際のデータとキャッシュ状のデータが異なる状態
                                使用中バッファ    =    サーバ・プロセスが更新処理をかけている最中の状態
       
        ORACLE DATABASEはメモリ上で起動します。メモリーで動作するプログラムとしてSGA、PGAというメモリー機能があります。
        1で紹介したインスタンの起動(SGA、バックグランド・プロセス)が該当します。
       
            メモリーが基本的な動きを行う為、メモリサイズや使用状況・効率といった観点で確認する必要があります。
            SGAとPGAを含めたメモリー確認が大切という事になり、メモリー管理には3種類あります。

        自動メモリー管理        =    メモリーの使用効率を最適化する。
                        SGAおよびPGAで使用可能なメモリー・サイズの合計値を指定する。       
                        MEMORY_TARGET = メモリー全体のサイズを指定
                        MEMORY_MAX_TARGET    =    利用可能なメモリー・サイズの上限を指定

        自動共有メモリー管理    =    個々のメモリーサイズを自動チューニングし、最適なサイズを保つ
                        SGAとPGAのメモリー・サイズは指定し、SAGの各メモリの最適化を行う。
                        但し、REDOログ・バッファサイズは自動チューニングされない為、独自にサイズ設定が必要

        手動メモリー管理        =    以下の各メモリを個別に指定する。
                       
                        データベース・バッファ・キャッシュのサイズ
                        共有プールのサイズ
                        ラージ・プールのサイズ
                        JAVAプールのサイズ
                        ストリーム・プールのサイズ
                        REDOログ・バッファのサイズ

        尚、設定値を変えた場合、どのようなパフォーマンス改善が想定されるかというメモリー・アドバイザの機能がある為
        こちらを参考に各メモリー値の値を変更設定する。

        メモリー・アドバイザ        =    メモリー・サイズを増減させた場合のパフォーマンス影響をグラフ表示しアドバイスする。
                        以下のアドバイザがある

                        共有プール・アドバイザ
                        PGAアドバイザ
                        SGAアドバイザ
                        メモリーアドバイザ
                        バッファ・キャッシュ・アドバイザ


    5.一連の処理の流れ(ファイルのデータ更新という1作業から見た、バックグラウンドの状態)

        実際に、ファイルを更新した場合のデータ処理を順をおってみましょう。

        まずユーザ・プロセスからサーバ・プロセスに命令を送り、共有プールを通して、SQLチェックや実行するSQLを準備します。


        SQLの準備段階        ①ユーザ・プロセスからサーバ・プロセスにDML文(検索・更新等)を送信

        ↓            ②共有プールに前回実施のSQL(DML文(検索・更新等))が無いかを確認

        ↓            ③サーバ・プロセスはSQL(DML文(検索・更新等))を解析。(権限の確認・構文誤りチェック・表や列が実在するかのチェック)
       
        ↓            ④オプティマイザ機能を呼び出し、処理負荷の低い実行計画を作成

        ↓            ⑤共有プールに実行計画を格納

        ↓            データにも触っていない為、内部的なチェック段階と言えます。   

        更新用データの準備段階    ①サーバ・プロセスがデータベース・バッファ・キャッシュに更新用データをコピー。
                    
        ↓            ②更新対象のデータをロックし、排他制御

        ↓            ③変更内容をREDOエントリとしてREDOログ・バッファに書き込み

        ↓            ④更新前のUNDOデータをUNDOセグメントに書き込み
   
        ↓            ⑤データベース・バッファ・キャッシュ状のデータ更新を実施

        ↓            しかし、この段階ではまだ、ディスクに書き込まれていない為、トランザクションのコミット処理が必要です。
                    (REDOログに書き込む前に電源断した場合、全てメモリー上にデータがある為、全て失われます。
                    結果、コミットの変更が確定していない為、何も処理していないという事で致命的な影響はありません。)

        REDOログへの準備段階    ①REDOエントリにコミット文の追加
   
        ↓            ②REDOログ・バッファにある全てのREDOエントリをREDOログファイルに書き込み
                    (ログ・ライター・プロセス=LGWRが実行する)
                   
        ↓            ③更新対象のデータロックの解除

        ↓            ④ユーザ・プロセスに処理完了通知

        ↓            しかし、この段階でもまだ、ディスクに書き込まれていない為、データファイルへの書き込み処理が必要です。
                    (データファイルに書き込む前に電源断した場合、インスタンス障害という状態となり、クラッシュ・リカバリが必要となる。)

        データファイル書き込み段階    ⑩データファイルに書き込み(データベース・ライター・プロセス=DBWnが実行する)

                    データファイルに書き込んだ後であれば、電源断しても情報は全て更新された状態の後となり、整合的に問題なし。
                   

       
        一連の更新処理の流れを書きましたが、バックグラウンドで動くプロセスの理解も必要です。

            ①まず、ユーザの命令を出して、サーバは処理し応答します。この流れで言うとバックグラウンドの状態は以下になります。


        処理        ユーザ・プロセス            ⇔    サーバ・プロセス
       
                    ↑                        ↑
       
        バックグラウンド    プロセス・モニター・プロセス(PMON)        サーバ・プロセス
                (ユーザ・プロセスがエラーになった場合に    (ユーザからの命令を受けて、SQLを実行する。
                ユーザが実行していた処理のロック解除や    ユーザ1つの場合は専用サーバ・プロセスと言う。
                トランザクショのロールバックをする)        大量のユーザーが効率良く、同時に接続する場合は
                                    共有サーバ・プロセスと言う。)
               
            ②データ更新の際、データベースに問題が無いかを常に確認しています。
              インスタンス障害等の問題発生時はクラッシュ・リカバリを実行します。

        バックグラウンド    システム・モニター・プロセス(SMON)
           
            ③データ更新の際、メモリ上に取得したREDOログ・バッファをREDO・ログ・ファイルに実行予定としてログを書き込みます。

        バックグラウンド    ログ・ライター・プロセス(LGWR)

                ・REDOログ・バッファに書き込んだREDOエントリが全体の3分の1まで達したとき
                ・ユーザがコミットしたとき
                ・3秒毎
               
            ④オプションでログ・スイッチが発生した時に、REDOログ・ファイルをバックアップとしてコピーします。

        バックグラウンド    アーカイバ・プロセス(ARCn)

            ⑤チェックポイント・イベントが発生した際に、データ書き込みの命令やチェックポイント・イベントの記録をする。

        バックグラウンド    チェックポイント・プロセス(CKPT)

            ⑥データベースへの書き込みを行う。

        バックグラウンド    データベース・ライター・プロセス(DBWn)

                ・チェックポイントが発生したとき
                ・使用可能なバッファが見つからないとき


試験に出ると想定される問題 この分野の出題としては5問


問題1    全てのユーザがORACLE DATABASEを利用するにはどういう状態である必要がありますか?1つ選べ

    1.SHUTDOWN
    2.NOMOUNT
    3.OPEN
    4.MOUNT


問題2    制御ファイルが壊れていた場合、どの状態まで起動できるか?
   
    1.SHUTDOWN
    2.NOMOUNT
    3.OPEN
    4.MOUNT


問題3    REDOログファイルやデータファイルが破損していた場合、どの状態まで起動できるか?

    1.SHUTDOWN
    2.NOMOUNT
    3.OPEN
    4.MOUNT


問題4    サーバのコンポーネントであるシステムファイルが破損していた場合、どの状態まで起動できるか?


    1.SHUTDOWN
    2.NOMOUNT
    3.OPEN
    4.MOUNT


問題5    EMを使用した場合のデフォルトの停止モードはどれか?1つ選べ

    1.Normal(標準)   
    2.Transactional
    3.Immediate(即時)
    4.Abort(中断)


問題6    SQL*PLUSでSHUTDONWコマンドを利用した場合のデフォルトの停止モードはどれか?1つ選べ

    1.Normal(標準)   
    2.Transactional
    3.Immediate(即時)
    4.Abort(中断)


問題7    サーバー・パラメータ・ファイル(SPFILE)    の正しい説明はどれか?。下記から3つ選べ。

    1.バイナリ形式。
    2.EMやSQLを利用して命令する。                                   
    3.手動で編集したテキスト形式
    4.ファイル名はspfile<SID>.ora


問題8    アラート・ログ・ファイルに書き込まれる内容として正しいのを3つ選べ。

    1.内部エラー情報
    2.データベースの起動・停止日時
    3.管理者によるALTER(変更)文のSQLの実行
    4.インスタンス起動時のデフォルト値の初期化パラメータの値


問題9    SGAおよびPGAで使用可能なメモリー・サイズの合計値を指定する管理方法はどれか?1つ選べ。
   
    1.メモリ・アドバイザによる管理
    2.手動メモリー管理
    3.自動共有メモリー管理
    4.自動メモリー管理


問題10    手動メモリー管理で管理できる内容を4つ選べ。  

    1.SGA   
    2.ラージ・プールのサイズ
    3.JAVAプールのサイズ
    4.共有プールのサイズ
    5.データベース・バッファ・キャッシュのサイズ


問題11    メモリー・アドバイザがアドバイスできる内容で誤っているのを1つ選べ。

    1.PGAアドバイザ
    2.SGAアドバイザ
    3.共有プール・アドバイザ
    4.SQLアドバイザ



問題12    あるデータの更新処理を実行。その際、REDOログ・バッファにある全てのREDOエントリをREDOログファイルに書き込んだ後、
    すぐに電源断した。現状の状態を選べ

    1.SQL準備段階という状態
    2.何もしなくて良い状態(変更処理が何も反映していない状態。)
    3.何もしなくて良い状態(変更内容が全て反映された更新状態。)
    4.インスタンス障害という状態

問題13    ログ・ライター・プロセス(LGWR)が起動する説明として正しいものを3つ選んでください。

    1.使用可能なバッファが見つからないとき
    2.REDOログ・バッファに書き込んだREDOエントリが全体の3分の1まで達したとき
    3.ユーザがコミットしたとき
    4.3秒毎


問題14    データベース・ライター・プロセス(DBWn)はどの時に動くか?正しい説明を2つ選べ

    1.REDOログファイルにREDOログを書き込んだら連携してすぐに書き込む
    2.チェックポイントが発生したとき
    3.使用可能なバッファが見つからないとき
    4.3秒毎


問題15    サーバ・プロセスの内、複数のユーザに対応する形式はどれか?正しいのを1つ選べ。

    1.複数サーバ・プロセス
    2.専用サーバ・プロセス
    3.共有サーバ・プロセス
    4.一時サーバ・プロセス




トップページに戻る