oracle 19c支持删除pdb库的恢复,本次实验数据库处于本地撤销空间的情况下,同时在删除pdb前已经做好了cdb、pdb的rman整库备份,下面我们来看下整个实验的过程。
数据库版本:Oracle Database 19c Version 19.3.0.0.0 for linux
操作系统:Red Hat Enterprise Linux Server release 7.8 (Maipo)1、备份数据库cdb、pdb(略)2、检查数据库状态(数据库已经设置 快速恢复区域) SQL> show parameter db_recovery; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /flash_recovery_area db_recovery_file_dest_size big integer 50G SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB01 READ WRITE NO 4 PDB02 READ WRITE NO3、删除pdb02 SQL> alter pluggable database pdb02 close immediate; Pluggable database altered. SQL> select con_id,dbid,con_uid,guid,name from v$pdbs; CON_ID DBID CON_UID GUID NAME ---------- ---------- ---------- -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- 2 3352637039 3352637039 F7F7C7ED21D03119E053640200C01CB7 PDB$SEED 3 1242846190 1242846190 F7F7E812847B3A54E053640200C0BEB7 PDB01 4 93579843 93579843 F95C8E5302D7AEF7E053640200C05BDB PDB02 SQL> drop pluggable database pdb02 including datafiles; Pluggable database dropped. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB01 READ WRITE NO检查alert日志:Completed: alter pluggable database pdb02 close immediate2023-05-03T22:05:59.656127+08:00Buffer Cache Full DB Caching mode changing from FULL CACHING DISABLED to FULL CACHING ENABLED 2023-05-03T22:06:05.297490+08:00drop pluggable database pdb02 ORA-65179 signalled during: drop pluggable database pdb02 ...2023-05-03T22:06:21.088904+08:00drop pluggable database pdb02ORA-65179 signalled during: drop pluggable database pdb02...2023-05-03T22:06:46.612711+08:00drop pluggable database pdb02 keep datafilesORA-65179 signalled during: drop pluggable database pdb02 keep datafiles...备注:日志显示pdb02及其数据文件已经全部删除,同时检查F95C8E5302D7AEF7E053640200C05BDB文件夹下的文件为0. 5、开始着手恢复删除的pdb02 a、确认删除时间点 2023-05-03T22:06:05.297490+08:00 b、编写恢复命令脚本(恢复到删除时间点前就可以了)RUN{ SET UNTIL time "to_date('2023-05-03 22:05:59','yyyy-mm-dd hh24:mi:ss')"; RECOVER pluggable DATABASE pdb02;} 备注:如果未标明时间转换格式,在恢复过程中会出现格式化报错问题,如下:Removing automatic instanceshutting down automatic instance Oracle instance shut downAutomatic instance removedRMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of recover command at 05/03/2023 22:09:46 RMAN-06136: Oracle error from auxiliary database: ORA-01861: literal does not match format string c、恢复过程片段 #recover pdb recover clone database tablespace "SYSTEM", "UNDOTBS1", "SYSAUX", "USERS" pluggable database 'PDB02' delete archivelog; #open in read write mode sql clone 'alter database open resetlogs'; #unplug dropped pdb into temp file sql clone "alter pluggable database PDB02 unplug into '' /u01/app/oracle/product/19.0.0/dbhome_1/dbs/_rm_pdb_pitr_1_szkv.xml''"; #create pdb using temp file of recovered pdb sql "create pluggable database PDB02 using '' /u01/app/oracle/product/19.0.0/dbhome_1/dbs/_rm_pdb_pitr_1_szkv.xml'' nocopy tempfile reuse"; alter pluggable database PDB02 open; } executing Memory Script executing command: SET until clause sql statement: alter database datafile 1 online sql statement: alter database datafile 4 online sql statement: alter database datafile 3 online sql statement: alter database datafile 7 online sql statement: alter database datafile 14 online sql statement: alter database datafile 15 online sql statement: alter database datafile 16 online sql statement: alter database datafile 17 online Starting recover at 2023-05-03 22:35:30 using channel ORA_AUX_DISK_1 starting media recovery archived log for thread 1 with sequence 32 is already on disk as file /flash_recovery_area/ORCL/archivelog/2023_05_03/o1_mf_1_32_l54trqod_.arc channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=30 channel ORA_DISK_1: reading from backup piece /home/oracle/backup22/archivelog_431r8mln_1_1_20230503 channel ORA_DISK_1: piece handle=/home/oracle/backup22/archivelog_431r8mln_1_1_20230503 tag=ARC_BAK0 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:15 channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=31 channel ORA_DISK_1: reading from backup piece /home/oracle/backup22/archivelog_441r8mln_1_1_20230503 archived log file name=/flash_recovery_area/ORCL/archivelog/2023_05_03/o1_mf_1_30_l54w9mrk_.arc thread=1 sequence=30 channel clone_default: deleting archived log(s) archived log file name=/flash_recovery_area/ORCL/archivelog/2023_05_03/o1_mf_1_30_l54w9mrk_.arc RECID=28 STAMP=1135895738 channel ORA_DISK_1: piece handle=/home/oracle/backup22/archivelog_441r8mln_1_1_20230503 tag=ARC_BAK0 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 archived log file name=/flash_recovery_area/ORCL/archivelog/2023_05_03/o1_mf_1_31_l54wb2sr_.arc thread=1 sequence=31 channel clone_default: deleting archived log(s) archived log file name=/flash_recovery_area/ORCL/archivelog/2023_05_03/o1_mf_1_31_l54wb2sr_.arc RECID=29 STAMP=1135895746 archived log file name=/flash_recovery_area/ORCL/archivelog/2023_05_03/o1_mf_1_32_l54trqod_.arc thread=1 sequence=32 media recovery complete, elapsed time: 00:00:03 Finished recover at 2023-05-03 22:35:50 sql statement: alter database open resetlogs sql statement: alter pluggable database PDB02 unplug into ''/u01/app/oracle/product/19.0.0/dbhome_1/dbs/_rm_pdb_pitr_1_szkv.xml'' sql statement: create pluggable database PDB02 using ''/u01/app/oracle/product/19.0.0/dbhome_1/dbs/_rm_pdb_pitr_1_szkv.xml'' nocopy tempfile reuse Statement processed Removing automatic instance shutting down automatic instance Oracle instance shut down Automatic instance removed auxiliary instance file /u01/app/oracle/product/19.0.0/dbhome_1/dbs/_rm_pdb_pitr_1_szkv.xml deleted auxiliary instance file /flash_recovery_area/ORCL/datafile/o1_mf_sysaux_l54w6gvq_.dbf deleted auxiliary instance file /flash_recovery_area/ORCL/controlfile/o1_mf_l54w5zhy_.ctl deleted Finished recover at 2023-05-03 22:36:15 6、完成恢复pdb02 SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB01 READ WRITE NO 4 PDB02 READ WRITE NO SQL> alter session set container=pdb02; Session altered. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 4 PDB02 READ WRITE NO SQL> create tablespace data datafile size 100m autoextend on ; Tablespace created. 总结:19c的pdb空间基于时间点的恢复,确保在恢复前有pdb的数据备份,在误删除的情况下是可以找回pdb的。恢复完成后,需要尽快做好数据备份工作。 Yicheng16 23.05.03 -- The End --
