「ORACLE MASTER Silver Oracle Database 12c」資格を取得するための傾向と対策を紹介する連載。今回のテーマは、「領域の管理」「UNDOデータの管理」「データの並行性の管理」です。
ORACLE MASTER Silver Oracle Database 12cの攻め方
本連載では、「ORACLE MASTER Silver Oracle Database 12c」(以下、12c Silver)資格を取得するための「1Z0-062-JPN Oracle Database 12c Administration試験」(以下、12c Silver試験)の傾向と対策を紹介します。
初回は、ORACLE MASTERの資格制度や2017年8月に行われた12c Silver試験改訂のポイントを紹介しました。連載第2回から例題を使って、主要出題分野のポイントを押さえています。
今回は、領域の管理、UNDOデータの管理、データの並行性の管理について見ていきます。
領域の管理は、試験範囲が限られているので、正確に理解すれば確実な得点源になります。自動セグメント領域管理、圧縮、「セグメント・アドバイザ」、セグメント縮小が重点出題ポイントです。また、改訂前は再開可能領域割り当てと領域使用量の予防的な監視の出題がありましたが、改訂により、これらのトピックは試験内容チェックリストから除外されました。
あなたは、次のような条件の表(テーブル)を作成しようと考えています。
CREATE TABLE文の中で、どのオプションを使用しますか。
表の圧縮に関する問題です。表圧縮については、以前のリリースから少し変更があるので、要チェックです。また、この例題のように、複数の条件を提示されるタイプの出題はよくあります。このタイプの出題では、条件と選択肢の両方を見て検討するといいでしょう。
さて、例題の条件を見てみますと「大量のデータ」「ディスク領域を節約」という条件から圧縮のオプションが考えられます。また、オンライントランザクションで通常のデータ挿入、更新も頻繁に行うことから、通常のDMLも圧縮の対象となる高度な行圧縮のオプションが最適です。高度な行圧縮はアプリケーションに影響を与えません。
A. 基本表圧縮のオプションです。基本表圧縮では、「ダイレクト・パス・インサート」で挿入された行のみが圧縮の対象となります。
B. 正解です。高度な行圧縮のオプションです。
C. ALTER TABLE文のオプションで、セグメント縮小を行うときに使用します。セグメント縮小は、行データの削除による領域の断片化を解消する目的で使用します。COMPACTを付けないと同じタイミングで最高水位標の引き下げも行われ、結果、エクステントの解放も行われますが、半面、ロックが掛かるというデメリットがあります。COMPACTを付けると行を移動することで領域の断片化の解消は行われますが、最高水位標は変更されません。ロックを許容できるタイミングでCOMPACT句なしでこのコマンドを再発行し、最高水位標を引き下げます。
D. 「COLUMN STORE COMPRESS」という句からも分かるように、行圧縮ではなく、ハイブリッド列圧縮です。さらに「FOR QUERY」とあるので、データウェアハウス向けの圧縮です。
E. 透過的データ暗号化のオプションです。
次は、自動セグメント・アドバイザに関する例題です。
自動セグメント・アドバイザについて正しい説明を選択してください(2つ選択してください)。
自動セグメント・アドバイザは、自動化メンテナンスタスクの1つで、セグメント縮小の効果が期待できるオブジェクトを提案する機能です。手動でのセグメント・アドバイザと異なり、高度な行圧縮の効果が期待できるオブジェクトも提案します。
また、自動セグメント・アドバイザの分析対象は、次の通りです。
自動セグメント・アドバイザの分析対象は変更できませんので、これ以外のセグメントについて分析したい場合は、手動でセグメント・アドバイザを実行する必要があります。
A. 自動オプティマイザ統計収集により、自動的にオプティマイザ統計は取得されます。
B. 正解です。
C. 正解です。
D. セグメント縮小の推奨は出しますが、自動的に縮小まで行うわけではありません。
E. 実際のワークロードを元に、索引作成やパーティション化などを推奨する機能は、SQLアクセス・アドバイザです。
UNDOデータの管理については、まずはUNDOの仕組みや用語をしっかり確認した上で、UNDO関連の初期化パラメーターやコマンドを押さえておくとよいでしょう。UNDO保存保証やOracle Database 12cからの新機能である一時UNDOが頻出ポイントです。
UNDO表領域をAUTOEXTEND ONで作成しました。UNDO保存保証の設定はデフォルトのままです。また、UNDO_RETENTIONは1200に、TEMP_UNDO_ENABLEDはTRUEに設定しています。正しい説明はどれですか。
UNDO_RETENTIONとUNDO保存保証に関する正誤問題です。
ここで、UNDOの状態とUNDO保存期間の関係を整理しておきます。
また、この設問ではUNDO保存保証はデフォルトの設定とありますが、UNDO保存保証のデフォルトは「RETENTION NOGUARANTEE」、つまり「期限切れでないUNDO」であっても、非アクティブであれば、新規トランザクションのために上書きされる可能性があります。
A. アクティブなUNDOは決して上書きされることはありません。
B. RETENTION GUARANTEEに設定している場合の説明です。
C. 正解です。自動拡張の上限まで拡張したケースなど、期限切れでないUNDOは上書きされる可能性があります。
D. TEMP_UNDO_ENABLEDは一時UNDOを有効化するパラメーターですが、期限切れでないUNDOを保持するために新規トランザクションを一時表領域に書き込む機能ではありません。
次は、一時UNDOについての出題です。
あなたは一時表へのトランザクションが多いことに気付き、TEMP_UNDO_ENABLEDをTRUEに変更することにしました。どのような変化が想定されますか(2つ選択してください)。
一時UNDOは、一時表へのトランザクションにより生成されるUNDOを、通常の永続表へのトランザクションにより生成されるUNDO(「永続表のUNDO」と呼びます)と区別して管理するための機能です。一時UNDOはUNDO表領域ではなく一時表領域に格納します。また一時表へのトランザクションによるUNDOですから、永続表のUNDOと違い、REDOを生成する必要もありません。一時UNDOはTEMP_UNDO_ENABLEDパラメーターをTRUEに設定すると有効になりますが、デフォルトでは無効になっています。
A. 正解です。
B. REDOログの生成量は減ります。
C. 正解です。
D. 一時UNDO自体は生成するので、一時表へのトランザクションがロールバックできなくなるわけではありません。
出題数は多くはありませんが、ロックメカニズムやロック競合の監視、ロック競合の解消が出題されることがあります。DML時に取得されるロックの種類や、どのようなケースでロック待ちになるのか、といったことを一通り軽く確認しておくといいでしょう。
次のSQL文を実行したときに自動的に取得されるロックについて正しい説明を選択してください。
UPDATE employees SET job_id=10 WHERE employee_id=100;
INSERT、UPDATE、DELETE、MERGE、SELECT〜FOR UPDATEでは、変更される行に行ロックが取得され、トランザクションが終了するまで保持されます。また、その操作対象の表に対するDDL操作と競合しないように表ロックも取得されます。表ロックについては「行排他」「行共有」などのモードがあり、自動的に最適なモードのロックが取得されます。
設問の例では、「employee_id=100」の行に対する行ロックと、RXモード(行排他モード)の表ロックが取得されます。
なお、設問のような状況で、「他のセッションで、どのようなSQLを実行するとロック待ちの状態になるか」も確認しておくとよいでしょう。
A. 間違いです。
B. 間違いです。
C. 列ロックという種類のロックはありません。
D. 正解です。
E. 間違いです。
今回は、領域の管理、UNDOデータの管理、データの並行性の管理をテーマに見てきました。特に領域の管理とUNDOデータの管理を重点的に確認するとよいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.