Oracle Database Gold 12c 試験勉強用 コマンドメモ

#Oracle Database Gold 12ｃ 試験範囲内のコマンドメモ

##目的
・参考書の各所に散らばっており復習しにくいため忘れがちになるためその防止。
・設定値のデフォルト値を把握するため。
・参考書の説明では試験準備として不足しているため公式ドキュメントの確認

※CDB、PDBは別でまとめるため割愛


###RMAN
###RMANへの接続
■RMANクライアントの起動のみ
　　`rman`　

■RMANクライアントを起動しターゲットデータベースに接続を確立する場合
<font color="Red">※シングルクォート「'」とダブルクォート「"」ではさむ点に注意</font>　
　　`rman TARGET /`　case ①,②,③

　　case ①
　　　`sys/<パスワード>@<ネットサービス名>`
　　　　SYSユーザーでターゲットデータベースに接続。パスワード認証を用いたリモート接続。

　　case ②
　　　`'"<ユーザー名>/<パスワード>@<ネットサービス名> AS SYSBACKUP "'`
　　　　パスワード認証を用いたリモート接続。

　　case ③
　　　`'"/ as SYSBACKUP"'`
　　　　OS認証を用いたローカル接続。

■RMANプロンプトからデータベース接続を確立する場合
　　`RMAN> connect target /`　→ 明示的にas sysdbaと宣言した場合と同じ扱いとなる。
　　　パスワード認証を用いたリモート接続の場合は上記の「case ②」と同様
___
###RMANの永続設定
**SHOW ALL;**コマンドを使用することで、ターゲットデータベース用に設定された現在の値を確認出来る。

■<font color="Blue">冗長性</font>を基準に保存ポリシーを設定する。　※デフォルト
　　`CONFIGURE RETENTION POLICY TO REDUNDANCY <冗長数> `
　　　デフォルトは1。直近のバックアップ1つとバックアップ取得後に出力されたアーカイブログファイル。

■<font color="Blue">リカバリ期間</font>を基準に保存ポリシーを設定する。　　
　　`CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF <期間> DAYS `

■デフォルトのバックアップ<font color="Blue">出力先デバイスを指定</font>できる。
　　`CONFIGURE DEFAULT DEVICE TYPE TO { DISK | SBT }`
　　<font color="SlateGray">※出力先はデバイスに対して指定している点に注意。</font>
　　BACK UPコマンドの指定の方が優先されます。
　　**DISK(デフォルト)を指定した場合。**
　　→※<font color="Red">リカバリ領域が有効</font>になっている場合、デフォルトのバックアップ場所は<font color="Red">高速リカバリ領域。</font>
　　→有効でない場合は、デフォルトでディスク上のOS固有のディレクトリになる。
　　
■バックアップ出力先ディレクトリおよびファイル名を指定する。
　　`CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT <出力先ディレクトリ> <ファイル名およびフォーマット指定子>`
　　<font color="SlateGray">※BACK UPコマンドの指定の方が優先されます。</font>

■デバイスタイプレベルでのデフォルトのバックアップ形式の指定
　　`CONFIGURE DEVICE TYPE [ DISK | SBT ] BACKUP TYPE TO [[ COMPRESSED ] BACKUPSET | COPY]`
　　**デフォルトはバックアップセット**
　　COMPRESSED　BACKUPSET：圧縮されたバックアップ形式。後述。
　　COPY：イメージコピー形式。後述。

■制御ファイルとSPファイルの自動バックアップを有効にする。
　　`CONFIGURE CONTROLFILE AUTOBACKUP ON`　
　　**デフォルトでは無効になっている。**
　　<font color="SlateGray">BACKUPコマンドまたはCOPYコマンドの実行後に、制御ファイルとSPFILEのバックアップがRMANによって自動的に作成される。デフォルトでは高速リカバリ領域に保存される。</font>

■バックアップの最適化
　　前回のバックアップから変更がないと考えられるデータファイル(読取り専用表領域、オフライン表領域など)のバックアップをスキップする。
　　`CONFIGURE BACKUP OPTIMIZATION ON`

■永続設定のリセット
　　CLEARコマンドを使用することでデフォルト値に戻せる。
　　例：RMAN > CONFIGURE CONTROLFILE AUTOBACKUP <font color="Blue">CLEAR</font>

___
###リカバリカタログ
■リカバリカタログの作成
　　`CREATE_CATALOG`
　　ベース・リカバリ・カタログ または仮想プライベート・カタログにすることができます

■(rcownerとして)リカバリカタログ用データベースに接続
　　`CONNECT CATALOG rcowner/PASSWORD@rcat`

■ターゲット・データベースをリカバリ・カタログに登録
　　`REGISTER DATABASE`
　　ターゲット・データベースのメタデータをRMANでメンテナンスできるようになる。
　　解除する場合はUNREGISTER DATABASE
　　<font color="Red">※**重複するDBID**が見つかると失敗します。</font>
　　→既存のデータベースをコピーした場合
　　→バックアップをリストアし新しいDBを作成した場合


■DBNEWIDユーティリティを起動 + 接続
　　`nid TARGET = <ユーザー名>/<パスワード>@<ネットサービス名>`

■リカバリ・カタログ・スキーマとターゲット・データベース制御ファイルとのメタデータの完全再同期化
　　`RESYNC CATALOG`
　　**現状、次の場合に実行します。**
　　<font color="SlateGray"> ●再同期化を自動的に実行するRMANコマンドを実行したときに、リカバリ・カタログが使用不可能な場合。</font>
　　
　　<font color="SlateGray"> ●ターゲット・データベースがARCHIVELOGモードで実行されている場合。これは、オンラインREDOログ・スイッチが発生するときや、REDOログをアーカイブするときにリカバリ・カタログが自動的に更新されないためです。</font>

　　<font color="SlateGray"> ●ターゲット・データベースの物理構造に、表領域の追加または削除などの変更を行った場合。ログのアーカイブの場合と同様に、物理スキーマを変更した場合も、リカバリ・カタログは自動的には更新されません。</font>

　　<font color="SlateGray"> ●RMANが、スタンバイ・データベースにTARGETとして接続されている場合。このデータベースで実行されたRMAN操作に関するメタデータを使用してリカバリ・カタログを更新する場合</font>

　　<font color="SlateGray"> ●RMANが、スタンバイ・データベースにTARGETとして接続されている場合。プライマリ・データベースでの物理的な変更に関するメタデータを使用してリカバリ・カタログを更新する場合
　　</font>

■ファイル名を指定してRMANリポジトリに登録する。
　　`CATALOG { CONTROLFILECOPY | DATAFILECOPY | BACKUPPIECE | ARCHIVELOG } 'ファイル名'`
　　●CONTROLFILECOPY ：制御ファイルのコピー
　　●DATAFILECOPY ：データファイルのコピー
　　●BACKUPPIECE ：バックアップピースのコピー
　　●ARCHIVELOG ：アーカイブログのコピー

■ディレクトリ内のパターンに一致する複数のバックアップファイルを保存できる。
　　`CATALOG START WITH '<ファイル名パターンの左側>'`

■インポート先のリカバリカタログに接続
　　`CONNECT CATALOG <インポート先のリカバリカタログ所有者>@<インポート先のリカバリカタログ用データベースのネットサービス名>`

■リカバリ・カタログ・スキーマにあるメタデータを別のカタログ・スキーマにインポート。
　　`IMPORT CATALOG <インポート元のリカバリカタログ所有者>@<インポート元のリカバリカタログ用データベースのネットサービス名>`
　　仮想プライベート・カタログにはできません。
　　リカバリ・カタログ・スキーマのソース・バージョンは、<font color="Red">インポート先のリカバリ・カタログ・スキーマの現在のバージョンと同じ</font>である必要があります。

■リカバリ・カタログ・スキーマを、旧バージョンから、RMANクライアントで必要なバージョンにアップグレードできます。
　　`UPGRADE CATALOG`
　　RMANがリカバリ・カタログ所有者としてリカバリ・カタログ・データベースに接続していて、リカバリ・カタログ・データベースが<font color="Red">オープン状態</font>である必要があります。

■リカバリ・カタログまたは仮想プライベート・カタログを削除できます。
　　`DROP CATALOG`

___
###バックアップ
####バックアップ形式の指定
■バックアップセット形式のバックアップ(**デフォルト**)　
　　`BACKUP AS BACKUPSET {DATABASE　｜　TABLESPACE<表領域名>　｜　DATAFILE<ファイル番号orファイルパス>}`

■イメージコピー形式のバックアップ
　　`BACKUP AS COPY {DATABASE　｜　TABLESPACE<表領域名>　｜　DATAFILE<ファイル番号orファイルパス>}`
　　バックアップの単位を指定できる。
　　※CONFIGUREコマンドでバックアップ形式のデフォルトをイメージコピーに設定した場合は、AS COPY句を省略できる。

　　<font color="Blue">オプション句</font>
　　・PLUS ARCHIVELOG
　　　　⇒ 同時にアーカイブログも保存する
　　・PLUS ARCHIVELOG DELETE INPUT　
　　　　⇒ アーカイブログが正常にバックアップされた際に元のアーカイブログを削除する
　　※PLUS ARCHIVELOG句を付けた場合、ログスイッチが実行される。

####増分バックアップ
■レベル0の増分バックアップ
　　`BACKUP INCREMENTAL LEVEL 0 DATABASE`
　　すべてのデータブロック
　　バックアップセットもしくはイメージコピーで取得できる

■レベル1の増分バックアップ
　　`BACKUP INCREMENTAL LEVEL 1 DATABASE`
　　直近の増分バックアップ取得以降で更新されたデータブロック
　　<font color="Blue">※バックアップセットのみ</font>

■直近のレベル0増分バックアップ取得以降で更新されたデータブロック
　　`BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE`
　　<font color="Blue">※バックアップセットのみ</font>

■ブロックチェンジトラッキングの有効(**デフォルトでは無効**)
　　`ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ＜ファイルパス＞REUSE`
　　・USING FILE ：ファイルパスの指定。
　　　⇒OMFが有効化されている場合はDB_CREATE_FILE_DEST
　　
　　・REUSE：同じ名前のトラッキングファイルがある場合上書きします
　　　
　　　<font color="SlateGray">Oracle Active Data Guardオプションのライセンスが有効な場合にのみ、フィジカル・スタンバイ・データベースでブロック・チェンジ・トラッキングを有効にできます。</font>

　　　<font color="SlateGray">ブロック・チェンジ・トラッキングは、データベースがオープンまたはマウントされている場合に有効にできます</font>

■全体バックアップに差分を適用 して更新されたイメージコピー形式の全体 バックアップを作成する
　　`RECOVER COPY OF DATABASE`
　　
　　●差分増分バックアップを取得する役割を担います。
　　　`BACKUP INCREMENTAL LEVEL1 FOR RECOVER OF COPY`

■データファイルを最新のイメージコピーに切り替えます。リストア処理を不要にできるため高速。
　　`SWITCH TO COPY`

■LISTコマンド
　RMANリポジトリに記録されているファイル情報を表示できる。
　LISTコマンドはRMANリポジトリの情報をもとにしているため、<font color="Red">実際のファイル状態とは異なることがある</font>

　　バックアップ形式のバックアップを表示
　　`LIST BACKUP`
　　イメージコピー形式のバックアップを表示
　　`LIST COPY`
　　指定したアーカイブログファイルを表示
　　`LIST ARCHIVELOG < 範囲 >`

■保存ポリシーを満たすために追加でバックアップが必要なファイルを表示
　　`REPORT NEED BACKUP`
　　
　　<font color="Blue">オプション句</font>(指定しない場合は現行の保存ポリシーで表示される。)
　　　保存期間に基づくポリシー　例：3日
　　　　⇒ WINDOW OF 3 DAYS;
　　　冗長性に基づくポリシー　例 ：冗長数1
　　　　⇒ REDUNDANCY 1;

　　ファイルは以下の単位を指定できる。
　　　<font color="SlateGray">DEVICE TYPE DISK,
　　　DEVICE TYPE sbt,
　　　DATABASE,
　　　TABLESPACE,
　　　DATAFILE</font>


■保存ポリシーの観点から不要とみなされるバックアップを表示
　　`REPORT OBSOLETE`
　　　　不要な(指定した保存方針を満たす必要がない)バックアップ・セット、バックアップ・ピースおよびデータファイルのコピーをレポートできます

■すべてのデータファイルと表領域を一覧表示
　　`REPORT SCHEMA [AT SCN <SCN> | AT SEQUENCE <ログ順序番号> | AT TIME '<日付文字>' ] `
　　<font color="SlateGray">※ATを指定するにはリカバリカタログを使用している必要がある。</font>

■保存ポリシーの観点から見て不要であるバックアップファイル、アーカイブログファイルを削除します。
　　`DELETE OBSOLETE`
　　高速リカバリ領域を使用している場合は古く不要であるバックアップファイル、アーカイブログファイルは領域が不足すると自動的に削除されます。

■RMANリポジトリに記録されているバックアップおよびアーカイブログファイルが、実際にバックアップ出力先に存在するかをチェックします。
　　`CROSSCHECK BACKUP`
　　`CROSSCHECK COPY`
バックアップ出力先にファイルが存在しない場合、そのファイルのステータスは<font color="Blue">EXPIRED</font>としてRMANリポジトリに登録される。

■CROSSCHECKコマンドによってEXPIREDとされたファイルの情報をRMANリポジトリから削除します。
　　`DELETE EXPIRED`

■対象を指定して特定のファイルの削除処理を実行するコマンド
　　`DELETE BACKUP(or COPY) [OF [DELETE ['<ファイル名>'|<ファイル番号>] | TABLESPACE<表領域名>|DATABASE|CONTROLEFILE|SPFILE]]`

■対象を指定してアーカイブログファイルを削除
　　`DELETE ARCHIVELOG <範囲>`

####バックアップのオプションと非データベースファイルのバックアップ

■圧縮アルゴリズムを選択する
　　`CONFIGURE COMPRESSION ALGORITHM 'MEDIUM'`

■自動チャネル割り当てで割り当てられるチャネルの設定
　　`CONFIGURE CHANNEL DEVICE TYPE`
　　　<font color="SlateGray">PARALLELISMが2以上の並列度を設定するとパラレルバックアップが有効になる</font>

■手動チャネル割り当て
　　`ALLOCATE CHANNEL < チャネル 名 > DEVICE TYPE [ DISK | SBT ]`
　　　<font color="SlateGray">PARALLELISMはCONFIGUREコマンドにて永続設定する</font>

■マルチセクションバックアップ（SECTIONSIZE句を指定したBACKUPコマンド）
　　`BACKUP {DATABASE ｜ DATAFILE ｜ TABLESPACE} SECTION SIZE < サイズ >［ K ｜ M ｜ G ]`

マルチセクションバックアップでバックアップした場合、バックアップピースのサイズはSECTIONSIZE句で指定したサイズになる

■データファイルの多重度の指定
　　`CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE < デバイス タイプ > TO < コピー 数 >`

■アーカイブログファイルの多重度の指定
　　`CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE < デバイス タイプ > TO < コピー 数 >`

■ファイルの出力先の指定（出力先デバイスがディスクの場合）
　　`CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '<出力先1>', '<出力先2>', ... ;`

■出力先デバイスがディスクの場合
　　`BACKUP DEVICE TYPE DISK COPIES <コピー数> <バックアップ対象>［ PLUS ARCHIVELOG］ FORMAT '<出力先 1>', '<出力先2>', ... ;`

■出力先デバイスがテープ装置の場合
　　`BACKUP DEVICE TYPE SBT COPIES <コピー数> <バックアップ対象>［ PLUS ARCHIVELOG ]`

■アーカイブバックアップ（KEEP句を指定したBACKUPDATABASEコマンド）
　　`BACKUP KEEP {FOREVER ｜ UNTIL TIME ='< 日時 文字列 >'} ［RESTORE POINT < リスト アポイント 名 > ］ DATABASE`
　　
　　●FOREVER：バックアップを永続的に保持する場合に指定します。この句を指定する場合、リカバリカタログを使用する必要があります。
　　●UNTILTIME：保持期限の日時を指定します。日時文字列には、現行のNLS_DATE_FORMAT初期化パラメータ（日付の書式を指定するパラメータ）に従う文字列または'SYSDATE+365'などのSQLDATE式を指定します。
　　●<font color="Red">RESTOREPOINT</font>：バックアップ直後のSCN（システム変更番号。SystemChangeNumber）に対してリストアポイントを作成します。ここで作成したリストアポイントを復旧時の復旧ターゲットに指定できます。SCNとは、データベース全体に付けられているバージョン番号（数値）です。データが更新されるたびに増加します。SCNで、データベースの更新状態を一意に特定できます。

■ディスクのすべてのバックアップセットをテープ装置にバックアップする
　　`BACKUP DEVICE TYPE sbt BACKUPSET ALL`

■ディスクのすべてのバックアップセットをテープ装置にバックアップし、入力のディスクバックアップを削除する
　　`BACKUP DEVICE TYPE sbt BACKUPSET ALL DELETE INPUT`

■デフォルトのトレースファイルに制御ファイルのテキストバックアップを取得
　　`ALTER DATABASE BACKUP CONTROLFILE TO TRACE`

■出力先を指定して制御ファイルのテキストバックアップを取得
　　`ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '<出力先ファイル名 >'`

■ASMCMDのmd_ backup コマンド
　　`asmcmd md_ backup < バックアップファイル名 > [-G '<ディスクグループ名 > [,<ディスクグループ名 > ,...]']`

####暗号化バックアップ

■キーストアのOPEN
　　`ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN < キーストアのパスワード >`
　　
　　ADMINISTERKEYMANAGEMENTシステム権限を持つユーザーでSQL*Plusなどで以下のコマンドを実行するとキーストアをOPENできる

■永続的に暗号化を有効にする
　　`CONFIGURE ENCRYPTION FOR DATABASE ON`

■一時的に暗号化を有効にする
　　`SET ENCRYPTION ON`

■RMANセッションでキーストアをOPENします
　　`SET DECRYPTION WALLET OPEN IDENTIFIED BY < キーストアのパスワード >`

　　キーストアに自動ログインキーストア（パスワード入力不要でOPEN可能なタイプのキーストア）を使用している場合は、この操作は不要

■RMANセッションでパスワード暗号化を有効にし、暗号化に用いるパスワードを指定します
　　`SET ENCRYPTION ON FOR ALL TABLESPACES IDENTIFIED BY < パスワード > ONLY`

　　パスワードモード暗号化では、SETENCRYPTIONにONLYを指定します。デュアルモード暗号化では、SETENCRYPTIONにONLYを指定しません

■RMANセッションで、パスワードモード暗号化バックアップを取得したときに指定したパスワードを指定します
　　`SET DECRYPTION IDENTIFIED BY < バックアップ取得時に指定したパスワード >`

■RMANセッションでデュアルモード暗号化を有効にします
　　`SET ENCRYPTION ON FOR ALL TABLESPACES IDENTIFIED BY < パスワード >`


####MML、OSB
■テープ装置を明示的に指定したBACKUPDATABASEコマンド
　　`BACKUP DEVICE TYPE SBT DATABASE;`

■手動チャネル割り当てを用いたテープ装置へのバックアップ取得
　　`RUN {`
 　　`ALLOCATE CHANNEL DEVICE TYPE SBT`
 　　`PARMS 'SBT_ LIBRARY =< MML の ファイル パス >, `
　　 `ENV =(< パラメータ 名 >=< パラメータ 値 >)'; BACKUP ...; `
　　`}`

■obtool　OracleSecureBackupの管理用コマンド（事前認可）
　　`obtool mkuser oracle --class oracle --preauth '*:oracle + rman' --unixname oracle`

　　事前認可：RMANを実行するOSユーザー（通常はoracleユーザー）に対して、RMANからOracleSecureBackupにバックアップを実行可能な権限を割り当てる。

■テープ装置用のチャネルに対してメディア管理ライブラリの設定
　　`CONFIGURE CHANNEL DEVICE TYPE SBT PARMS 'ENV =( OB_ MEDIA_ FAMILY =< メディア ファミリ 名 >, OB_ IGNORE_ NUMA = 0)';`

　　テープ装置用のチャネルに対してOracleSecureBackup固有の設定を行います。

###リストア、リカバリ
___

■対象を指定したリストアコマンド
　　`RESTORE DATABASE;`　//データベース全体のリストア
　　`RESTORE TABLESPACE < 表領域名 >;`　//指定した表領域のリストア
　　`RESTORE DATAFILE { < ファイル番号 >｜ '<ファイルパス>'};`　//指定したデータファイルのリストア
　　`RESTORE ARCHIVELOG FROM SEQUENCE < ログ順序番号 >;`　//アーカイブログファイルのリストア
　　
　　※リカバリも同様に指定できる。　//`RESTORE`を`RECOVER`に変更する。

■制御ファイルの自動バックアップをリストア
　　`RESTORE CONTROLFILE FROM AUTOBACKUP`

■レベル0の増分バックアップ（全体バックアップ）をリストアした後、レベル1の増分バックアップを適用し、レベル1の増分バックアップを取得した時点の全体バックアップを復元し、この時点に復旧する
　　`RECOVER DATABASE NOREDO;`

　　※NOARCHIVELOGモードで使用する。　
　　　REDOの適用処理を実行しない。

公式Docより抜粋「NOARCHIVELOGデータベースをリカバリする場合は、RECOVERコマンドでNOREDOオプションを指定し、Recovery ManagerがアーカイブREDOログの適用を試行しないように指定します。そうしない場合、Recovery Managerによってエラーが戻されます。」

■一時ファイルの削除
　　`ALTER DATABASE TEMPFILE '<一時ファイルのパス>' DROP;`

■一時ファイルの削除
　　`ALTER TABLESPACE < 一時表領域名 > ADD TEMPFILE '<一時ファイルのパス >' SIZE < サイズ >［ AUTOEXTEND ON］[ REUSE] ;`

■NOLOGGING 句
　　REDOデータが生成されません。I/O量が減るため処理が高速化できる反面、REDOデータがないためリカバリを実行しても正常に表領域を復元できず、破損ブロックが発生します。

公式Doc「https://docs.oracle.com/cd/E57425_01/121/SQLRF/clauses005.htm」

■データベース IDを指定
　　`SET DBID < データベース ID >`

　　SPFILEが失われた場合、SETDBIDでデータベースIDを指定した後、RMANのRESTORESPFILEコマンドでこれらのバックアップからSPFILEをリストアできます。

■自動バックアップからSPFILEをリストア
　　`RESTORE SPFILE FROM AUTOBACKUP DB_ RECOVERY_ FILE_ DEST ='< 高速リカバリ領域のパス >' DB_ NAME ='< DB_ NAME >';`

■指定したバックアップピースからSPFILEをリストア
　　`RESTORE SPFILE FROM '<バックアップピースのファイル名 >';`

####制御ファイルが全損失した場合
___
■高速リカバリ領域にある制御ファイルの自動バックアップから制御ファイルをリストア
　　`RESTORE CONTROLFILE FROM AUTOBACKUP; `

■制御ファイルのバックアップから制御ファイルをリストア
　　`RESTORE CONTROLFILE FROM '<バックアップピースのファイル名 >';`

■ディスク障害などによりメンバーが破損した場合
　　`ALTER DATABASE RENAME FILE '<現在のファイルパス >' TO '<新しいファイルパス >';`

　　メンバーのファイルパスを新しい場所に変更する必要があることがあります。メンバーのファイルパスを変更するには、MOUNTモードコマンドを実行します。

####不完全リカバリ
___
■不完全リカバリを実行する場合
　　`RUN { `
　　　`SET UNTIL [TIME | SCN | RESTORE POINT | SEQUENCE ] = < 復旧 ターゲット >; `
　　　`RESTORE DATABASE; `
　　　`RECOVER DATABASE; `
　　`}`
　
　RUNブロックで囲むことで、SET UNTILコマンドによる復旧ターゲットの有効範囲をRUNブロック内に限定します。

■コマンド実行時点のSCN（現在のSCN）に対してリストアポイントを作成
　　`CREATE RESTORE POINT < リストアポイント名 > [PRESERVE]; `

■指定したSCN（過去のあるSCN）に対してリストアポイントを作成
　　`CREATE RESTORE POINT < リストアポイント名 > AS OF SCN < SCN 番号 > [PRESERVE];`

　●リストアポイント
　　公式Doc「https://docs.oracle.com/cd/E57425_01/121/SQLRF/statements_6013.htm」

■表リカバリ
例：
　　`RECOVER TABLE < スキーマ 名 >.< 表 名 >`
 　　　①`[ UNTIL SCN < SCN >`
 　　　②`| UNTIL SEQUENCE < ログ順序番号 > [ THREAD < スレッド番号 > ]`
 　　　③`| UNTIL TIME '<日時文字列 >'`
 　　　④`| TO RESTORE POINT < リストアポイント名 > ] `
　　　 `AUXILIARY DESTINATION '<補助 インスタンスを作成するディレクトリのパス >'`
 　　　`[ REMAP TABLE '<スキーマ名 >'.'< 古い表名 >':'< 新しい表名 >'];`

　　①②③④色々な方法で復元ターゲット日時の指定が出来る。
　　表名を変更したい場合はREMAP TABLEオプションで指定する。　　

###フラッシュバックテクノロジー
___
■UNDO保存保証の有効化
　　`ALTER TABLESPACE < UNDO 表 領域 名 > RETENTION GUARANTEE;`

■保存保証の無効化
　　`ALTER TABLESPACE < UNDO 表 領域 名 > RETENTION NOGUARANTEE;`

■フラッシュバック問合せ
　　`SELECT < 列リスト > FROM < 表名 > VERSIONS BETWEEN {TIMESTAMP ｜ SCN} < 期間の開始点 > AND < 期間の終了点 > ［WHERE 句］;`

■フラッシュバックバージョン問合せ
　　`SELECT < 列リスト > FROM < 表 名 > VERSIONS BETWEEN {TIMESTAMP ｜ SCN} < 期間の開始点 > AND < 期間の終了点 > ［WHERE 句］ ;`

■トランザクションで実行されたDML操作を表示するための、最小サプリメンタルロギングの有効化
　　`ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;`　　

■表領域にフラッシュバックデータアーカイブを作成する
　　`CREATE FLASHBACK ARCHIVE［ DEFAULT］ < フラッシュバックデータアーカイブ名 > TABLESPACE < 表領域名 > ［QUOTA < サイズ >］ [ [NO] OPTIMIZE DATA ] RETENTION < 保存期間 > {YEAR ｜ MONTH ｜ DAY};`　　

■表の作成時にフラッシュバックデータアーカイブを有効化する
　　`CREATE TABLE < 表名 > (<列定義など > ) FLASHBACK ARCHIVE［< フラッシュバックデータアーカイブ名 >］;`

■既存の表に対してフラッシュバックデータアーカイブを有効にする
　　`ALTER TABLE <表名> FLASHBAL ARCHIVE [<フラッシュバックアーカイブ名>];`

■フラッシュバックデータアーカイブの無効化
　　`ALTER TABLE <表名> NO FLASHBACK ARCHIVE;`

■保存期間の変更
　　`ALTER FLASHBACK ARCHIVE <FDA 名> MODIFY RETENTION < 保存期間 > { YEAR | MONTH | DAY };`

■フラッシュバックデータアーカイブ内のデータをパージ
　　`ALTER FLASHBACK ARCHIVE <FDA 名> PURGE { ALL | BEFORE TIMESTAMP < 時間データ > | BEFORE < SCN番号 >};`

　　明示的にパージ文を実行しない限りは、通常のパージは保存期間が期限切れになった翌日に自動的に行われます。

■フラッシュバック表
　　`FLASHBACK TABLE < 表名 > TO { TIMESTAMP < タイムスタンプ > | SCN < SCN 番号> };`

復旧ターゲット時のUNDOデータがUNDO表領域に残っている。
FLASHBACK ANY TABEL , FLASHBACK オブジェクト　どちらかの権限　+　フラッシュバックする表に対する権限を保有している。
表に対する行移動が有効化されている。
ALTER TABLE < 表名 > ENABLE ROW MOVEMENT;
現在日時と復旧ターゲット日時の間でＤＤＬ文が実行され、表の構造が変更されていないこと。

■フラッシュバックトランザクションバックアウト
　　`DBMS_FLASHBACK.TRANSACTION_BACKOUT(`
 　　　`numtxns => 1,` //トランザクションの数
 　　　`names => TXNAME_ARRAY('TXNAME1')` //トランザクション名
 　　　`options => DBMS_FLASHBACK.CASCADE` // CASCADE句は依存トランザクションも含めてバックアウトする。
 　　　`Scnhint => 1747656`
　　`);`

　　DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER()でSCN番号を取得する
　　トランザクションを取り消す

■フラッシュバックドロップ
　　`FLASHBACK TABLE < 元の表名 > TO BEFORE DROP [ RENAME TO < 新しい表名 > ]`

　　ゴミ箱内の削除済の表を復元する。
　　RENAME TO を指定しないと元の表名で復元される。　
　　索引、制約は復元されるが、索引、制約につけられていた名前は復元できない。

■ゴミ箱内に削除された同一の表が複数ある場合
　　`FLASHBACK TABLE "< システム生成された削除済み表の名前>" TO BEFORE DROP;`

■ゴミ箱に削除済表を残さずに表を削除する場合
　　`DROP TABLE PURGE;`

■すべての表領域のごみ箱内の削除済み表を削除
　　`PURGE DBA_RECYCLEBIN;`

■指定した表領域のごみ箱内の削除済み表を削除したい場合
　　`PURGE TABLESPACE < 表領域名 >`

■自分のスキーマにあるごみ箱内の削除済み表の削除
　　`PURGE USER_RECYCLEBIN;`
　　`PURGE RECYCLE BIN;`

■指定したオブジェクトについてのごみ箱内の削除済み表を削除
　　`PURGE TABLE INDEX [< スキーマ名 >] <表名>;`
　　`PURGE INDEX [< スキーマ名 >] <索引名>;`

■フラッシュバックロギングの有効化
　　`ALTER DATABASE FLASHBACK ON;`

■FLASHBACK DATABASEは復旧ターゲットを指定することができる。
　　`FLASHBACK DATABASE TO [BEFORE] SCN < システム変更番号 > `
　　`FLASHBACK DATABASE TO [BEFORE] TIME < タイムスタンプ >　`
　　`FLASHBACK DATABASE TO [BEFORE] RESTORE POINT < リストアポイント名 >`
　　`FLASHBACK DATABASE TO [BEFORE] SEQUENCE < ログ順序番号 > THREAD < スレッド番号 >`

■保証付きリストアポイントの作成
　　`CREATE RESTORE POINT < リストアポイント名 > GUARANTEE FLASHBACK DATABASE;`

　　　保証付きリストアポイントに対応する時点で、フラッシュバックデータベースを実行するために必要となるフラッシュバックログなどが高速リカバリ領域に保存されます。

■保証付きリストアポイントの削除
　　`DROP RESTORE POINT p1;`

　　　通常のリストアポイントは時間が経過すると自動的に削除されますが、保証付きリストアポイントは自動的に削除されません。そのため明示的に削除しないと高速リカバリ領域に残り続けます。


###データの転送
___
■ソースデータベースでデータファイルのエンディアン形式を変換する
　　`rman > CONVERT TABLESPACE users;`
　　`TO PLATFORM = 'Linux IA(32-bit)'`　//変換先のプラットフォームの指定 
　　`DB_FILE_NAME_CONVERT = '/data1','/conv';`　//ファイル名変換前と変換後のファイル名変換ルールを指定する。

■バックアップセットによるクロスプラットフォーム表領域のRESTOREコマンド+ソースデータベースでのエンディアン変更

　　`rman > RESTORE`
　　//バックアップセットから復元したデータファイルのファイル名を指定。
　　`FOREIGN TABLESPACE tbs01 FORMAT '/ディレクトリ名+ファイル名'`
　　//バックアップセットのファイル名を指定
　　`FROM BACKUPSET '/tmp/bkup.bck'`
　　//メタデータのダンプファイルを含むバックアップセットのファイル名を指定
　　`DUMP FILE FROM BACKUPSET '/tmp/bkup_dmp.bck';`

###データベースの複製
___
■AUXILIARY　補助インスタンスに接続するためのオプション句
　　`CONNECT AUXILIARY user名/password@ネットサービス名`

■データベースの複製
　　`RUN {`
　　` SET UNTIL [ TIME | SCN | RESTORE POINT | SEQUENCE ] = < リカバリターゲット >;`
　　` DUPLICATE TARGET DATABASE TO < データベース名 > NOFILENAMECHECK SPFILE;`
　　`}`　

■バックアップベース複製のコマンド
　　`RMAN > RUN {`
　　` SET UNTIL SEQUENCE 25;`
 　 ` DUPLICATE TARGET DATABASE TO orcl NOFILENAMECHECK SPFILE;`
　　`}`

■すべての初期化パラメーターの設定値を機械的に文字列置換する句
　　`PARAMETER_VALUE_CONVERT '< 置換対象文字列>' '<置き換える文字列>'`

■指定した初期化パラメーターについて新しい設定値を設定する句
　　`SET <初期化パラメーター名> <複製データベースでの設定値>`

■複製時にデータベースファイルの配置を変換するコマンド
　　`DUPLICATE…`
　　` SPFILE…`
　　` SET CONTROL_FILE = '<制御ファイルのファイル名>'`
　　` SET LOG_FILE_NAME_CONVERT = '<置換対象文字列>' '<置き換える文字列>'`
　　` SET DB_FILE_NAME_CONVERT = '<置換対象文字列>' '<置き換える文字列>'`

■DUPLICATEコマンドのオプション句　アクティブデータベース複製。
　　`FROM ACTIVE DATABASE句`

　　複製前にあらかじめバックアップを取得する必要がない
　　補助インスタンスを作成する必要がない。
　　RMANクライアントがソースデータベースに接続する際に、ユーザー名とパスワードを明示的に指定する必要がある。

■バックアップセットを明示的に指定したアクティブ複製
　　`DUPLICATE TARGET DATABASE TO < データベース名 > FROM ACTIVE DATABASE USING BACKUPSET;`

■バイナリ圧縮されたバックアップセットを使用するアクティブ複製
　　`DUPLICATE TARGET DATABASE < データベース名 > FROM DATABASE USING COMPRESSED BACKUPSET;`

■暗号化バックアップセットを使用するアクティブ複製
　　`SET ENCRYPTION ON IDENTIFIED BY < 暗号化パスワード >;`
　　`SET ENCRYPTION ALGORITHM '< 暗号化アルゴリズム >';`
　　`DUPLICATION TARGET DATABASE TO < データベース名 > FROM ACTIVE DATABASE USING COMPRESSED BACKUPSET;`

■マルチセクションパラレルバックアップを使用するアクティブ複製
　　`CONFIGURE DEVICE TYPE disk PARALLELISM < 並列度 >;`
　　`DUPLICATE TARGET DATABASE TO < データベース名 > FROM ACTIVE DATABASE USING BACKUPSET SECTION SIZE < セクションサイズ >;`

___
`たまに修正するかも`

<font color="Red"></font>
<font color="Blue"></font>
<font color="SlateGray"></font>