归档下的备份、恢复

归档模式下的备份
    归档模式下可以热备(不停库)也可以冷备(方法同非归档模式)

    冷备:
    把数据库关闭掉,把数据文件、控制文件、日志文件、临时文件、参数文件、密码文件等拷贝到另一位置。
    方法和脚本与非归档一样


    热备
    基本方法:
    1) 先看一下有没有其他在进行的备份,如果有其他在进行的备份,仔细考虑下,是否要继续
        SYS> select * from v$backup;

         FILE# STATUS                CHANGE# TIME
    ---------- ------------------ ---------- ---------
             1 NOT ACTIVE                  0
             2 NOT ACTIVE                  0
             3 NOT ACTIVE                  0
             4 NOT ACTIVE                  0

    2) 热备时建议一个表空间一个表空间的进行,不建议全库一起进行。如果是一个表空间一个表空间
        的进行,查一下该表空间对应的数据文件
    
        SYS> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)",STATUS
                 from dba_data_files order by TABLESPACE_NAME;

     3)把要备份的对象置入备份模式
       SYS> alter tablespace users begin backup;
         或
       SYS> alter database begin backup;


    4)把对应的数据文件文件拷贝到备份位置
      

    5)结束备份对象的备份模式
        SYS> alter tablespace users end  backup;
         或
        SYS> alter database end backup;


归档模式下的恢复
    完全恢复
    基本过程:
    1)将恢复的对象offline,如果不能offline的对象(如system表空间),要启到mount状态

    2)从备份中拷贝备份文件到原有的位置 (restore)
   
    3)应用日志把要恢复的对象前滚

    4)把恢复对象online
       recover datafile ...
       recover tablespace ...
       recover database ...


    例1、
    SYS> host rm /u01/app/oracle/oradata/orcl/users01.dbf
    SYS> shutdown abort

    SYS> startup
     SYS> alter database datafile 4 offline;    -- 数据库启不了,把找不到的数据文件offline
    SYS> alter database open;                  -- 再启数据库

    SYS> host cp /u03/backup/users01.dbf /u01/app/oracle/oradata/orcl/users01.dbf
                  --还原备份的文件

    SYS> recover datafile 4;    --恢复4号文件
    Specify log: {=suggested | filename | AUTO | CANCEL}
    auto

    SYS> alter database datafile 4 online;


    例2:
    SYS> host rm /u01/app/oracle/oradata/orcl/users01.dbf
    SYS> host rm /u01/app/oracle/oradata/orcl/users02.dbf
    SYS> shutdown abort


    SYS> alter database datafile 4 offline;
    SYS> alter database datafile 8 offline;
        -- 数据库启不了,把找不到的数据文件offline

    SYS> alter database open;

    SYS> host cp /u03/backup/users01.dbf /u01/app/oracle/oradata/orcl/users01.dbf
    SYS> host cp /u03/backup/users02.dbf /u01/app/oracle/oradata/orcl/users02.dbf
        还原数据文件

   
    SYS> recover tablespace users;
     Specify log: {=suggested | filename | AUTO | CANCEL}
    auto

    SYS> alter tablespace users online;



    例3:磁盘损坏,导致数据文件丢失,且原有的路径无法访问
    SYS> host rm /u01/app/oracle/oradata/orcl/users01.dbf
    SYS> host rm /u01/app/oracle/oradata/orcl/users02.dbf
        模拟 /u01磁盘损坏,且以后 /u01也无法访问(不能把备份还原到/u01了)
    SYS> shutdown abort;

    SYS> startup;   

        出错了,无法启动

    SYS> alter database datafile 4 offline;
    SYS> alter database datafile 8 offline;
        -- 数据库启不了,把找不到的数据文件offline

    SYS> alter database open;   --先把数据库启来


     SYS> host cp /u03/backup/users01.dbf /u02
    SYS> host cp /u03/backup/users02.dbf /u02/

        由于数据文件的位置已经变了,此时不能直接recover,必须告诉oracle,数据文件位置变了

    SYS> alter database rename file
         '/u01/app/oracle/oradata/orcl/users01.dbf'  to '/u02/users01.dbf';

    SYS> alter database rename file
        '/u01/app/oracle/oradata/orcl/users02.dbf'  to '/u02/users02.dbf';


    SYS> recover tablespace users;
    ORA-00279: change 1391133 generated at 09/23/2012 16:12:04 needed for thread 1
    ORA-00289: suggestion : /u02/arch_log/1_166_792775447.dbf
    ORA-00280: change 1391133 for thread 1 is in sequence #166


    Specify log: {=suggested | filename | AUTO | CANCEL}
    auto

    SYS> alter tablespace users online;


    例4:数据还没来得及备份,就损坏了
    恢复前提:
        数据库文件创建以来的所有日志都在

    SYS> create tablespace xx datafile '/u03/xx01.dbf' size 50m;
    SYS> create table scott.aa tablespace xx as select * from scott.dept;
    SYS> select * from scott.aa;
    SYS> host rm /u03/xx01.dbf

    SYS> shutdown abort;


    SYS> startup ;

        如果启动不了,就把相应的文件 offline ,之后再open

    SYS> alter database create datafile '/u03/xx01.dbf';
        由于文件不存在,又没有备份,所以只能创建一个空的数据文件

    SYS> alter database datafile '/u03/xx01.dbf' offline;
    SYS> recover datafile '/u03/xx01.dbf';

    SYS> alter database datafile '/u03/xx01.dbf' online;


    例5:数据文件没有备份,也没有创建以来的所有日志,但有近期的日志(故障发生以来)
    SYS> host rm /u02/bf_t101.dbf

        模拟数据文件丢了,此时千万不要停库 !!!!!!

    1)找dbw 进程,查看其进程号
        [oracle@t183 fd]$ ps -ef | grep ora_dbw
        oracle   10522     1  0 16:55 ?        00:00:00 ora_dbw0_orcl
        oracle   10710  8515  0 17:08 pts/4    00:00:00 grep ora_dbw

    2)到进程目录的fd 下找到删除文件
        [oracle@t183 fd]$ cd /proc/10522/fd
        [oracle@t183 fd]$ ll

            29 -> /u02/bf_t101.dbf (deleted)

    3)把在进程目录中的删除文件复制到原有位置
        [oracle@t183 fd]$ cp 29 /u02/bf_t101.dbf

    4)恢复
        SYS> alter database datafile '/u02/bf_t101.dbf' offline;

        SYS> recover datafile '/u02/bf_t101.dbf';

        SYS> alter database datafile '/u02/bf_t101.dbf' online;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21175589/viewspace-755948/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21175589/viewspace-755948/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值