本稿ではOracle認定試験の1つであるORACLE MASTER Gold DBA 2019で必要とされる知識のうち,見直すべきポイントをまとめます。下記のロードマップもご参照ください。

Oracleのデータ保護
NOARCHIVELOGモードでSHUTDOWN ABORTしたらどうなるか
通常通りインスタンスリカバリが行われる。アーカイブがないだけで,オンラインログはあるから。
「一貫性バックアップを取得するにはNOARCHIVELOGモードにする必要がある」は正しいか
正しくない。ARCHIVELOGモードでも一貫性バックアップは取得可能。非一貫性バックアップを取得するにはARCHIVELOGモードでなくてはいけないというだけ。
SYSBACKUPで可能な操作の覚え方
- 表領域の作成
- 任意の表(ユーザのデータ)のCRUD
はできないと覚えてしまう。これ以外はできちゃう。
イメージ形式のバックアップは暗号化できるか
できない
イメージ形式のバックアップはマルチセクションバックアップできるか
できる
リストア処理が不要なバックアップ形式
イメージコピー形式。バックアップセットはRMAN独自形式でそのままではOracleが読めないため,restoreで元のファイルに展開する必要がある。一方で,イメージコピー形式はデータファイルと同じ形式のため,既存のファイルを消してコピーを置き換えるか,RMANのSWITCH DATAFILE TO COPYコマンドで参照先を切り替えるだけで済む。
高速リカバリ領域の容量を削減するためにできることを2つ挙げよ
RMANのCONFIGUREコマンドで
- RETENTION POLICY(REDUNDANCY nやRECOVERY WINDOW OF n DAYSなど)
- ARCHIVELOG DELETION POLICY(BACKED UP 2 TIMES TO SBTやSHIPPED TO ALL STANDBYなど)
を設定する。ちなみに,SHIPPED TO ALL STANDBYはData Guard環境においてスタンバイ側に全て送られたアーカイブログは削除してもよいポリシーを表す。
RMANの永続構成の設定値を確認するコマンド
RMAN SHOW ALL。V$RMAN_CONFIGURATIONからも確認可能。
RMAN SHOE PARAMETERやRMAN LIST PARAMETERのような出鱈目コマンドには騙されないように。
RMANの永続化設定は通常どこに保存されるか
制御ファイル。リカバリカタログを利用している場合はカタログにも同期される。
RMANリカバリカタログを利用する主な差別化ポイントを3つ述べよ
- RMANストアドスクリプトの利用
- AT句を指定したREPORT SCHEMAコマンドの利用
- KEEP FOREVER句の利用(特定のバックアップセットを保存ポリシーから除外して永続化)
RMANリカバリカタログの部分再同期化と完全再同期化の差分は何か
物理スキーマに関するメタデータ(データベースの構成変更に関するデータ)
BACKUP DATABASEでUNDO表領域は対象になるか
なる
BACKUP DATABASEでオンラインログファイルは対象になるか
ならない。全部処理してからバックアップすると理解する。
BACKUP DATABASEでアーカイブログファイルは対象になるか
ならない。PLUS ARCHIVELOGを指定するとなる。
BACKUP DATABASEで初期化パラメータファイルは対象になるか
SPFILEはバックアップされ,PFILEはバックアップされない。
BACKUP DATABASEでアラートログファイルは対象になるか
ならない
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUTでは何が削除されるか
バックアップされたアーカイブログ。バックアップ中のログも拾うためにログスイッチも実行する。
誤動作で削除してしまったバックアップを確認する方法
- CROSSCHECK BACKUP
- LIST EXPIRED
を実行する。LIST OBSOLETEは保存ポリシーで不要と判断されたバックアップを表示する。
テープバックアップでも未使用ブロックの圧縮は可能か
Oracle Secure Backupであれば可能
マルチセクションバックアップでは連続するブロックで区切るか
区切る。データファイルを頭から順に切り分けていく。
BACKUP DEVICE TYPE DISK COPIES 3 DATAFILE 7を説明せよ
データファイル7のバックアップをディスク上に3つ作成する
BACKUPコマンドのKEEPオプションで取得したバックアップの特徴を説明せよ
復旧作業に必要なファイル(バックアップ前後のログファイルや制御ファイル等)を含む包括的なバックアップとなる
「BACKUP RECOVERY AREAにFORCEを付けると全てのファイルをバックアップする」は正しいか
正しくない。あくまでもリカバリー関連のファイルを最適化なし(バックアップ済みかどうかは気にしない)でバックアップする。
高速リカバリ領域に限らず全てのリカバリ関連のファイルをバックアップするコマンド
BACKUP RECOVERY FILES
BACKUP RECOVERY AREAはフラッシュバックログをバックアップするか
しない。そもそもオンライン系(UNDO)はバックアップしないと理解する。
BACKUP RECOVERY AREAはオンラインログファイルをバックアップするか
しない。そもそもオンライン系はバックアップしないと理解する。
ユーザ管理の表領域バックアップでは表領域に制限をかける必要はあるか
ある。バックアップモードに設定する。
ユーザ管理のアーカイブログファイルはどのように保存すればよいか
ALTER SYSTEM ARCHIVE LOG CURRENTでログスイッチを実行する
「O/Sユーティリティによるバックアップセットをリカバリカタログに追加できる」は正しいか
正しくない。そもそもバックアップセット自体がRMAN独自の形式なのでO/Sユーティリティでバックアップセットは作成できない。
DB_BLOCK_CHECKSUMとDB_BLOCK_CHECKINGの違いを説明せよ
- DB_BLOCK_CHECKSUM:ON/OFFを司る。OFF(FALSE)/TYPICAL(TRUE)/FULLを指定可能。
- DB_BLOCK_CHECKING:程度を司る。OFF(FALSE)/LOW/MEDIUM/FULL(TRUE)を指定可能。
ブロックメディアリカバリでは稼働中の何かに制限をかける必要はあるか
ない。修復中のブロックだけが影響を受ける。
RESTORE/RECOVERのために何かの制限をかける必要はあるか
ある。IMMEDIATE等でOFFLINEにする。
NOARCHIVELOGモードの差分増分バックアップ復旧時に気を付けるべきことは何か
RESTORE後にNOREDO付きのRECOVERを実行する必要がある点。通常のNOARCHIVELOGモードの復旧はRECOVERできないが,差分増分を適用するためにNOREDO付きでREVOVERする点が厄介。ARCHIVELOGモードでは差分増分バックアップを自動適用してくれていた点と対照的。
バックアップからSPFILEを作成するコマンド
RESTORE SPFILE FROM AUTOBACKUP。CREATE SPFILE FROM AUTOBACKUPではないため注意。
メモリからSPFILEは復元可能だが,PFILEはどうか
復元可能
「全ての制御ファイルを損失した場合,必ずRESETLOGSする必要がある」は正しいか
正しくない。トレースファイル経由で制御ファイルを再作成するとRESETLOGSは不要になる。なお,制御ファイルをRESTOREしたり,REDOロググループが全て損失してRESTORE→RECOVERしたりした場合には不完全バックアップとなるため,RESETLOGSが必要になる。
フラッシュバックデータベースとデータベース・ポイントインタイム・リカバリを説明せよ
- フラッシュバックデータベース:UNDO(戻し)+REDO(進み)で復旧。完全リカバリ
- データベース・ポイントインタイム・リカバリ:バックアップ(戻し)+REDOの一部(進み)による不完全リカバリ
表のリカバリではターゲットデータベースはMOUNTモードにする必要はあるか
ない。ターゲット側なのでimportを取り組むために読み書き可能でオープン状態でなくてはいけない。ソース側もMOUNT状態にする必要はない。
RMANによる表領域のポイントインタイム・リカバリでは補助インスタンスの準備は必要か
必要。RECOVER TABLESPACEコマンドのAUXILIARY DESTINATIONに補助インスタンスを作成するディレクトリのパスを指定する。
RMANによる表領域のポイントインタイム・リカバリはSYSTEM表領域に適用できるか
できない
RMANによる表領域のポイントインタイム・リカバリはSYSTEMユーザが所有するオブジェクトを含む表領域に適用できるか
できる
RMANによる表領域のポイントインタイム・リカバリはSYSユーザが所有するオブジェクトを含む表領域に適用できるか
できない
RMANによる表領域のポイントインタイム・リカバリはUNDOセグメントを含む表領域に適用できるか
できない
UNDOとフラッシュバックログは何が違うか
項目 | UNDO | フラッシュバックログ |
---|---|---|
用途 | TX取り消し/一貫性読み取り | リカバリ |
格納場所 | UNDO表領域 | 高速リカバリ領域 |
保存内容 | 論理的な差分(前の値など) | 物理的な差分(ブロックの差分など) |
有効範囲 | TX/SQL | データベース全体 |
つまり「フラッシュバックログはUNDO情報を利用している」は正しくない。
フラッシュバックデータベース実行後はRESETLOGSする必要はあるか
ある
誤って表領域を削除してしまった場合,フラッシュバックデータベースで取り戻せるか
取り戻せない。「今あるデータファイル」を元に戻す機能であって,存在しなくなったデータファイルを新しく作り直すことはできないため。
クロスプラットフォームのデータ転送で,データベースと表領域は何か制限は違うか
- データベース:エンディアンが同じである必要がある
- 表領域:異なるエンディアンでも転送可能
PULLベースの複製とPUSHベースの複製でネットワーク転送量に差はあるか
ある。PULLベースであればバックアップセットを使った圧縮処理等を利用できるため,ネットワーク転送量は少なくなる。
Grid Infrastructure
「ASMはデータベースのエクステント割当て管理を行う」は正しいか
正しくない。ASMが管理するのはASMエクステントであって,データベースのエクステントではない。
Grid Infrastructureのインストール時にはORACLE_HOMEは必須か
必須ではない
ASM管理に対応するOSグループを3つ挙げよ
- OSASM(ASMインスタンスに対する完全な管理権限)
- OSDBA(ASMインスタンスに対するSYSDBA権限)
- OSOPER(ASMインスタンスに対するSYSOPER権限)
なお,Databaseには通常のOSDBA/OSOPERが対応する。
Oracle Preinstallation RPNパッケージでは最小構成の要件が満たされているかチェックするか
しない。あくまでもGrid InfrastructureおよびOracle Databaseのインストールに必要なRPMパッケージをダウンロードしてインストールしてくれる。Linux側の世界の話。あとは
- OSユーザとしてoracle
- OSグループとしてoinstall/dba
- カーネルパラメータの設定(sysctl.conf)
- シェル制限(linits.conf)
を行う。
Oracle Database関連のグループ2つと,その拡張グループ4つを挙げよ
- OSDBA
- OSOPER
がメインで,
- OSBACKUPDBA(BACKUP)
- OSDGDBA(Data Guard)
- OSKMDBA(暗号化)
- OSRACDBA(RAC)
が拡張グループ
ORACLE_BASE/ORACLE_HOMEとデータファイルの置き場の関係を説明せよ
- ORACLE_BASE
- product
- 19.0.0
- dbhome_1(ORACLE_HOME)
- 19.0.0
- oradata(データファイル置き場)
- diag(診断データ)
- admin(管理用)
- product
のようになっている
「サイレントインストールを実行することでrootスクリプトを自動実行できる」は正しいか
内容としては正しいが,対話型インストールでもrootスクリプトは自動実行できるため,選択肢としては正しくない
DBCAで作成するテンプレートには物理データファイルは含まれるか
含まれる
OPatchはroot権限で実行する必要はあるか
ない。ソフトウェアごとに実行する必要があるのでソフトウェア所有者と覚える。root権限で実行しなきゃいけないのはopatchauto。Grid InfrastructureのアップグレードもGrid Infrastructureソフトウェア所有者で実行する。
OPatchはGrid InfrastructureとOracle Databaseホームの両方にパッチを適用するか
それぞれ別にopatchコマンド経由で実行する必要がある
RURは最大何回提供されるか
2回
12c/18c/19cに対応する旧バージョンは何か
- 12c:12.2.0.1
- 18c:12.2.0.2
- 19c:12.2.0.3
従来モデルでは4桁を利用していましたが,新モデルでは3桁になります。
「年次モデルでは1年ごとにRU,四半期ごとにRURを提供する」は正しいか
正しくない。RUもRURも四半期ごとに提供される。同一RUに対するRURは2回まで。年に1回なのは通常のリリース。
Oracle Restartスタックの起動と停止のコマンド
- 起動:crsctl start has
- 停止:crsctl stop has
hasはHigh Availability Servicesの頭文字と覚える。
SQL*PLUSからOracle Restartスタックのデータベースインスタンスを停止すると何が起きるか
Restart側で停止したときと同様の挙動になる。すなわち,異常終了とはみなされない。
Oracle Restartではユーザが作成したアプリケーションは管理できるか
管理できない(カスタムリソースを使えば管理できるがGold DBAの範囲外)
Oracle Restartに対するデータベースの追加とディスクグループの追加の仕様の違いを説明せよ
- データベースの追加:手動では追加しない。初期化パラメータSERVICE_NAMESで追加してはダメ。
- ディスクグループの追加:手動で追加してもよい。CREATE DISKGROUPで追加してOK。
DBUAではアップグレード前情報ツールスクリプトの手動実行は必要か
不要
DBUAではDatabaseを読み取りモードにする必要はあるか
ない。むしろDBUAがDatabaseを変換できるように書き込み可能にする必要がある。
CDB構成でDBUAを利用してもPDBは手動実行する必要はあるか
ない。自動アップグレードされる。
DBUAによるアップグレード後にORACLE_HOMEを変更する必要はあるか
ある。自動ではやってくれない。
DBUAはRMANリカバリカタログをアップグレードするか
しない
DBUAによるアップグレード後に手動でアップグレードする必要のあるユーザ表はあるか
ある。Oracle管理タイプに依存するユーザ表はutluptabledata.sqlコマンドを実行する。
utlはUtilityの略です。
DBUAによるアップグレード後に新しいORACLE_HOMEにあるopatchコマンドを実行する必要はあるか
ある。DBUAはパッチ適用まではしてくれないため。
DBCAにデータ移行機能はあるか
ない
新機能系
「Oracle Database 18c以降に高速ホームプロビジョニングが可能になった」は正しいか
正しくない。そもそも高速ホームプロビジョニングはGrid Infrastructureの機能であり,Grid Infrastructure 12.1.0.2で導入された。ただし,Oracle Databaseホームのプロビジョニングも可能である点には注意。
「Oracle Database 18c以降にRPM経由でOracleソフトウェアがインストール可能になった」は正しいか
正しい
RPM経由でのインストールはroot権限で実行する必要はあるか
ある
高速ホームプロビジョニングの対象にはGrid Infrastructureのインストールは必須か
必須ではない
高速ホームプロビジョニングはin-placeか
違う。out-of-placeである。
パフォーマンス系
「自動メモリー管理を有効にするとSGAとPGAが自動調整される」は正しいか
正しい。自動メモリー管理は自動共有メモリー管理(SGA)と自動PGAメモリー管理から構成されると理解する。
「自動メモリー管理を有効にするとSGA内部とPGA内部が自動調整される」は正しいか
正しい。自動メモリーを有効にすると自動共有メモリー管理と自動PGAメモリー管理相当の機能を発揮すると理解する。
V$SESSION_EVENTとV$SESSION_WAITの過去情報蓄積の仕様の違いを説明せよ
- V$SESSION_EVENT:過去情報の蓄積を表示する
- V$SESSION_WAIT:過去情報の蓄積を表示しない(現在のセッションの待機中イベントのみ)
ADRとAWRの違いを簡単に説明せよ
- ADR:障害管理ツール(diagディレクトリのイメージ)
- AWR:性能管理ツール(SYSAUX領域のイメージ)
ハード解析とは何か
SQLの解析のこと。共有プールを利用する。
「チューニングが不十分なSQLを探すためにSQLチューニングアドバイザを使う」は正しいか
正しくない。実績を元に判断するために自動データベース診断モニターなどを使う。
表のオプティマイザ統計に含まれるのはブロック数とエクステント数のどちらか
ブロック数。直接的にクエリの見積もりに跳ねるため。
DML実行時にオプティマイザ統計収集は自動実行されるか
されない
「SQLプロファイルはデータディクショナリに格納される」は正しいか
正しい
SQLチューニングアドバイザとSQLアクセスアドバイザで索引に関する推奨事項を提示するのはどちらか
両方。以下のようにサクッと覚えてしまうのが早い。
- SQLチューニングアドバイザ
- 索引の作成/削除
- SQL文の書き換え
- オプティマイザ統計の収集
- SQLプロファイルの利用
- アクセスアドバイザ
- 索引の作成/削除
- パーティションの作成/削除
- マテリアライズド・ビューの作成/削除
マルチテナントアーキテクチャ
「DBMS_PDB.DESCRIBEをCDB上で実行することでDMLファイルが得られる」は正しいか
正しくない。CDBではなくPDBで実行する。
DBMS_PDB.DESCRIBEで.xmlではなくデータ入りの.pdbは生成できるか
できない
DBMS_PDB.DESCRIBEはアンプラグ済みのPDB上で実行できるか
できないらしい。非CDB上ではできるのに。
12cより前のバージョンでDBMS_PDB.DESCRIBEは使えるか
使えない
PDBの作成方法とDBCAの動作モードの対応をまとめよ
PDB作成方法 | 対話型モード | サイレントモード |
---|---|---|
シードPDBから作成 | ○ | ○ |
ローカルクローン | ○ | ○ |
リモートクローン | × | ○(19c〜) |
プラグ(接続) | ○ | ○ |
再配置(別CDBからの移動) | × | ○(19c〜) |
「対話型モードではリモートと再配置ができない」と覚えてしまう。リモートクローンが可能になったのは大きく,例えばRMANを利用したリモートクローンでは補助インスタンスの事前準備が必要になっていた。ただし,DBCAを使ったとしてもデータベースリンク用のユーザの作成は必要になる点に注意する。複製先(ローカル)→複製元(リモート)のデータベースリンクの作成は自動で行なってくれる。
DBCAによるリモートクローンでは完了後のPDBはどの状態か
オープン状態
DBCAによるリモートクローンではクローン先にあらかじめPDBを作成しておく必要はあるか
ない
CDBルートに接続してstartup/shutdownすると何が起きるか
すべてのPDBが起動/停止する
CDBルートに接続してDBMS_STATSを実行すると何が起きるか
CDBルートのオプティマイザ統計だけが取得される
CDBルートに接続してexpdbを実行すると何が起きるか
CDBルートがエクスポートされるだけで,中のPDBはエクスポートされない。そもそもDataPump自体でCDBやシードPDBのエクスポートは想定されていない。
CDBを再起動するとPDB$SEEDはどのような状態になるか
READ ONLYで起動される。PDBはCDB_PDB_SAVED_STATESの設定がないと起動しない。
CREATE PLUGGABLE DATABASEで作成したPDBの状態は何か
クローズ状態
CDB間でアプリケーションコンテナをクローニングした後の状態は何か
クローズ状態(複製元はクローズしていてもよい)
ローカルUNDOモードへの変更はデータベース作成後でも可能か
可能。アップグレードモードにしてCDB上でALTER DATABASE LOCAL UNDO ONを実行すればよい。
RMANによるDUPLICATEをまとめよ
- CDB全体(補助インスタンスの初期化パラメータにenable_pluggable_database=TRUEを設定する必要がある)
- CDBと一部のPDB(1.と同様で複数PDBも対応可能)
- 既存CDBに対するPDB(1つのPDBのみ対応)
非CDBからPDBへのDUPLICATEは対応していないため注意。
マルチテナント環境で新規ユーザを作成するときはc##を付ける必要はあるか
必ずしもある訳ではない。共通ユーザはデフォルトで必要。ローカルユーザはいつでも不要。
アプリケーションルートはロックダウンファイルを作ることはできるか
できる
アプリケーションルートは制御ファイルのバックアップを作ることはできるか
できない
CDBでBACKUP PLUGGABLE DATABASEできるか
できる。PLUGGABLEに惑わされるな。
マルチテナント環境のフラッシュバックデータベースではローカルUNDOモードにする必要はあるか
ない
マルチテナント環境のフラッシュバックデータベースではマウント状態にする必要はあるか
ある
PDBフラッシュバックデータベースでは補助インスタンスは作成されるか
共有UNDOモードの場合は作成される
Data Pumpによるマルチテナント環境のデータ移行は異なるバージョンをサポートしているか
サポートしている
Data PumpではPDBから非CDBへのデータ移行はできるか
できる。逆もできる。
OSユーティリティを使った表領域のバックアップで何か制限はあるか
表領域はバックアップモードにする必要がある
うっかりミス防止
- テープ機器はSBTだがTAPEとしないこと
- フラッシュバックトランザクションとフラッシュバックトランザクション問い合わせなど,フラッシュバックテクノロジーのうち「問い合わせ」の付くものと付かないものを混同しないこと(例えばフラッシュバックトランザクション問い合わせの場合はFLASHBACK_TRANSACTION_QUERYビューから過去実行された更新処理やそれを打ち消すSQLを取得できるが,トランザクションの依存関係を整理して取り消すものではない)
- フラッシュバックデータベースは,データファイルや表領域の削除は戻せない点
コメント