RMAN-06056: could not access datafile 6解决方法

13年前
在使用rman备份的时候遇到的问题:RMAN-06056: could not access datafile 6

RMAN> backup database;
Starting backup at 01-SEP-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
could not read file header for datafile 6 error reason 4
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 09/01/2011 22:34:38
RMAN-06056: could not access datafile 6
RMAN> 
1、 查看数据6文件所在的数据文件以及所处的状态
SQL> select file#,status,ts#,name from v$datafile;
 
     FILE# STATUS         TS# NAME
---------- ------- ---------- ------------------------------------------------------------
         1 SYSTEM           0 /u01/oracle/oradata/general10g/system01.dbf
         2 ONLINE           1 /u01/oracle/oradata/general10g/undotbs01.dbf
         3 ONLINE           2 /u01/oracle/oradata/general10g/sysaux01.dbf
         4 ONLINE           4 /u01/oracle/oradata/general10g/users01.dbf
         5 ONLINE           6 /u01/oracle/oradata/general10g/example01.dbf
         6 RECOVER       7 /u01/oracle/oradata/general10g/mydatafile1.dbf
 
6 rows selected.
 
SQL>  
从结果可以看到,文件6是处于recover的状态,即需要恢复的状态。
2、查看数据库的物理文件
[oracle@linuxForOra general10g]$ ls -l
total 1496240
-rw-r-----  1 oracle oinstall   7094272 Sep  1 23:21 control01.ctl
-rw-r-----  1 oracle oinstall   7094272 Sep  1 23:21 control02.ctl
-rw-r-----  1 oracle oinstall   7094272 Sep  1 23:21 control03.ctl
-rw-r-----  1 oracle oinstall   7094272 Sep  1 23:21 control04.ctl
-rw-r-----  1 oracle oinstall 104865792 Sep  1 22:26 example01.dbf
-rw-r-----  1 oracle oinstall  52429312 Sep  1 22:26 redo01.log
-rw-r-----  1 oracle oinstall  52429312 Sep  1 22:26 redo02.log
-rw-r-----  1 oracle oinstall  52429312 Sep  1 23:06 redo03.log
-rw-r-----  1 oracle oinstall 304095232 Sep  1 22:49 sysaux01.dbf
-rw-r-----  1 oracle oinstall 618668032 Sep  1 23:06 system01.dbf
-rw-r-----  1 oracle oinstall  22028288 Aug  9 13:32 temp01.dbf
-rw-r-----  1 oracle oinstall 272637952 Sep  1 23:06 undotbs01.dbf
-rw-r-----  1 oracle oinstall  23601152 Sep  1 22:26 users01.dbf
[oracle@linuxForOra general10g]$ 
从结果可以得知,物理结构上并没有数据文件:
/u01/oracle/oradata/general10g/mydatafile1.dbf,即已经丢失
3、查看所在的被删除的数据文件所在的表空间
SQL> select ts#,name from v$tablespace;
 
       TS# NAME
---------- ------------------------------------------------------------
         0 SYSTEM
         1 UNDOTBS1
         2 SYSAUX
         4 USERS
         3 TEMP
         6 EXAMPLE
         7 MYSPACE
 
7 rows selected.
根据ts#字段得知,6号数据文件所在的表空间是myspace
4、因为我这个表空间是自己测试使用的,所以可以直接删除,可以实现数据库逻辑和物理一致
 (注意:在生成库上一定要谨慎,正常是需要按照实际情况进行恢复的
SQL> drop tablespace myspace including contents;
 
Tablespace dropped.
 
SQL> 

此时,rman就可以正常使用了。