博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RMAN恢复实践(转)
阅读量:2450 次
发布时间:2019-05-10

本文共 5103 字,大约阅读时间需要 17 分钟。

RMAN恢复实践(转)[@more@]

  关键词:Oracle、恢复、RMAN

  

  谈恢复肯定离不开备份,不过今天我们的重点不在于此,我在在这里将备份分为两类:操作系统备份和数据库备份,而数据库备份工作我们大部分都是用RMAN 来做。对于使用RMAN 我强烈建议使用catalog mode。

  

  测试环境:WIN2K ADV+ORACLE817

  

  RMAN:target database named ORA,catalog database named RCVDB

  

  

  

  一、Control file的恢复

  

  说明:RMAN 的备份必须在catalog mode下进行,否则备份了control file也没有用;但即使是这样有时候可能还会出现很多问题。建议:control file 用SQL或操作系统的方式做备份和恢复。

  

  1、RMAN备份的恢复

  

  备份:

  

  run {

  

  allocate channel c1 type disk;

  

  backup current controlfile;

  

  }

  

  恢复:

  

  run {

  

  allocate channel c1 type disk;

  

  restore controlfile to '/oracle/oradata/ora/control01.ctl';

  

  replicate controlfile from '/oracle/oradata/ora/control01.ctl';

  

  restore database;

  

  sql 'alter database mount';

  

  recover database until cancel;

  

  sql 'alter database open resetlogs';

  

  release channel c1;

  

  }

  

  使用resetlogs之后需在catalog database 上进行reset database,原有备份信息将不可用,所以要及时进行新的完全备份。

  

  2、SQL备份的恢复

  

  备份:

  

  alter database backup controlfile to trace;

  

  恢复:

  

  先将数据库shutdown,然后从备份所产生的trace文件中拷出创建恢复所用的SQL执行一遍

  

  即可。如果你之前没有做这样的备份那也没关系,形式如下你可以照着写一个:

  

  #--------------------------------BEGIN-----------------------------------------

  

  # The following commands will create a new control file and use it

  

  # to open the database.

  

  # Data used by the recovery manager will be lost. Additional logs may

  

  # be required for media recovery of offline data files. Use this

  

  # only if the current version of all online logs are available.

  

  STARTUP NOMOUNT

  

  CREATE CONTROLFILE REUSE DATABASE "ORA" NORESETLOGS

  

  NOARCHIVELOG

  

  MAXLOGFILES 32

  

  MAXLOGMEMBERS 2

  

  MAXDATAFILES 32

  

  MAXINSTANCES 16

  

  MAXLOGHISTORY 680

  

  LOGFILE

  

  GROUP 1 (

  

  'C:ORACLEORADATAORAREDO01.LOG',

  

  'C:ORACLEORADATAORAREDO01_1.LOG'

  

  ) SIZE 1M,

  

  GROUP 2 (

  

  'C:ORACLEORADATAORAREDO02.LOG',

  

  'C:ORACLEORADATAORAREDO02_1.LOG'

  

  ) SIZE 1M,

  

  GROUP 3 (

  

  'C:ORACLEORADATAORAREDO03_1.LOG',

  

  'C:ORACLEORADATAORAREDO03_2.LOG'

  

  ) SIZE 1M

  

  DATAFILE

  

  'C:ORACLEORADATAORASYSTEM01.DBF',

  

  'C:ORACLEORADATAORARBS01.DBF',

  

  'C:ORACLEORADATAORAUSERS01.DBF',

  

  'C:ORACLEORADATAORATEMP01.DBF',

  

  'C:ORACLEORADATAORATOOLS01.DBF',

  

  'C:ORACLEORADATAORAINDX01.DBF'

  

  CHARACTER SET ZHS16GBK

  

  ;

  

  # Recovery is required if any of the datafiles are restored backups,

  

  # or if the last shutdown was not normal or immediate.

  

  RECOVER DATABASE

  

  # Database can now be opened normally.

  

  ALTER DATABASE OPEN;

  

  #----------------------------------END-----------------------------------------

  

  3、OS 备份的恢复

  

  备份:

  

  OS copy

  

  恢复:

  

  OS copy回来即可,要注意的是这个备份必须是最新有效的。

  

  二、Database的恢复

  

  A、To restore the database from host_a to host_b with the same file system

  

  #此处使用recovery catalog;

  

  #如果不是catalog mode,就用OS COPY直接将control file

  

  #copy过来并mount database。

  

  1、copy the init.ora file from host_a to host_b using o/s utility

  

  2、rman target sys/sys@host_b catalog rman/rman@rcat

  

  3、startup nomount

  

  4、run {

  

  allocate channel c1 type disk;

  

  restore controlfile;

  

  sql ‘alter database mount’;

  

  }

  

  5、select min(scn) from (

  

  select max(next_change#) scn from v$archived_log

  

  group by thread#);

  

  6、run {

  

  set until scn=500; #use appropriate SCN for incomplete recovery

  

  allocate channel c1 type ‘sbt_type’;

  

  restore database;

  

  recover database;

  

  sql ‘alter database open resetlogs’;

  

  }

  

  B、To restore the database from host_a to host_b with a different filesystem

  

  步骤和A差不多,不同的是在启动数据库之前要修改init.ora文件中所有和路径相关的参数,

  

  如:*_DEST,*_PATH 等。然后执行如下脚本:

  

  run {

  

  set until scn=500;

  

  allocate channel c1 type disk;

  

  set newname for datafile 1 to ‘/disk’/%U’;

  

  set newname for datafile 2 to ‘/disk’/%U’;

  

  set newname for datafile 3 to ‘/disk’/%U’;

  

  set newname for datafile 4 to ‘/disk’/%U’;

  

  set newname for datafile 5 to ‘/disk’/%U’;

  

  set newname for datafile 6 to ‘/disk’/%U’;

  

  set newname for datafile 7 to ‘/disk’/%U’;

  

  sql ‘alter database mount’;

  

  restore database;

  

  switch datafile all; #points the control file to the renamed datafiles

  

  recover database;

  

  .... ....

  

  sql ‘alter database open resetlogs’;

  

  }

  

  三、Tablespace and datafile的恢复

  

  run {

  

  allocate channel c1 type disk;

  

  sql ‘alter tablespace users offline immediate’; #must be in archive log mode

  

  #如下改变datafile位置

  

  set newname for datafile 'c:/oracle/oradata/ora/users01.dbf'

  

  to 'c:/oracle/oradata/orabk/user01.dbf';

  

  restore tablespace users;

  

  switch datafile all;

  

  recover tablespace users;

  

  sql ‘alter tablespace users online’;

  

  }

  

  如果不在archive log mode下,执行以上SQL时会出错:ORA-01145。你将不得不shutdown。

  

  四、关于set until 选项

  

  set until后面可以跟time、scn和logseq三个不同的选项,当数据库运行在noarchivelog

  

  mode 下时可以使用until cancel选项进行数据库的不完全恢复。所有这些的具体过程和以上

  

  的数据库恢复都差不多,不再赘述。

  

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

转载于:http://blog.itpub.net/8225414/viewspace-956976/

你可能感兴趣的文章
robots.txt_robots.txt在开发服务器上重新路由
查看>>
css压缩_使用PHP轻松实现CSS压缩
查看>>
印象chrome_Google Chrome的第一印象
查看>>
mootools_使用MooTools进行背景动画
查看>>
mootools_使用MooTools 1.2分配锚点ID
查看>>
使用MySQL DATE_FORMAT()格式化日期字段
查看>>
mootools_使用MooTools的Digg样式动态共享小部件
查看>>
php验证码数字_PHP:验证数值和数字
查看>>
做了磁盘阵列的硬盘如何恢复_从自制软件恢复磁盘空间
查看>>
post 重复参数_参数名称重复
查看>>
保存到VS Code后如何修复ESLint错误
查看>>
Object.fromEntries
查看>>
mongdb选择存储引擎:_选择引擎:从右到左
查看>>
pubg 接口在哪里_如何在PUBG中获取绿血
查看>>
node压缩css_Node.js CSS压缩器:clean-css
查看>>
JavaScript CSS助手
查看>>
邪恶的AJAX:使用jQuery的Spyjax
查看>>
css指针悬停_CSS指针事件
查看>>
目标检测 多分辨率检测_检测视频分辨率
查看>>
ip校验和 tcp校验和_如何校验和
查看>>