RMAN 备份和恢复

在归档模式下:

1.rman登陆,备份全库

     $rman target /
     RMAN>backup database;             # DBID=1180863394,数据库唯一标识号

1).丢失所有数据文件下的恢复:

       $rm *.dbf         # 模拟丢失所有数据文件
       RMAN>shutdown abort
       $rman target /
       RMAN>startup mount;         # 在RMAN下,启动数据库到mount状态
       RMAN>restore database;      # 还原数据库[RMAN自动根据备份还原数据库]
       RMAN>recover database;      # 恢复数据库[应用归档日志的过程]
       RMAN>alter database open;

2).在数据库关闭的情况下,丢失一个数据文件:

       $rman target /
       RMAN>backup as backupset database;    # 备份数据库,以备份集的方式
       $rm user01.dbf                # 模拟一个数据文件丢失
       $rman target /
       RMAN>shutdown abort
       RMAN>startup mount;           # 登陆RMAN,数据库启动到mount状态
       RMAN>restore datafile xx;     # 还原数据文件[xx 代表数据文件的编号]
       RMAN>recover datafile xx;     # 恢复数据文件
       RMAN>alter database open;

3).在数据库open的情况下,丢失一个数据文件:

       RMAN>sql 'alter tablespace ts_name offline immediate';   # 让丢失的那个数据文件脱机
       RMAN>restore tablespace ts_name;         # 还原数据文件
       RMAN>recover tablespace ts_name;         # 恢复数据文件
       RMAN>sql 'alter tablespace ts_name online';   # 使数据文件联机

4).系统表空间数据文件丢失:

        $rm system file
        shutdown abort            # 模拟系统表空间数据文件丢失
        RMAN>startup mount        # 启动到mount状态
        RMAN>restore datafile 1;  # 还原数据文件
        RMAN>recover datafile 1;  # 恢复数据文件
        RMAN>alter database open;

5).丢失UNDO表空间数据文件:

        rm undo file
        shutdown abort;        # 模拟undo数据文件丢失
        rman tartget /
        RMAN>startup mount;    # 登陆RMAN,启动到mount状态
        RMAN>report schema;    # 显示所有数据文件对象
        RMAN>restore datafile x;  # 还原指定数据文件[这里特指UNDO]
        RMAN>recover datafile x;  # 恢复指定数据文件
        RMAN>alter database open;

6).数据文件丢失,还原数据文件到一个新的位置:

       alter tablespace users offline immediate;
       or alter database datafile x offline;          # 使用上面两种方法,使数据文件脱机
       RMAN> run{
             set newname for datafile '/u01/app/oracle/oradata/orcl/DATA_TS01.DBF'
             to '/u02/app/oracle/oradata/orcl/DATA_TS01.DBF';    # 将旧文件制定到新的地点
             restore datafile 6;   # 还原数据文件
             switch datafile 6;    # 数据文件切换[此步很重要,移动要做]
             recover datafile 6;   # 恢复数据文件
             }                         
       RMAN>sql 'alter tablespace users online';  # 联机

7).恢复数据库到一台新的主机[可以算是迁移数据库]

前期准备:
A.记录源数据库的DBID[这里很重要,必须记录]
B.复制源数据库参数文件到新的主机相应的目录[…./dbs/….]
C.确认源数据库有备份,包括控制文件[建议,开启自动备份 CONFIGURE CONTROLFILE AUTOBACKUP on],方便新的主机访问

还原数据库到新的主机:[在新主机上操作]

(1).$ setenv ORACLE_SID orcl # 设置实例[原数据库的实例名]

(2).$ rman TARGET / # 登陆RMAN

(3).RMAN> SET DBID 1090770270; # DBID设置为源数据库的DBID,可以在源数据库上,通过V$DATABASE视图查询

(4).RMAN> STARTUP NOMOUNT; # 启动数据库到nomount状态 [这里会报下面的错]

startup failed: ORA-01078: failure in processing system parameters

(5).还原参数文件

      RMAN>RUN
          {
           RESTORE SPFILE FROM AUTOBACKUP;    # 还原参数文件,关闭数据库
           SHUTDOWN ABORT;
          }

(6).修改参数文件,相应文件的位置[这里建议新机器的路径和目前机器的路径一致]

(7).RMAN> STARTUP NOMOUNT ; # 用新的参数文件启动到nomount状态

(8).还原控制文件

      RUN
       {
         RESTORE CONTROLFILE FROM AUTOBACKUP;
         ALTER DATABASE MOUNT;
       }

(9).还原数据文件和日志文件

            RUN
               {  # 重命名相关数据文件,日志文件
                SET NEWNAME FOR DATAFILE 1 TO '?/oradata/test/system01.dbf';
                SET NEWNAME FOR DATAFILE 2 TO '?/oradata/test/undotbs01.dbf';
                SET NEWNAME FOR DATAFILE 3 TO '?/oradata/test/sysaux.dbf';
                SET NEWNAME FOR DATAFILE 4 TO '?/oradata/test/users01.dbf';
                SET NEWNAME FOR DATAFILE 5 TO '?/oradata/test/example01.dbf';
                SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/orcl/redo01.log''
                  TO ''?/oradata/test/redo01.log'' ";
                SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/orcl/redo02.log''
                 TO ''?/oradata/test/redo02.log'' ";
                SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/orcl/redo03.log''
                TO ''?/oradata/test/redo03.log'' ";
                RESTORE DATABASE;
                SWITCH DATAFILE ALL;    # 数据文件切换[重要]
                RECOVER DATABASE;
               }

(10).以RESETLOGS方式打开数据库:

RMAN> ALTER DATABASE OPEN RESETLOGS;

2.备份相关视图
v$backup_files
v$backup_datafile
v$backup_set
v$backup_piece
v$backup_redolog
v$backup_spfile
v$backup_device
v$rman_configuration
v$copy_corruption

Author: Michael

关注数据分析,挖掘数据金矿。

Leave a Reply

Your email address will not be published. Required fields are marked *