表領域USERSの復元が機能しません。Oracleバックアップ
スキーマとmy_table_testを作成しました。
ALTER SESSION SET CURRENT_SCHEMA=c##wojtek_admin;
CREATE TABLE my_table_test
( id_test INT
);

次に、BACKUP TABLESPACE USERS FORMAT 'c:\FRA\users%u';
以下を使用してバックアップを作成しました。次に、my_table_testを削除し、以下のコマンドを実行します。
RMAN> RUN{
2> SQL 'ALTER TABLESPACE USERS OFFLINE';
3> RESTORE TABLESPACE USERS;
4> RECOVER TABLESPACE USERS;
5> SQL 'ALTER TABLESPACE USERS ONLINE';
6> }
USERS TABLESPACEを復元した後、my_table_testが削除されるのはなぜですか?


回答
マルチテナントデータベースには、複数の「USERS」テーブルスペースがあります。CDBレベルに1つ、PDBごとに1つ。
RMAN> report schema;
Report of database schema for database with db_unique_name T101N
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 960 SYSTEM YES +DATAC4/T101N/DATAFILE/system.500.1057688607
3 620 SYSAUX NO +DATAC4/T101N/DATAFILE/sysaux.498.1057688643
4 840 UNDOTBS1 YES +DATAC4/T101N/DATAFILE/undotbs1.587.1057688657
5 310 PDB$SEED:SYSTEM NO +DATAC4/T101N/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.482.1057689319 6 380 PDB$SEED:SYSAUX NO +DATAC4/T101N/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.503.1057689319
7 5 USERS NO +DATAC4/T101N/DATAFILE/users.499.1057688659
8 190 PDB$SEED:UNDOTBS1 NO +DATAC4/T101N/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.489.1057689319 9 310 PDB1:SYSTEM YES +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/system.405.1057690077 10 390 PDB1:SYSAUX NO +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/sysaux.501.1057690077 11 195 PDB1:UNDOTBS1 YES +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/undotbs1.497.1057690077 12 5 PDB1:USERS NO +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/users.566.1057690091 List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 67 TEMP 32767 +DATAC4/T101N/TEMPFILE/temp.573.1057688719 2 43 PDB$SEED:TEMP 32767 +DATAC4/T101N/B52F34797E9D6750E053B506330AE7C0/TEMPFILE/temp.481.1057689337
3 43 PDB1:TEMP 32767 +DATAC4/T101N/B52F60948095635FE053B506330A63CA/TEMPFILE/temp.496.1057690079
注意!RMANの最高の機能。RMANは、実際にはさまざまなシナリオで何をすべきかを教えてくれます。
# data recovery advisor (DRA)
list failure all;
advise failure;
repair failure preview;
repair failure;
まず、マルチテナントデータベースを使用しているように見えますが、ユーザーデータをルートコンテナ内に配置することにしたことに注意することが重要です。これは一般的に悪い考えです。ほとんどすべてにプラガブルデータベースを使用する必要があります(これは、ユーザー名の前にC##
。を付ける必要がないことも意味します。
restoreおよびrecoverステートメントは、これまでの表領域を回復します。表領域を削除する前にそれを回復したい場合、Oracleはsystem
(データディクショナリのために)表領域に対していくつかの作業を行う必要がありますが、表領域を復元して回復するだけではありませんUSERS
。バックアップを別の場所に復元し、目的のポイントに回復してから、USERS
テーブルスペースを取得して元のデータベースに戻す必要があります。
これは単にテーブルスペースポイントインタイムリカバリと呼ばれ、Oracleはすべてのハードスクリプト作業を支援してくれましたが、何が起こっているかを読む必要があります https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmtspit.htm#BRADV89790
RECOVER TABLESPACE users
UNTIL ?
AUXILIARY DESTINATION '?';
(ドキュメントを読むと、これに記入する方法がわかります)。
これをテーブルレベルで簡単に実行する機能もあるため、削除されたテーブルのみをリカバリし、そのテーブルスペース内の他のすべてを元に戻さない場合は、次のことができます。
RECOVER TABLE c##wojtek_admin.my_table_test
UNTIL ?
AUXILIARY DESTINATION '?' ;
見る https://oracle-base.com/articles/12c/rman-table-point-in-time-recovery-12cr1 詳細については。