PREPARATION
受験対策

Goldの例題解説「障害復旧 - 開発者向けオプション」

今回は、Goldの「障害復旧 - 開発者向けオプション」からの出題です。

例題

4.03

あるユーザテーブルの参照時に、以下のエラーメッセージが出力された。
「ERROR: invalid page header in block 0 of relation base/16408/16421」
この時の対処として最も適切なものを1つ選びなさい。

  1. データベース全体に対してVACUUMを実行する

  2. 該当のテーブルファイルを削除し、PostgreSQLを再起動する

  3. zero_damaged_pages を on に設定して再度テーブルを参照する

  4. 該当のシステムテーブルに対してCLUSTERを実行する

  5. PostgreSQLをシングルユーザ状態で起動し、該当のテーブルに定義されたインデックスに対してREINDEX INDEXを実行する

※この例題は実際のOSS-DB技術者認定試験とは異なります。

解答と解説

質問文にあるエラーメッセージは、該当のテーブルファイルのヘッダ情報が破損していることを示しています。

ヘッダ情報が破損している場合、該当のテーブルに対して全てのページをスキャンする必要のある、選択肢A, D, EのようなSQLコマンドを実行することはできません。
また、選択肢Bのように、直接ファイルを削除して再起動しても状況は悪化するだけです。
真に必要でない限り、PostgreSQLのファイルを直接操作することはお勧めしません。

上記より選択肢A, B, D, Eは不正解になり、正解はCということになります。

選択肢Cのzero_damaged_pagesは、開発者向けのオプションです。
通常の運用では、off に設定しておき、必要なとき(本題のように
ファイル破損からの復旧時など)に、SET文を用いて on に変更するとよいでしょう。

=# SET zero_damaged_pages TO on;

なお、本パラメータをonに設定すると、破損があると判断されるページをゼロで埋める挙動をとります。
つまり、該当のページに含まれるデータは復旧できなくなります。
利用に際しては、本パラメータをonにすることの影響(破損がないページの
データのみ復旧でき、破損があるページのデータは復旧できない)を理解した上で、最終手段として利用してください。
http://www.postgresql.jp/document/10/html/runtime-config-developer.html#GUC-ZERO-DAMAGED-PAGES

正解は C です。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors