网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle性能调优过程中如何观察缓.
.Oracle DBA应该定期做什么.
.ORACLE在HP-UX下的系列问题处理(.
.[总结]关于oem的一些问题,启动,.
.Oracle9i初始化参数中文说明(8).
.关于触发器修改自身数据表实例.
.oracle中用创建表时Storage中参数.
.配置Oracle,使它支持MTS下分布事.
.Oracle 9i如何管理【管理服务器】.
.对象库的使用.
.Qmail如何做用户伪装.
.“Snapshot too old” Detailed .
.Oracle10g新增的用以简化用户管理.
.带你走进Oracle数据安全的世界一.
.Oracle多行记录字符串综合操作几.
.Oracle 常用SQL查询列表.
.说一说Oracle的优化器(Optimizer).
.VB+Oracle 9i如何构建开发和运行.
.Oracle SQLCODE/SQLERRM 的应用.
.分析数据库性能的SQL.

RMAN恢复实践

发表日期:2008-2-9



  要害词: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:\ORACLE\ORADATA\ORA\REDO01.LOG',
  
  'C:\ORACLE\ORADATA\ORA\REDO01_1.LOG'
  
  ) SIZE 1M,
  
  GROUP 2 (
  
  'C:\ORACLE\ORADATA\ORA\REDO02.LOG',
  
  'C:\ORACLE\ORADATA\ORA\REDO02_1.LOG'
  
  ) SIZE 1M,
  
  GROUP 3 (
  
  'C:\ORACLE\ORADATA\ORA\REDO03_1.LOG',
  
  'C:\ORACLE\ORADATA\ORA\REDO03_2.LOG'
  
  ) SIZE 1M
  
  DATAFILE
  
  'C:\ORACLE\ORADATA\ORA\SYSTEM01.DBF',
  
  'C:\ORACLE\ORADATA\ORA\RBS01.DBF',
  
  'C:\ORACLE\ORADATA\ORA\USERS01.DBF',
  
  'C:\ORACLE\ORADATA\ORA\TEMP01.DBF',
  
  'C:\ORACLE\ORADATA\ORA\TOOLS01.DBF',
  
  'C:\ORACLE\ORADATA\ORA\INDX01.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选项进行数据库的不完全恢复。所有这些的具体过程和以上
  
  的数据库恢复都差不多,不再赘述。
上一篇:为什么划分了独立的boot区以后grub不能识别 人气:597
下一篇:grub为什么会在访问某些scsi硬盘的时候挂起 人气:616
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐