To switch a data file in a CDB, connect to the root and use the same steps that you would use for a non-CDB.
针对于CDB中的数据文件丢失,利用Image copy备份来恢复和non-CDB恢复方式一样
cp $ORACLE_HOME/rdbms/admin/utlsampl.sql $ORACLE_HOME/rdbms/admin/utlsampl.sql.bak vi $ORACLE_HOME/rdbms/admin/utlsampl.sql
修改
sqlplus sys/oracle@pdb2 as sysdba @$ORACLE_HOME/rdbms/admin/utlsampl.sql
rman target sys/oracle@cdb3 report schema;
为PDB2的16号文件执行Image copy备份
backup as copy datafile 16 format ‘/u01/app/cp_bak/df16.bak‘;
list datafilecopy all;
rm /u01/app/oracle/oradata/CDB3/pdb2/users01.dbf
sqlplus sys/oracle@pdb2 as sysdba alter system flush buffer_cache; select * from scott.emp;
alter database datafile 16 offline;
switch datafile 16 to copy;
recover datafile 16;
alter database datafile 16 online;
col name for a50 select file#,name from v$datafile;
修改路径
alter tablespace users offline; !mv /u01/app/cp_bak/df16.bak /u01/app/oracle/oradata/CDB3/pdb2/users01.dbf alter tablespace users rename datafile ‘/u01/app/cp_bak/df16.bak‘ to ‘/u01/app/oracle/oradata/CDB3/pdb2/users01.dbf‘; alter tablespace users online;
alter system flush buffer_cache; select * from scott.emp;
use the SWITCH DATABASE or SWITCH DATAFILE command to switch data files in that PDB.
使用SWITCH DATABASE或SWITCH DATAFILE命令切换该PDB中的数据文件
类似于non-CDB操作
原文:https://www.cnblogs.com/jsxxd/p/15038547.html