Oracle 10g学习之数据库恢复

2016-02-19 18:30 8 1 收藏

下面图老师小编要跟大家分享Oracle 10g学习之数据库恢复,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

  目标

  数据库恢复

  恢复控制文件

  不完全恢复的原因

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  使用EM完成不完全恢复

  使用RMAN完成不完全恢复

  使用SQL完成不完全恢复

  在RESETLOGS操作之后完成数据库恢复

  10g有三种方法恢复:1.传统的用户管理恢复过程2.RMAN 3.使用EM

  理解Restore(重建)和Recovery(恢复)过程

  重建:包括复制必要的物理文件

  恢复:取得数据文件并应用归档日志的过程

  服务器管理恢复

  ORACLE推荐使用RMAN完成备份和恢复过程。

  RMAN恢复经常被称为服务器管理恢复,因为恢复由服务器进程完成。

  例子:

  使用restore和recover命令将数据库备份重建:

  1.目标数据库处于mount状态

  2.执行命令

   RMANrun
  {allocatechannelc1typedisk;
  Restoredatabase;
  Recoverdatabase;
  Alterdatabaseopen;
  }

  用户管理恢复

  传统的恢复方法。用户直接管理恢复数据库时要求的数据库文件。

  1.确定需要恢复的数据库文件

  2.数据库处于mount或者open状态

  3.手工复制丢失的文件到适当位置

  4.Mount状态下执行recover database(如果需要的话)

  例子:恢复丢失了一个数据文件的数据库、

  1.确定丢失的数据文件是users01.bdf

  2.从最近一次备份的磁盘上拷贝丢失的数据文件(物理拷贝) 

   Cope..backuporacle10tusers01.bdf

  3.启动到mount状态,执行recover database;

  4.Alterdatabaseopen

  恢复控制文件

  控制文件包括RMAN元数据信息和使用Recovery Manager目录时所必须的资料档案库信息。

  10g中RMAN引入了控制文件自动备份

  恢复控制文件的方法:

  1.恢复控制文件自动备份

  1)配置RMAN

   RMANconnecttargetsys/orcl@test

  连接到目标数据库: TEST (DBID=1961907796) 

   RMANconfigurecontrolfileautobackupon;

  使用目标数据库控制文件替代恢复目录

  新的 RMAN 配置参数:

   CONFIGURECONTROLFILEAUTOBACKUPON;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  已成功存储新的 RMAN 配置参数

  2)完成一个备份 

   RMANrun
  2{
  3backupdatabase;
  4backup(archivelogall);
  5}

  3)删除控制文件来模拟控制文件丢失情况(关闭数据库时执行删除)

  Delete *.ctl (物理删除即可)

  4)启动到nomount状态

  5)连接到目标数据库,设置dbid

   rmantarget/
  RMANsetdbid1961907796;

  正在执行命令: SET DBID

  6)从备份中重建控制文件

   RMANrestorecontrolfilefromautobackup;

  7)Mount状态并恢复数据库

   RMANalterdatabasemount;
  RMANrecoverdatabase;

  8)用resetlogs选项打开数据库到open状态

   RMANalterdatabaseopenresetlogs;

  2.重建控制文件

  Alter database backup controlfile to trace; 用于跟踪控制文件

  该命令产生二进制控制文件的ASCII表示,作为数据库轨迹文件。该ASCII备份控制文件以数据控制语言(DCL)语句和命令的形式存在。该ASCII备份控制文件可以用于重建控制文件。当重建控制文件时,要用适当的初始化参数启用数据库,需要spfile或pfile。

  例子:

  1.建立ASCII控制文件

   Sqlplus/nolog
  Connect/assysdba
  Alterdatabasebackupcontorlfiletotrace;

  2.上面语句生产的trace文件于udump目录里

  备份控制文件有两种情况(在该文件里可以查看):

  Set #1. NORESETLOGS case情况用于完全恢复,

  Set #2. RESETLOGS case情况用于不完全恢复。

  3.将trc文件里的Set #1或者Set #2 内容拷贝出来保存为txt副本

  4.物理删除控制文件

  5.以sysdba身份登陆,执行刚才创建的脚本

  6.Alter database open resetlogs;

  进行不完全恢复

  不完全恢复又成为时间点恢复(DBPITR),因为他恢复到一个确定的时间点:它在强迫恢复的故障之前停止。从另一种观点看,不完全恢复就是:并不是在归档重做日志中的所有事务都应用于数据库而使数据库完整。在恢复过程结束后,使用不完全恢复的数据库仍然丢失一些事务,这些事务在故障之前是在数据库中的。

  RMAN:两种方法完成不完全恢复:

  1.执行recover之前使用子句:

  Set until time或者set until sequence

  2.执行recover时使用子句

  Until time 或者 until sequence

  在完全恢复之前,在指定的时间点、一个重做日志序列或者一个变化号(SCN)停止。

  用户管理不完全备份:

  使用RECOVER DATABASE命令与UNTIL TIME、UNTIL CHANGE或者UNTIL CANCEL子句。(其中与RMAN不同的是until cancel子句专门在随机点停止恢复过程)。

  RMAN不完全恢复

  rman不完全恢复可以根据指定时间、重做日志序列或者变化号SNC来进行。

  完成不完全恢复使用recover database命令和until time、until SCN或者until sequence子句结合;或者预先使用子句 set until


  例子:

  基于时间点的恢复 

  1.启动到mount状态 

   2.C:SetNSL_DATE_FORMAT=DD-MM-YYYYHH24:MI:SS
  RMANrun
  2{setuntiltime'02-9月-200815:45:00';
  3restoredatabase;
  4recoverdatabase;
  5}

  3.用resetlogs子句打开数据库 

   Alterdatabaseopenresetlogs;

  基于重做日志序列号的恢复

   1.Select*fromv$log_history;

  2.启动到mount状态

  3.执行:

   RMANrun
  2{setuntilsequence2thread1;
  3restoredatabase;
  4recoverdatabase;
  5}

  4.用resetlogs子句打开数据库。

   RMANalterdatabaseopenresetlogs;

来源:http://www.tulaoshi.com/n/20160219/1617917.html

延伸阅读
1.1. 何为闪回恢复区 Oracle 10g 有一项新功能称为:自动的基于磁盘的备份与恢复( Automatic Disk-Based Backup and Recovery )。实现该功能的基础为本文要讲述的闪回恢复区( Flash Recovery Area )。闪回恢复区是 Oracle 10g 中的新事物。简单的说,闪回恢复区是一块用以存储恢复相关的文件的存储空间。 允许用户集中存储所有...
昨天,一个朋友公司的数据库崩溃。 这再次印证了我反复提到的一个命题:数据库也需要休息。 每逢节假日,数据库也经常会自我选择放假。 以前我说:年终难终 进入数据库事故多发期,一年一度今又是,记得另外一个圣诞节,我还和Biti一起在北京的时候,同样遇到一个上海的朋友数据库崩溃,我们远程指导这位朋友恢复了数据。 ...
机器A: select instance_name from v$instance; select name from v$database; select name from v$datafile; 查询日志模式: archive log list; shutdown immediate; startup mount; 把日志改为归档模式: alter database archivelog; alter database open; alter system archive log current; select name from v$archived_log; ...
实例 1.启动Oracle Server. Startup[nomount|mount|open][force][pfile=filename] 参数说明: nomount:只启动实例 mount:启动实例,并装载数据库 open:启动实例,装载并打开数据库。 Force:终止实例,并重新启动数据库。(默认选项) Pfile:指定非默认参数文件名。 2.停...

经验教程

50

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部