難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。
OSS-DB Goldのサンプル問題(本番形式・解説付き)
OSS-DB Gold(LPI-Japan・OSS-DB Exam Gold(Ver.3.0・PostgreSQL))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(30問)の冒頭から抜粋したオリジナル問題です。当サイトは全345問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。
設問1
PITR で過去の時点まで戻して昇格したときの、タイムラインの扱いとして適切なものはどれか。
- 同じ時刻へ戻して2回昇格すれば、同じタイムラインの上に同じ状態が作られる
- タイムライン ID は据え置かれ、昇格した時点から WAL の番号だけが振り直される
- タイムライン ID が1つ進み、分岐を記録する .history ファイルが作られる(正解)
- WAL ファイル名の末尾8桁が、新しいタイムライン ID に書き換えられる
解説
昇格するとタイムライン ID が1つ進み、分岐を記録する .history ファイルが作られます。同じ時刻へ戻して昇格しても、別のタイムラインとして分かれます(根拠: 学習用テキスト 2-2 物理バックアップ ── pg_basebackup と PITR/タイムラインという考え方 [G1.2])。戻して昇格するたびに別のタイムラインへ分岐するので、同じ歴史にはなりません。昇格するとタイムライン ID は1つ進み、据え置かれることはありません。タイムライン ID が入るのは WAL ファイル名の先頭8桁です。
他の選択肢が誤りである理由
- 「同じ時刻へ戻して2回昇格すれば、同じタイムラインの上に同じ状態が作られる」戻して昇格するたびに別のタイムラインへ分岐するので、同じ歴史にはなりません。
- 「タイムライン ID は据え置かれ、昇格した時点から WAL の番号だけが振り直される」昇格するとタイムライン ID は1つ進み、据え置かれることはありません。
- 「WAL ファイル名の末尾8桁が、新しいタイムライン ID に書き換えられる」タイムライン ID が入るのは WAL ファイル名の先頭8桁です。
設問2
稼働統計ビューと、そこから読み取れる内容の組み合わせについて、適切なものを2つ選べ。
- pg_stat_archiver では WAL のアーカイブの失敗回数を確認できる(正解)
- pg_statio_all_tables ではテーブルごとの行の挿入数を確認できる
- pg_stat_progress_vacuum では実行中の VACUUM の進み具合が分かる(正解)
- pg_stat_bgwriter ではデータベースごとの接続数を確認できる
- pg_stat_wal では待機イベントの種別ごとの件数を確認できる
解説
pg_stat_archiver は failed_count などアーカイブの成否を、pg_stat_progress_vacuum は実行中の VACUUM の進捗を示します。行レベルの統計は pg_stat_all_tables、ブロックレベルは pg_statio_all_tables の担当です。(根拠: 学習用テキスト 5-6 その他の稼働統計ビュー [G2.1])行の挿入数は pg_stat_all_tables の n_tup_ins が持っています。接続数は pg_stat_database の numbackends が持っています。待機イベントは pg_stat_activity の wait_event_type と wait_event で見ます。
他の選択肢が誤りである理由
- 「pg_statio_all_tables ではテーブルごとの行の挿入数を確認できる」行の挿入数は pg_stat_all_tables の n_tup_ins が持っています。
- 「pg_stat_bgwriter ではデータベースごとの接続数を確認できる」接続数は pg_stat_database の numbackends が持っています。
- 「pg_stat_wal では待機イベントの種別ごとの件数を確認できる」待機イベントは pg_stat_activity の wait_event_type と wait_event で見ます。
設問3
設定ファイルの変更をサーバに再読み込みさせる SQL 関数の名前を入力せよ(関数名だけを答えること)。
入力形式(コマンドを打ち込んで答える問題です)
pg_reload_conf()(正解)
別解: pg_reload_conf / PG_RELOAD_CONF() / SELECT pg_reload_conf(); / select pg_reload_conf();
解説
設定の再読み込みは SELECT pg_reload_conf(); で行います。pg_ctl reload や kill -HUP でも同じ結果になります。(根拠: 学習用テキスト 10-1 パラメータの反映方法 ── 有効化に必要なアクション [G3.2])
設問4
idle_in_transaction_session_timeout を超えたセッションについて、サーバログに現れる内容として適切なものはどれか。
- ERROR のレベルで記録され文だけが中断される
- WARNING のレベルで記録され接続はそのまま保持される
- LOG のレベルで記録され次の文の実行まで保持される
- FATAL のレベルで記録されセッションが切断される(正解)
解説
idle_in_transaction_session_timeout の超過は FATAL となり、セッションごと切断されます。(根拠: 学習用テキスト 11-1 タイムアウト系の3つのパラメータ [G4.1])ERROR で文だけが失敗するのは statement_timeout と lock_timeout の側です。警告にとどめる扱いではなく、超過したセッションは切られます。記録だけを行って接続を残す扱いではありません。
他の選択肢が誤りである理由
- 「ERROR のレベルで記録され文だけが中断される」ERROR で文だけが失敗するのは statement_timeout と lock_timeout の側です。
- 「WARNING のレベルで記録され接続はそのまま保持される」警告にとどめる扱いではなく、超過したセッションは切られます。
- 「LOG のレベルで記録され次の文の実行まで保持される」記録だけを行って接続を残す扱いではありません。
設問5
肥大したテーブルの実ファイルを縮めて、領域を OS へ返したい。実行するものとして適切なものはどれか。
- VACUUM を実行し、デッドタプルを回収してファイルごと書き直す
- VACUUM FULL を実行し、テーブルを新しいファイルへ書き直す(正解)
- 自動バキュームのしきい値を下げ、対象のテーブルを頻繁に回す
- ANALYZE を実行し、テーブルの統計情報を取り直す
解説
実ファイルを縮めて OS に領域を返すのは VACUUM FULL です。テーブルを新しいファイルへ書き直すため ACCESS EXCLUSIVE を取り、参照もブロックします(根拠: 学習用テキスト 2-3 VACUUM ── 不要行の回収/VACUUM と VACUUM FULL は別物 [G1.2])。VACUUM はデッドタプルを再利用可能にするだけで、末尾の空き以外はファイルに残ります。自動バキュームは VACUUM FULL を実行しないので、肥大は解消されません。ANALYZE が更新するのは統計情報で、ファイルの大きさには手を付けません。
他の選択肢が誤りである理由
- 「VACUUM を実行し、デッドタプルを回収してファイルごと書き直す」VACUUM はデッドタプルを再利用可能にするだけで、末尾の空き以外はファイルに残ります。
- 「自動バキュームのしきい値を下げ、対象のテーブルを頻繁に回す」自動バキュームは VACUUM FULL を実行しないので、肥大は解消されません。
- 「ANALYZE を実行し、テーブルの統計情報を取り直す」ANALYZE が更新するのは統計情報で、ファイルの大きさには手を付けません。
続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。
登録なしで50問解く