对于system,sysaux和undo表空间的数据文件,如果有问题,数据库无法open。如果是PDB中某个普通的数据文件出现丢失,我们可以先用offline方式跳过,然后再打数据库,稍后再对数据文件做恢复:
例:
SQL> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 322965384 bytes
Database Buffers 503316480 bytes
Redo Buffers 6529024 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 6- see DBWR trace file
ORA-01110: data file 6:'/u01/app/oracle/oradata/c12/users01.dbf'
SQL> alter database datafile 6 offline;
Database altered.
SQL> alter database open;
Database altered.
使用rman
RMAN> restore datafile 6;
RMAN> recover datafile 6;
然后对数据文件进行online处理
SQL> alter database datafile 6 online;
再看看pdb的数据文件.摸拟pdb数据文件删除
[oracle@o12c pdb2]$ mv pdb2_users01.dbfpdb2_users01.dbfold
启动数据库实例
SQL> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 322965384 bytes
Database Buffers 503316480 bytes
Redo Buffers 6529024 bytes
Database mounted.
Database opened.
由此我们可以得出一个结论,当cdb在打开的时候,数据库不会检查pdb中的数据文件。
SQL> alter pluggable database pdb2 open;
alter pluggable database pdb2 open
ERROR at line 1:
ORA-01157: cannot identify/lock data file 13- see DBWR trace file
ORA-01110: data file 13:'/u01/app/oracle/oradata/c12/pdb2/pdb2_users01.dbf'
只有在打开pluggabledatabase时,会效验PDB数据库的数据文件,。
SQL> alter session set container=pdb2;
Session altered.
SQL> alter pluggable database datafile 13 offline;
Pluggable database altered.
数据文件file#(文件号)是唯一的,但我们在CDB中操作时找不到该文件,必须要进入PDB模式,如果在CDB试图去offline一个数据文件时会报错:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> alter database datafile 10 offline;
alter database datafile 10 offline
第 1 行出现错误:
ORA-01516: 不存在的日志文件, 数据文件或临时文件 "10"*
但是在rman中可以直接使用datafile号进行恢复
[oracle@localhost admin]$ rman target /
恢复管理器: Release 12.1.0.2.0 - Production on 星期三 3月 23 11:04:15 2016
Copyright (c) 1982, 2014, Oracle and/or itsaffiliates. All rights reserved.
已连接到目标数据库: CDB (DBID=2023252752)
RMAN> restore datafile 10;
启动 restore 于 23-3月 -16
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00010 还原到 /u01……/backupset/2016_03_23/o1_mf_nnndf_TAG20160323T100113_ch3y7byj_.bkp
通道 ORA_DISK_1: 段句柄 = /u01…….backupset/2016_03_23/o1_mf_nnndf_TAG20160323T100113_ch3y7byj_.bkp标记 = TAG20160323T100113
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore 于 23-3月 -16
RMAN> recover datafile 10;
启动 recover 于 23-3月 -16
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:00
完成 recover 于 23-3月 -16;