Pulihkan tablespace USERS tidak bekerja. Cadangan Oracle
Saya membuat skema dan my_table_test;
ALTER SESSION SET CURRENT_SCHEMA=c##wojtek_admin;
CREATE TABLE my_table_test
( id_test INT
);

Kemudian saya membuat cadangan menggunakan: BACKUP TABLESPACE USERS FORMAT 'c:\FRA\users%u';
Kemudian saya menjatuhkan my_table_test dan menjalankan perintah di bawah ini:
RMAN> RUN{
2> SQL 'ALTER TABLESPACE USERS OFFLINE';
3> RESTORE TABLESPACE USERS;
4> RECOVER TABLESPACE USERS;
5> SQL 'ALTER TABLESPACE USERS ONLINE';
6> }
Mengapa my_table_test dihapus setelah saya memulihkan USERS TABLESPACE?


Jawaban
Dalam database multitenant Anda akan memiliki beberapa tablespace 'PENGGUNA'. Satu di level CDB dan satu untuk setiap PDB.
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
Catatan! Fitur terbaik RMAN. RMAN sebenarnya dapat memberi tahu Anda apa yang harus dilakukan dalam berbagai skenario.
# data recovery advisor (DRA)
list failure all;
advise failure;
repair failure preview;
repair failure;
Pertama, penting untuk dicatat bahwa sepertinya Anda menggunakan Database Multitenant tetapi Anda telah memutuskan untuk memasukkan data pengguna di dalam wadah root, ini umumnya ide yang buruk - Anda harus menggunakan Database yang Dapat Dicolok untuk hampir semua hal ( ini juga berarti Anda tidak perlu mengawali nama pengguna Anda dengan C##
.
Pernyataan pemulihan dan pemulihan Anda akan memulihkan tablespace hingga sekarang. Jika Anda ingin memulihkannya ke sebelum Anda menjatuhkan tablespace maka Oracle juga perlu melakukan beberapa pekerjaan di system
tablespace (untuk kamus data) - tetapi Anda tidak hanya ingin memulihkan dan memulihkan USERS
tablespace Anda . Anda perlu memulihkan cadangan Anda di tempat lain, memulihkannya ke titik yang diinginkan, lalu mengambil USERS
tablespace dan memasukkannya kembali ke database asli Anda.
Ini hanya disebut sebagai Tablespace Point In Time Recovery, Oracle telah membantu melakukan semua pekerjaan skrip keras untuk Anda, tetapi Anda harus membaca apa yang terjadi. https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmtspit.htm#BRADV89790
RECOVER TABLESPACE users
UNTIL ?
AUXILIARY DESTINATION '?';
(Setelah Anda membaca dokumen, Anda akan melihat cara mengisinya).
Ada juga kemampuan untuk melakukan ini dengan mudah di tingkat tabel, jadi jika Anda hanya ingin memulihkan tabel yang jatuh itu dan tidak mengembalikan semua yang lain di ruang tabel itu, Anda dapat:
RECOVER TABLE c##wojtek_admin.my_table_test
UNTIL ?
AUXILIARY DESTINATION '?' ;
Lihat https://oracle-base.com/articles/12c/rman-table-point-in-time-recovery-12cr1 untuk keterangan lebih lanjut.