ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库备份与异机恢复——热备份方式

数据库备份与异机恢复——热备份方式

Linux操作系统 作者:ddlovefish 时间:2013-11-18 10:35:48 0 删除 编辑

数据库备份与异机恢复——热备份方式

        

         在日常工作中,我们做的比较多的一项工作就是数据库备份和恢复,因此有一套高效和方便的备份恢复机制显得尤为重要,而rman备份正式这样一种非常简单和高效的方式,值得使用。

         假设要求我们每一天都对数据库做一次全备份,同时根据需要可能在第二天根据前一天的备份在另外一台机器上完成数据库恢复,并且恢复过程尽可能的快速有效,下面将演示这种场景下的备份和恢复过程。

首先我们可以在晚上12点左右执行备份操作,使用sys用户连接需要备份的数据库通过rman,然后执行备份脚本

run{

     CONFIGURE DEFAULT DEVICE TYPE TO DISK;

     CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;

     CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 8G;

     CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'E:\oracle\db_BackupFroRman\ora_test_%U_%T';

     BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

     BACKUP SPFILE INCLUDE CURRENT CONTROLFILE;

}

该脚本执行后将产生的该数据库的完整备份,包括参数文件、控制文件、数据文件和归档日志文件,所有备份数据将保存在我们指定的路径下,这里是E:\oracle\db_BackupFroRman\目录下,同时最好将这些备份数据拷贝到一台专门的备份机上,保障备份文件的安全。

在第二天进行恢复前一天的备份数据的过程为:

1)         从备份机上拷贝出前一天的所有备份数据,保存在一个目录下,比如E:\ORACLE\DB_BACKUPFRORMAN\

2)         使用oradim命令创建一个数据库实例(在windows平台需要)

3)         登入rman开始恢复参数文件:

SET DBID 2128249921

这里2128249921为源数据库的数据库ID

STARTUP NOMOUNT;

run{    

     RESTORE SPFILE TO PFILE 'D:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITTESTCP.ORA' FROM 'E:\ORACLE\DB_BACKUPFRORMAN\ORA_TEST_0COOUFFQ_1_1_20131114';

     SHUTDOWN IMMEDIATE;

}

以上就生成了一个文本类型的pfile,然后可以直接打开记事本对控制文件或数据文件或闪回区或归档日志等的文件路径进行修改,然后生成spfile,并重启:

SET DBID 2128249921

sql "create spfile from pfile";

startup nomount ;

 

4)         重建好控制文件和数据文件等其他文件所在的目录,比如数据文件目录F:\oracle\oradata\testcp ,闪回区目录 E:\oracle\fast_recovery_area\testcp

5)         将数据库启动到nomount状态下,恢复控制文件:

run{

     restore controlfile from 'E:\ORACLE\DB_BACKUPFRORMAN2\ORA_TEST_0COOUFFQ_1_1_20131114';

     alter database mount;   

}

6)         将数据库启动到mount状态下,恢复数据库,并恢复数据库到一致性状态(比如指定恢复到在备份集中最后一个归档日志时的状态):

catalog start with 'E:\oracle\db_BackupFroRman';

sql "alter database rename file ''E:\oracle\oradata\test\REDO01.log'' to ''F:\oracle\oradata\testcp\redo01.log''";

sql "alter database rename file ''E:\oracle\oradata\test\REDO02.log'' to ''F:\oracle\oradata\testcp\redo02.log''";

sql "alter database rename file ''E:\oracle\oradata\test\REDO03.log'' to ''F:\oracle\oradata\testcp\redo03.log''";

run{

     set newname for database to 'F:\oracle\oradata\testcp\%b';    

     set until SEQUENCE 574;

     restore database;

     switch datafile all;

     recover database;

}

7)         打开数据库:

ALTER DATABASE OPEN RESETLOGS;

注意上面SEQUENCE 574表示这里只恢复到第573号重做日志文件后即结束恢复该数值需要根据实际的备份数据进行修改;另外以上的路径也都要根据实际情况进行修改。

只需要上面简单的几个步骤,我们就完成了一个基本的数据库备份和异机恢复过程,经测试在普通pc机上,20GB的数据备份,整个恢复在30分钟左右,完全可以满足目前的要求。进一步的可以将备份脚本加入到操作系统的计划任务中定时执行,自动化的完成备份工作,从而改善我们的工作效率。


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

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-11-14

  • 博文量
    19
  • 访问量
    49651