合格を狙え! ORACLE MASTER Silver DBA

つまずきやすいポイントを解説
合格を狙え! ORACLE MASTER Silver DBA

有限会社 G.F.インフィニティ (Project - ∞)
2007/11/19

例題1

正解:a、c

参考:「Oracleのバックアップ/リカバリの仕組みとは?

 インスタンスに障害が発生すると、Oracleサーバは、次回のインスタンス起動時に自動的にリカバリを行います。このリカバリとは、前回のチェックポイント以降に生成されたREDOログレコードを適用していく動作です。

 従って、インスタンスリカバリ時間を短くするには、チェックポイントが頻繁に行われるように構成すればよいということになります。

 正解aのように、インスタンスリカバリにかけられる時間(秒)を設定すると、その時間内に収まるように、追加で実行される増分チェックポイントのタイミングが決定されます。また、正解cのようにREDOログファイルサイズが小さくなれば、追加のチェックポイントまでの時間が短縮されます。

 不正解となる選択肢b選択肢dは、チェックポイントやアーカイブログファイルが作成されていないためにログスイッチが待機している場合に有効な対応策です。

気を付けるポイント

Oracleサーバにおけるインスタンス障害時のリカバリの流れを再確認しておきましょう。

   問題ページへ


例題2

正解:a

参考:「リカバリ機能でOracleデータベースを復活させる

 REDOログメンバーが追加された直後は、同じREDOロググループのほかのメンバーと同期が取れていません。そのため、ステータスが「INVALID」になります。

SQL> SELECT * FROM V$LOGFILE;

GROUP# STATUS     TYPE        MEMBER                                             IS_
------ ---------- ----------- -------------------------------------------------- ---
     3            ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   NO
     2            ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   NO
     1            ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   NO

SQL> ALTER DATABASE ADD LOGFILE MEMBER
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01b.LOG'
  3  TO GROUP 1;
  
データベースが変更されました。

SQL> SELECT * FROM v$logfile;

GROUP# STATUS     TYPE        MEMBER                                             IS_
------ ---------- ----------- -------------------------------------------------- ---
     3            ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG   NO
     2            ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG   NO
     1            ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG   NO
     1 INVALID    ONLINE      D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01B.LOG  NO
        

 不正解となる選択肢bは、インスタンスの強制停止(SHUTDOWN ABORT)の後など、無効となった状態のときに発生します。選択肢cのNULLは正常な状態です。選択肢dは、V$LOGFILEビューではあり得ません。V$LOGFILEビューのSTATUS列がCURRENTなのであれば、現在LGWR(ログライタ)が書き込んでいるグループを示します。

気を付けるポイント

実際に実行していたらすぐに分かる問題ですね。できるだけ、実際の動作も検証しておいた方がよいでしょう。

   問題ページへ


例題3

正解:b

参考:「Oracleデータベースのバックアップを取得する

 RMAN(Recovery Manager)を使用したバックアップには「バックアップセット」と「イメージコピー」があります。

 バックアップセットは、複数のファイルをまとめてバックアップしたり、未使用ブロックを圧縮したり、変更されたブロックだけをバックアップ(増分バックアップ)したりすることができるバックアップタイプです。ディスクとテープのいずれにもバックアップを作成することができます。

 イメージコピーは、OSコマンドでコピーするのと同じバックアップタイプです。ディスクにのみバックアップを作成することができます(正解b)。増分バックアップに関してはレベル0のベースバックアップを作成することが可能です。

 バックアップに関しては、バックアップセットの方がメリットが大きいですが、イメージコピーは、バックアップファイルからの抽出作業がいらない分、リストアが高速です。

気を付けるポイント

RMANを使用したバックアップの性質は問題に出題されやすいので、よく確認しておきましょう。「レベル0のバックアップを取得できるものは?」ならバックアップセットとイメージコピーです。「増分バックアップができるのは?」といわれたら、バックアップセットと答えた方が無難です。

   問題ページへ


例題4

正解:b

参考:「リカバリ機能でOracleデータベースを復活させる

 Oracleサーバの起動には、NOMOUNT、MOUNT、OPENの3つの段階があります。

●NOMOUNT :初期化パラメータファイルを読み込み、インスタンス起動
●MOUNT  :制御ファイルのオープン
●OPEN   :データファイルとREDOログファイルのオープン

 制御ファイルが損失した場合は、MOUNTできません。NOMOUNTまでの起動になります。そのため、制御ファイルの再作成(CREATE CONTROLFILE)は、NOMOUNTで行うことになります(正解b)。また、RMANの場合、制御ファイルをリストアすることができますが、こちらもNOMOUNTで制御ファイルをリストアすることになります。

気を付けるポイント

Oracleサーバの起動時の動作が分かっていればすぐに答えられる問題ですね。関連としては、「『SYSTEM表領域に障害があると?』起動できるのはマウントまで」「『一時表領域に障害があると?』起動はオープンまでいける」というのもあります。

   問題ページへ


例題5

正解:a、c

参考:「Oracleのバックアップ/リカバリの仕組みとは?

 LOGGING属性は、REDOログの生成を制御する属性で、表領域やセグメントに設定できます。この属性が動作するのは、REDOログ生成を制御できるダイレクトパスモード(SQL*LoaderとINSERT INTO...SELECT文)、索引作成/再作成、コピー表作成のときです。

 正解cのとおり、表領域にLOGGINGとしてもセグメント側でNOLOGGINGとすれば上書きになります。また、正解aのとおり、UNDO表領域と一時表領域に設定することはできません。

SQL> SELECT tablespace_name,contents FROM dba_tablespaces
  2  WHERE  contents IN ('UNDO','TEMPORARY');

TABLESPACE_NAME CONTENTS
--------------- ---------
UNDOTBS1        UNDO
TEMP            TEMPORARY

SQL> ALTER TABLESPACE undotbs1 NOLOGGING;
ALTER TABLESPACE undotbs1 NOLOGGING
*
行1でエラーが発生しました。:
ORA-30021: UNDO表領域では操作はできません。


SQL> ALTER TABLESPACE temp NOLOGGING;
ALTER TABLESPACE temp NOLOGGING
*
行1でエラーが発生しました。:
ORA-03217: TEMPORARY TABLESPACEの変更用オプションが無効です。

 不正解となる選択肢bは、逆の性質を指摘してしまっています。LOGGING属性はREDOログを生成するモードです。選択肢dは、一見正解に見えるのですが、NOLOGGING属性は「常に」働くのではなく、REDOログ生成を制御できるダイレクトパスモード(SQL*LoaderとINSERT INTO...SELECT文)、索引作成/再作成、コピー表作成のときに働きます。

気を付けるポイント

コマンドを実行して初めて分かる動作は、問題になりやすいといえます。今回の問題のUNDOや一時表領域でエラーになるといった動作を含め、気になるものはいろいろとテストしておくとよいでしょう。

   問題ページへ


例題6

正解:a

参考:「Oracleデータベースの記憶域はどうなっている?

 データベースレベルのデフォルト設定は、DATABASE_PROPERTIESビューで確認できます。

●DEFAULT_TEMP_TABLESPACE :デフォルト一時表領域
●DEFAULT_PERMANENT_TABLESPACE:デフォルト永続表領域
●DEFAULT_TBS_TYPE :デフォルト表領域タイプ

 表領域を作成するときに「BIGFILE」というキーワードが含まれていないため、作成された表領域はSMALLFILE表領域になります(正解a)。BIGFILE表領域は、その名のとおり、最大8TBから128TBまでの大きなデータファイルと対応付けられる表領域です(ファイルは1つしか対応付けられません)。

 SMALLFILE表領域とBIGFILE表領域のどちらを使用するかは、データベースレベルで変更できるため、選択肢dは不正解です。

 ビューでは確認できませんが、Oracle9i Database以降では、表領域を作成するとデフォルトでローカル管理表領域が作成されます。そのため、選択肢bは不正解です。この資料からはその状態が分からないため、選択肢cのように明言することはできません。すべての表領域がローカル管理表領域かどうかは、DBA_TABLESPACESビューで確認が必要です。

SQL> SELECT tablespace_name,extent_management FROM dba_tablespaces;

TABLESPACE_NAME EXTENT_MAN
--------------- ----------
SYSTEM          LOCAL
UNDOTBS1        LOCAL
SYSAUX          LOCAL
TEMP            LOCAL
USERS           LOCAL
EXAMPLE         LOCAL
DATA01          LOCAL

気を付けるポイント

SMALLFILE表領域とBIGFILE表領域、ローカル管理表領域とディクショナリ管理表領域、自動セグメント領域管理と手動セグメント領域管理など、表領域タイプは対照的なものがいろいろと存在します。概要だけでも見直しておきましょう。

   問題ページへ


自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。