ORACLE常见的六种RMAN恢复测试
在ORACLE的日常管理中,需要定期对备份进行测试,以检测备份文件是否可用。以下对常见的恢复场景进行简单介绍。 一、备份前的准备工作 1、查看参数文件的位置 SQL> show parameter spfile; 2、查看控制文件的位置 SQL> show parameter control; 3、查看数据文件的位置 SQL> select name from v$datafile; SQL> select file_name from dba_data_files; 4、查看临时文件的位置 SQL> select name from v$tempfile; SQL> select file_name from dba_temp_files; 5、查看dump目录 SQL> show parameter dump; 6、查看数据库名和dbid SQL> select name,dbid from v$database; 二、执行全库备份 run{ backup database format 'd:rmanfull_%d_%T_%s_%p'; sql 'alter system archive log current'; sql 'alter system archive log current'; sql 'alter system archive log current'; backup archivelog all format 'd:rmanarch_%d_%T_%s_%p'; backup current controlfile format 'd:rmanctl_%d_%T_%s_%p'; } 注:在备份时将控制文件自动备份打开,这样可以自动备份控制文件和参数文件 三、常见情况的备份与恢复 1、一个数据文件损坏(非system和Undo)后的恢复实验 1) 进入数据文件的目录,删除一个数据文件(非system和Undo文件) 注:windows环境下在未关闭数据库的情况下数据文件无法删除,可以先关闭数据库再删除文件 2)关闭数据库,再次启动,会报错 SQL> shutdown immediate; SQL> startup; 3)启动数据库到mount状态,并将删除的数据文件设置为offline SQL> alter database mount; SQL> alter database datafile '删掉文件的绝对路径+文件名' offline; 4)打开数据库 SQL> alter database open; 5)还原并恢复删除的数据文件 RMAN> restore datafile '删掉文件的绝对路径+文件名'; RMAN> recover datafile '删掉文件的绝对路径+文件名'; 6)将删除的数据文件设置为online状态 SQL> alter database datafile '删掉文件的绝对路径+文件名' online; 2、所有数据文件损坏后的恢复实验 1)进入数据文件的目录,删除所有数据文件。 2)关闭数据库 SQL> shutdown immediate; 注:在windows平台下操作时步骤1和2需要反过来执行。 3)启动数据库到mount状态 SQL> startup mount; 4)还原并恢复数据库 RMAN> restore database; RMAN> recover database; 5)打开数据库 SQL> alter database open; 3、SYSTEM或者UNDO损坏后的恢复实验 1)进入数据文件的目录,删除SYSTEM01.DBF文件 2)关闭数据库。 SQL> shutdown immediate; 注:在windows平台下操作时步骤1和2需要反过来执行。 3)启动数据库到mount状态 SQL> startup mount; 4)还原并恢复SYSTEM01.DBF文件 RMAN> restore datafile '文件路径/SYSTEM01.DBF'; RMAN> recover datafile '文件路径/SYSTEM01.DBF'; 5)打开数据库 SQL> alter database open; 4、参数文件损坏后的恢复实验 1)全库备份:数据文件+归档日志+控制文件+参数文件(过程略) 2)一致的关闭数据库 SQL> shutdown immediate; 3)删除参数文件initSID.ora和spfileSID.ora 4)自己在$ORACLE_HOME/dbs目录手动创建一个参数文件:initSID.ora,内容如下 *.db_name='数据库名' 5)启动数据库到nomount状态 SQL> startup nomount; 6)恢复参数文件 RMAN> restore spfile from 'd:rmanc-xxxxxxxxx'; 注:c-xxxxx为最后备份的参数文件 7)关闭数据库 SQL> shutdown immediate; 8)打开数据库 SQL> startup; 5、控制文件损坏后的恢复 1)执行一次全库备份:数据文件+归档日志+控制文件+参数文件 2)一致的关闭数据库 SQL> shutdown immediate; 3)删除所有的控制文件 4)启动数据库到nomount状态 SQL> startup nomount; 5)恢复控制文件 RMAN> restore controlfile from 'd:rmanctl-xxxx'; 注:ctl-xxxx为最后备份的控制文件 6)启动数据库到mount状态 SQL> alter database mount; 7)恢复并还原数据库 RMAN> restore database; RMAN> recover database; 8)打开数据库 SQL> alter database open resetlogs; 注:以resetlogs方式打开后,需要立即对数据库做一个全库备份。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |