本文中记录的情况适用于Oracle 12c环境下PDB$SEED数据库数据文件损坏会被误删等且有RMAB备份的情况。
一、关闭PDB$SEED
在PDB$SEED为read only状态下,是不可用RMAN进行其数据文件恢复,我们需要先关闭PDB$SEED,由于PDB$SEED目前处于不正常状态,常规方式可能无法关闭,需要执行以下命令关闭。
[shell]$ sqlplus / as sysdba
SQL> show psbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED close immediate');
PL/SQL procedure successfully completed.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED MOUNTED
关闭过程中也有可能包文件无法找到等错误,关闭后务必检查PDB$SEED处于MOUNTED状态。
二、Restore 并 recover PDB$SEED
开始恢复:
[shell]$ rman target /
RMAN> restore database "PDB$SEED";
Starting restore at 03-JUN-19
using channel ORA_DISK_1
........
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 03-JUN-19
RMAN> recover database "PDB$SEED";
Starting recover at 03-JUN-19
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 03-JUN-19
三、重新开启PDB$SEED
SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED open read only');
PL/SQL procedure successfully completed.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
恢复完成!