(07)数据文件恢复之一通过SqlPlus重建恢复(文件系统与ASM)

   本次恢复说明适合于日志完备,但数据文件丢失或损坏的情况。
   原理是,数据文件丢了,但创建它,填充它的日志还在。我重建个空的物理文件,让数据库重新执行一遍日志,不就把数据文件恢复过来了。

在RAC+ASM环境下测试:

1. 查出数据库的所有数据文件

    SQL> select file#,name from v$datafile;
2. 做个全备以防万一,然后新增测试用于表空间和数据文件
    RMAN>backup as copy database 
     SQL> create tablespace test_data datafile size 2m;

3. 停掉RAC数据库
      srvctl stop database -d xcldb -o immediate

 4. 破坏掉数据文件
     su - grid 
     export ORACLE_SID=+ASM1
     asmcmd -p
     cd DATA1
     cd DBRAC
     cd DATAFILE
     rm 数据文件
   现在如果回到oracle用户,启动数据库,会报错。

  开始恢复:
     1.重建一个文件
        alter database create datafile 8;
     使用文件号重建了一个文件,使用文件名创建,像下面例子一下,也可,但没必要。
      alter database create datafile '+DATA1/dbrac/......./test.xxx.xxxxxxxxx';
        这是由asm的特性决定的,它要求 asm上的每个文件名必须都是唯一的,它采用
         tag_name.file_number.incarnation的方式命名。你指定个文件名,它也会自动弄成一个名字。

    2. 通过查询控制文件与asm得到两个数据文件名
         2.1得到数据库原来对应的文件名
              SQL>select file#,name from v$datafile;
          2.2在asmcmd中去查到新创建的数据文件名.
   
    3. 把文件名对应的数据文件改成新的数据文件名
        SQL> alter database rename file '+DATA1/dbrac/datafile/test.288.678913234' to '+DATA1/dbrac/datafile/test.288.678953008' ;

    4. 再执行恢复,完成后打开数据库
       SQL> recover datafile 8;
       SQL> alter database open;
    5.检查 

        SQL>select file_name,tablespace_name,bytes/1024/1024 from dba_data_files;


再说另外一种正常文件系统下数据文件丢失的情况:
     数据库重启时报错,发现数据文件所在目录或盘都坏了,没法恢复到原来的路径,但归档完备。     
1. 启动到mount状态 
2. 将出现问题的datafile设为脱机
    SQL> alter database datafile 8 offine;
    此时,数据库可以打开到open状态了.
    SQL>  alter database open;
3. 依数据文件状态及文件号查出数据文件全路径,然后将其更改成可用的路径
    SQL> select file#,name,status from v$datafile;
    SQL> alter database create datafile '/u02/app/oradata/xcldb/test01.dbf';
    SQL> alter database rename file '/u01/app/oradata/xcldb/test01.dbf' to '/u02/app/oradata/xcldb/test01.dbf';
4. 执行恢复
    SQL> recover datafile 8;
5.更改datafile状态为在线
    SQL> alter database datafile 8 online;
6.再次检查下状态
    SQL> select file#,name,status from v$datafile;

    两个案例,原理效果都是一样的,只是细节有一点点不同。
不过这些方法都只能用于恢复非SYSTEM/SYSAUX或不是当前使用的UNDO表空间的数据文件。
如果是这些文件坏了,还是用RMAN或其它手段吧。



MAIL:  xcl_168@aliyun.com

BLOG: http://blog.csdn.net/xcl168


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值