基于catalog 的RMAN 备份与恢复

               

--=================================

-- 基于catalog RMAN 备份与恢复

--=================================

 

    RMAN的备份与恢复存储仓库的数据通常存放于控制文件或恢复目录中,本文主要讲述基于catalog的备份与恢复。

    关于catalog的创建请参考:RMAN catalog的创建和使用

 

    catalog方式的RMAN备份与恢复只不过是将备份恢复信息数据放在catalog目录内,普通的rman方式则是存放在控制文件中

    catalog方式可以存储常用或特定的备份与恢复的脚本

    有关catalog方式RMAN存储脚本请参考:基于 catalog 创建RMAN存储脚本

   

一、基于catalog来备份数据库(目标数据库orcl,恢复目录数据库asmdb)   

    首先基于catalog创建备份脚本

    --连接到RMAN

        [oracle@oradb ~]$ rman target sys/redhat@orcl catalog rman/rman@asmdb

        connected to target database: ORCL (DBID=1263182651)

        connected to recovery catalog database 

   

    --创建全局删除废弃备份的脚本

        RMAN> create global script global_del_obso  comment 'A script for obsolete backup and delete it' {

        2> allocate channel ch1 device type disk;

        3> delete obsolete recovery window of 7 days; 

        4> release channel ch1;

        5> }

 

        new incarnation of database registered in recovery catalog

        starting full resync of recovery catalog

        full resync complete

        created global script global_del_obso  

   

    --创建全局归档日志的备份脚本

        RMAN> create global script global_arch

        2> comment ' A script for archivelog and delete it '

        3> {

        4>   allocate channel ch1 device type disk;

        5>   sql " alter system archive log current";

        6>   set limit channel ch1 readrate=10240;

        7>   set limit channel ch1 kbytes=2048000;

        8>   backup as compressed backupset archivelog all delete input

        9>   format='/u01/bk/rmbk/arch_%d_%U'

        10>  tag='Archbk';

        11>  release channel ch1;

        12> }

 

        created global script global_arch

 

    --创建全局0级增量备份脚本  

        RMAN> create global script global_inc0

        2> comment ' A script for backup database using incremental level 0'

        3> {

        4>   execute global script global_del_obso;

        5>   allocate channel ch1 device type disk;

        6>   set limit channel ch1 readrate=10240;

        7>   set limit channel ch1 kbytes=2048000;

        8>   backup as compressed backupset incremental level 0 database

        9>   format='/u01/bk/rmbk/inc0_%d_%U'

        10>  tag='Inc0';

        11>  release channel ch1;

        12>  execute global script global_arch;

        13> }

 

        created global script global_inc0

   

    --列出已经创建的全局脚本

        RMAN> list global script names;

 

        List of Stored Scripts in Recovery Catalog

 

            Global Scripts

 

               Script Name

               Description

               -----------------------------------------------------------------------

               global_arch

                A script for archivelog and delete it

 

               global_del_obso

                A script for obsolete backup and delete it

 

               global_inc0

                A script for backup database using incremental level 0

   

    --启用控制文件的自动备份功能

        RMAN> configure controlfile autobackup on;

        RMAN> configure controlfile autobackup format for device type disk to '/u01/bk/rmbk/auto_ctl_%d_%f';

   

    --删除以前的备份

        RMAN> delete noprompt backupset;

   

    --备份前验证归档日志是否存在

        RMAN> crosscheck archivelog all;

       

    --删除无效的归档日志信息

        RMAN> delete noprompt expired archivelog all;

       

    --使用0级增量备份数据库

        RMAN> run { execute global script global_inc0;}

 

    --查看刚刚完成的备份情况

        RMAN> list backupset summary;

        RMAN> list backupset ;

        RMAN> list backup of controlfile ;

        RMAN> list backup of archivelog all;

        RMAN> list backup of database;

        RMAN> list backup of datafile n ;

       

二、恢复操作       

    1.非系统表空间的恢复步骤

        a. alter datafile n offline immediate; | alter tablespace tbs_name offline immediate;

        b. restore

        c. recover

        d. alter datafile n online; | alter tablespace tbs_name online

       

        --删除非系统表空间users的数据文件(数据库位于open 状态

            [oracle@oradb orcl]$ pwd

            /u01/oracle/oradata/orcl

            [oracle@oradb orcl]$ rm users01.dbf    

 

            lion@ORCL> select * from tb2;

            select * from tb2

                          *

            ERROR at line 1:

            ORA-01116: error in opening database file 4

            ORA-01110: data file 4: '/u01/oracle/oradata/orcl/users01.dbf'

            ORA-27041: unable to open file

            Linux Error: 2: No such file or directory

            Additional information: 3

 

            RMAN> run {

            2> allocate channel ch1 device type disk;

            3> sql " alter tablespace users offline immediate "; 

            4> restore tablespace users;

            5> recover tablespace users;

            6> sql " alter tablespace users online ";

            7> }

 

            lion@ORCL> select * from tb2;

 

                    ID NAME

            ---------- ---------------

                     1 Robinson

 

            也可以使用下面的恢复方式来完成恢复     

            RMAN> run {

            2> allocate channel ch1 device type disk;

            3> sql " alter database datafile 4 offline ";

            4> restore datafile 4;

            5> recover datafile 4;

            6> sql " alter database datafile 4 online ";

            7> }

 

        如果介质恢复时,需要用的日志尚未归档,需要指定联机重做日志文件所在的位置       

        注意

        表空间几种不同的脱机方式

            offline normal :

                表空间脱机的缺省方式,将位于SGA中且与该表空间所有的数据文件相关的数据块(blocks)写入到数据文件之后再进行脱机

                再次联机时不需要做介质恢复。

            offline temporary :

                实施检查点进程,即同样将SGA中且与该表空间所有的数据文件相关的数据块(blocks)写入到数据文件之后再进行脱机

                不保证所有的数据能够写入到数据文件。再次联机时要做介质恢复。

            offline immediate :

                不保证表空间的数据可用,也不实施检查点进程而直接脱机,再次联机时要做介质恢复。

               

            offline temporary offline immediate 脱机方式不适用于数据文件

       

            lion@ORCL> alter database datfile 4 offline immediate;

            alter database datfile 4 offline immediate

                                   *

            ERROR at line 1:

            ORA-02231: missing or invalid option to ALTER DATABASE

 

 

            lion@ORCL> alter database datfile 4 offline temporary;

            alter database datfile 4 offline temporary

                                   *

            ERROR at line 1:

            ORA-02231: missing or invalid option to ALTER DATABAS

       

            更多关于表空间与数据文件的管理,请参考:Oracle 表空间与数据文件

        对于表空间存在多个数据文件的情况,而单个或较少的数据文件受损,应尽可能使用第二种方式来恢复.resotre & recover datafile n

 

    2.UNDO表空间的恢复

        关于UNDO表空间的管理请参考:Oracle 回滚(ROLLBACK)和撤销(UNDO)

        恢复步骤(undo丢失后)

            alter database datafile 2 online;

            alter database datafile 2 offline;

            select * from v$recover_file;

            restore datafile 2;   --RMAN 完成

             

            recover datafile 2 ; 

            alter database datafile 2 online;

           

           

        --首先做一些操作,将数据填充到undo表空间

            lion@ORCL> select * from tb2;

 

                    ID NAME

            ---------- ---------------

                     1 Jack

 

            lion@ORCL> insert into tb2 select 2,'Jackson' from dual;

 

            lion@ORCL> commit;

 

            lion@ORCL> delete from tb2 where id=1;

 

            lion@ORCL> select * from tb2;

 

                    ID NAME

            ---------- ---------------

                     2 Jackson

                     

            lion@ORCL> ho rm $ORACLE_BASE/oradata/orcl/undotbs01.dbf

 

        注意:undo表空间不能被offline,也不能被readonly

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值