当前位置: 代码迷 >> 综合 >> Rman备份及异机恢复步骤
  详细解决方案

Rman备份及异机恢复步骤

热度:16   发布时间:2024-02-10 16:25:18.0

  一、rman备份脚本

  

RUN {

allocate channel c1 device type disk ;

configure retention policy to redundancy 3 ;  

configure archivelog backup copies for device type disk to 3;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

 

delete noprompt obsolete ;

backup database format 'g:\backup\db_%T_%U'

plus archivelog format 'g:\backup\arch_%T_%U' ;

 

crosscheck backup ;

delete noprompt obsolete ;

delete noprompt expired backup;

 

crosscheck archivelog all;

delete expired archivelog all;

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

 

host 'copy /y D:\oracle\product\10.2.0\oradata\orcl\control*.ctl g:\backup';

host 'copy /y D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora g:\backup';

release channel c1;

}  

其中crosscheck archivelog all;可以用change  archivelog all crosscheck; 代替,区别见文档最后说明。

 

 二、Rman备份恢复步骤

1、备份现有spfile ,避免新的配置文件无法启动。

   sqlplus / as sysdba;

   sql> shutdown immediate

   SQL> startup nomount;

   sql> create pfile='d:\inipfile.txt' from spfile='D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ora';

   利用备份产生新的spfile文件语法:sql >create spfile='D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ora' from pfile='d:\inipfile.txt';

2、d:> rman target /

3、Rman>shutdown immedaite;

4、rman> startup nomount pfile='d:\inipfile.txt'

5、Rman> set dbid 1286861270;

6、恢复控制文件。 rman> restore controlfile from  'G:\backup\CTL_SP_C-1286861270-20200803-00';

7、恢复spfile。 rman>restore spfile to  'D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ora' from  'G:\backup\CTL_SP_C-1286861270-20200803-00';

8、装载数据库. rman>alter database mount;

9、注册备份目录  rman>catalog start with 'G:\backup\';

10、恢复数据文件 rman>restore database;

11、删除过期备份,避免找不到原有文件导致后续备份失败;

    rman>crosscheck backup;

    rman>delete noprompt expired backup;

    rman>change  archivelog all crosscheck;

    rman>delete expired archivelog all;        

    rman>exit

12、重新进入 d:>sqlplus  / as sysdba;

13、利用新的spfile启动并设置相关参数

    sql> shutdown immediate;

    SQL> startup mount;

    sql> alter system set "_allow_resetlogs_corruption"=true scope=spfile; --关键语句,否则打不开数据库

14、打开数据库

    sql>shutdown immediate;

    sql>startup mount;  -- 使新修改的参数起作用

    sql> alter database open resetlogs;

15、重新关闭数据库,然后打开测试是否正常。

    sql>shutdown immediate;

    sql>startup;

16、查看相关参数,并设置归档和归档目录。参数在v$parameter动态参数视图中

   查看结构 desc v$parameter;

   sql> select log_mode from v$database;

   sql> show parameter log_archive;

   若未归档,设置 sql>alter database archivelog;

   查看归档sql>archive log list ;

   设置归档路径 SQL>alter system set log_archive_dest_1='location=e:\archive' scope=spfile;

   切换日志,看归档结果SQL>alter system switch logfile;

   若没有改变,重启数据库使spfile发挥作用后再试。

17、退出sqlplus,恢复完成。

   

rosscheck archivelog all;  -- 检查归档日志是否过期,过期后标示expired 状态,手工删除日志不满足过期则不处理

change  archivelog all crosscheck; -- 检查归档日志是否过期,同时对手工删除的日志标示过期状态