1Z0-063 試験勉強＆自作問題 オラクルマスター Gold Oracle Database12c マルチテナントアーキテクチャ編 

マルチテナントアーキテクチャ編 

#目的
silver12c受験時に、参考書から自分で問題を予想することで得点源になるのでは？と思ったので適当に自作問題。

オラクルマスター試験勉強用に参考書を読んでいるが、圧倒的テキスト量のため自分用にまとめてOracleDatabaseに関する知識・技術を整理する。
公式ドキュメントを調べ、内容を補完する。

##※注意
あくまで、自作問題のため実際の試験とは何の関係もありません。
試験内容チェックリストを元に公式ドキュメントを調べ、問題を予想し、作成しています。

■[RMAN機能](https://qiita.com/caster3045/items/5a9122555b805b9faef4)

■[フラッシュバック機能](https://qiita.com/caster3045/items/4cbc9660966ba5a82785)

■[その他](https://qiita.com/caster3045/items/ef1504f35c14cdc417f5)
___

■CDB
Q：CDB\＄ROOTでRMAN>LIST FAILURE;コマンドを実行しました。
A：CDBルートデータベースの障害のみが表示される
　　⇒データ障害を診断して、CDB内の個々のPDBに対して修復を実行することはできない

Q：CDBでRMAN> select name from v\$tablespace;コマンドを実行しました。どのコンテナレベルまで表示されますか？
A：ルートコンテナからプラガブルデータベースまですべての表領域が表示される

Q：CDBとPDBの起動とシャットダウンについて
A：①CDBが制限モードでオープンされている時、PDBも制限モードでオープンする必要がある
　 ②CDBがマウント状態の時、PDBも自動的にマウント状態に移行する
　 ③CDBのインスタンス起動に合わせ、PDBをオープンしたい場合は、ALTER PULLUGABLE DATABASEコマンドでオープン/データベーストリガーを使用する

###■PDB
Q：CDBにてSQL> STARTUP コマンドを実行しました。起動トリガーはありません。どうなりますか？
A：①すべてのREDOログファイルがオープンする
　 ②ルートデータベースのみがREAD/WRITEモードでオープンする


Q：アーカイブログモードで実行されているCDBがあります。CDBにはPDB1、PDB2と二つのPDBが含まれています。PDB1に接続した状態で次のコマンドを実行しました。RMAN > BACKUP DATABASE PLUS ARCHIVELOG;コマンドの結果はどうなりますか？
A：バックアップに成功するが、アーカイブログは保存されず、PDB1のデータファイルのみがバックアップされる


Q：SYSDBA権限を持つユーザーでPDBに接続しています。SHUTDOWN IMMEDIATEコマンドを実行しました。PDBはどうなりますか？
A：PDBはマウントモードになる


Q：既存のCDBにPDBを作成したい。どのような方法があるか？
A：①シードPDBを使用する
　 ②既存PDBのクローニング
　 ③DBMS_PDBパッケージを使用して非CDBをPDB化する
　 ⇒作成ではないが、CDBから一度切断されたPDBを再接続することもできる

Q：PDBの一時表領域について
A：①各PDBは独自のデフォルト一時表領域を持つことが出来る
　 ②違うコンテナであれば同じ名前の一時表領域を持てる
　 ③PDBに一時表領域を設定していない場合、共有一時表領域が使用される
　　⇒STORAGE句のMAX_SHARED_TEMP_SIZEで各PDBで使用できる共有一時表領域のサイズの制限を設定できる

Q：PDBをアンプラグします。アンプラグするPDBはどの状態ですか？アンプラグ後はどのように扱えますか？
A：①PDBはクローズ(MOUNTモード)している必要があります
　 ②PDBは同じCDB、または別のCDBに再プラグできます
　　⇒ひっかけ問題　PDBは非CDBになるわけではありません。
　 
Q：PDBの一時表領域が破損(損失)しました。PDBはどうなりますか？また一時表領域はどうなりますか？
A：PDBはクローズしない。CDBが再度オープンされると一時ファイルが自動的に再作成される。

Q：PDBでのスケジューラについて
A：①PDBで定義されているジョブは、PDBがオープンしている場合にのみ実行される
　 ②スケジューラオブジェクトはDataPumpを使用して、エクスポートまたはインポートが可能

Q：11ｇデータベースをPDBとして移行します。移行の手順を示してください
A：①ソースデータベースのユーザー定義表領域を読取り専用にする
　 ②expdpユーティリティを使用し、VERSIONを12に設定し、完全トランスポータブルエクスポートを実行
　 ③ターゲットデータベースに新しいPDBを用意する
　 ④データファイルをターゲットデータベースにコピー、ダンプファイルをターゲットデータベースにエクスポートする
　 ⑤新しいPDBデータベースでData Pumpインポートユーティリティを起動し、DATAPUMP_IMP_FULL_DATABASEロールを使用して、完全なトランスポータブルインポートオプションを指定する
　 ⑥DBMS_PDS.SYNC_ODB関数を使用して、ターゲットコンテナデータベースのPDBを同期する

Q：PDBを削除したい
A：PDBはマウント（クローズ）またはアンプラグであること。

■コマンド
Q：ALTER SESSION SET CONTAINERコマンド
A：①CDB$ROOT、PDB$SEED、PDB名の指定（切替え）が可能
　 ②指定されたコンテナのログイン・トリガーは起動されない
　 ③トランザクションを複数のコンテナにわたって実行することはできない
　 ④共通ユーザーである必要がある

Q：ALTER PLUGGABLE DATABASE ... UNPLUG INTO文を使用してPDBを切断します。 前提条件を確認してください
A：①PDBは、少なくとも1回はオープンしている必要があります
　 ②現在のユーザーにはSYSDBAまたはSYSOPER管理権限が必要
　 ③PDBをクローズする
　　⇒ひっかけ問題：削除する場合はマウントorアンプラグの状態

Q：CDBをSTARTUPコマンドで起動します。各コンテナの状態を確認してください。
A：CDB\$ROOTは読み取り/書き込みモード。、PDB\$SEEDは読み取り専用モード。PDBはMOUNT状態で開かれます。

Q：CDBでDUPLICATEコマンドを実行し、データベースを複製したい。前提条件を示してください。
A：①補助インスタンスをCDBとして作成する必要があります。初期化パラメータファイルでenable_pluggable_database=TRUEを設定すること
　 ②SYSDBAまたはSYSBACKUP権限を持つユーザーとしてROOTコンテナに接続する

Q：SYSユーザーでルートコンテナに接続し、次のコマンドを実行しました。ユーザー、ロールの状態はどうなりますか？
SQL> CREATE USER C##ADMIN IDENTIFIED BY 1234;
SQL> CREATE ROLE C##CONNECT;
SQL> GRANT CREATE SESSION、CREATE TABLE、SELECT ANY TABLE TO C##CONNECT;
SQL> GRANT C##CONNECT to C##ADMIN CONTAINER = ALL;
A：①ルートコンテナでCREATE USERを実行した時のCONTAINER句はALLのため共通ユーザーがCDB、PDBすべてのコンテナに作成されます。
　 ②ルートコンテナでCREATE ROLEを実行した時のCONTAINER句はALLのため、共通ロールがCDB、PDBすべてのコンテナに作成されます。
　 ③3行目のCONTAINERはCURRENTレベルです
　 ④すべてのコンテナの共通ユーザーに共通ロールを付与します。
　 ⑤各PDBで3行目で付与された権限を使用できます。

___
■その他
Q：ローカルロールはローカルユーザー、共通ユーザーともに付与できますか？
A：できる。

Q：SYSユーザーとしてCDB$ROOTで①CREATE USERコマンド、②GRANT CREATE SESSIONコマンドを実行します。CONTAINER句はつけません。ユーザー、CREATE SESSION権限について各コンテナでの状態はどうなりますか？
A：①CDB\$ROOTでのCREATE USERのデフォルトはCONTAINER = ALLなのですべてのPDBで作成される。
　 ②GRANT文のデフォルトはCONTAINER = CURRENTのためCDB\$ROOTでのみCREATE SESSION権限を持つ。

Q：EM Expressを使用してプラガブルデータベースの作成、および管理、インスタンスの起動、停止などが実行できますか？
A：できない

■パラメーターなど
Q：パラメーターの設定。ALTER SYSTEM SET 'パラメーター' = TRUE SCOPE = BOTH;
　 ①CDBに接続した状態で実行した場合どうなりますか？
　 ② ①の後に、PDBに接続した状態でで実行した場合どうなりますか？
A：①ルートでTRUEが設定される
　 ②PDBレベルで設定される
　　⇒PDB固有レベルで設定できるパラメーターをルートで設定しても、PDBには反映されません。
　　⇒ルートで設定された値が優先されるわけではありません。デフォルトはCONTAINER = CURRENTであるためです。

Q：STATICS_LEVELパラメーターをALL SCOPEをSPFILEに指定して次のコマンドを実行しました。いつ適用されますか？
SQL> ALTER SYSTEM SET STATISTICS_LEVEL = ALL SID = 'xxxx' SCOPE = SPFILE;
A：STATICS_LEVELパラメータは、PDB2を再度開いたときにのみ、ALLになります。
　　⇒ひっかけ問題　ルートデータベースを再起動する。再起動しただけではPDBはまだマウント状態のため適用されていません。PDBをオープンしてください