壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 308|回复: 0

Oracle 备份恢复实例

[复制链接]
发表于 2012/3/15 22:56:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
实验环境:
Oracle 817 (32BIT)
AIX 5100-03

初始状态:
0 export Oracle_SID=ora
1 增加表空间TEST,对应数据文件为/Oracle/oradata/test.dbf,大小为1M字节:
SQL>create tablespace test datafile '/Oracle/oradata/test.dbf' size 1m;
2 在TEST表空间上建test表:
SQL>create table test(
    name char(10),
       age number
    )
    tablespace test;
3 插入记录:
SQL>insert into test values ('zhangsan',20);
SQL>insert into test values ('lisi',30);
SQL>commit

NON-ARCHIVED LOG方式:

一 全备份及恢复(no catalog)
备份:
   1 SQL>shutdown immediate
   2 SQL>startup mount
   3 $rman target / nocatalog
   4 RMAN>run {
        allocate channel t1 type disk;
        backup
           format "/Oracle/fullbackup_%d_%t"
          (database);
        release channel t1;
     }
   5 SQL>alter database backup controlfile to '/Oracle/ctlfile.copy' reuse;
   6 SQL>alter database open;
   7 SQL>insert into test values ('abc',22);
     SQL>commit
     SQL>select * from test;
        可看到现在有三条记录.
故障模拟:
   $rm /Oracle/oradata/*(所有文件丢失)
   SQL>shutdown abort
恢复:
   0 除非硬件完全损坏,一定要把当前状态OS级备份.保证恢复不成功时可恢复原状态.
   1 $cp /Oracle/ctlfile.copy /Oracle/oradata/control01.ctl
     $cp /Oracle/ctlfile.copy /Oracle/oradata/control02.ctl
     $cp /Oracle/ctlfile.copy /Oracle/oradata/control03.ctl
   2 SQL>startup mount
   3 RMAN>run {
         allocate channel t1 type disk;
         restore database;      
         #注:现在是一致性恢复,并且没有ARCHIVED LOG可以使用,故不必使用RECOVER DATABASE,使用反而会出错
         release channel t1;
     }
   4 SQL>alter database open resetlogs;
   5 SQL>select * from test;
        可看到现在只有两条记录.
特殊情况(几乎不存在):
   当数据库的当前CONTROL FILE完好,且自上次备份以来所有修改都在当前REDO LOG FILE中(尚未循环使用),此时可恢复至故障点.
   故障模拟:
      1 全备,过程同上;
      2 插入一条记录,同上
      3 保留当前CONTROL FILE和当前REDO LOG FILE,只删除*.dbf;
   恢复:
   0 除非硬件完全损坏,一定要把当前状态OS级备份.保证恢复不成功时可恢复原状态.
   1 SQL>startup mount
   2 RMAN>run {
              allocate channel t1 type disk;
              restore datafile '/Oracle/oradata/system01.dbf','/Oracle/oradata/tools01.dbf',
            '/Oracle/oradata/rbs01.dbf', '/Oracle/oradata/indx01.dbf',
            '/Oracle/oradata/temp01.dbf','/Oracle/oradata/users01.dbf',
            '/Oracle/oradata/test.dbf';
                #也可为restore tablespace 'SYSTEM','TOOLS','RBS','INDX','TEMP','USERS','TEST';
                #一块恢复比单独恢复快许多.
              recover database;
        release channel t1;
       }
   3 SQL>alter database open;
   4 SQL>select * from test;
            可看到三条记录.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 13:52 , Processed in 0.010707 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表