西湖三潭印月攻略:Oracle中用户管理的不完全恢复简介

来源:百度文库 编辑:偶看新闻 时间:2024/05/08 06:20:01

Oracle中用户管理的不完全恢复简介


  用户管理的不完全恢复必须满足下面三个条件才可以使用:

  a) 归档模式

  b) 要有所有datafile在误操作之前的备份

  c) 要有自要使用的备份以来的所有归档

  不完全恢复的类型

  a) 基于时间点 :比如从alter警告文件中查到drop table操作是什么时候发生的

  


  

  

  

  
recover database until time "2000-10-01 10:10:10"


  

  

  

  


  b) 基于Cancel : 可能中间某个归档损坏或丢失

  


  

  

  

  
recover database untill cancel


  

  

  

  


  c) 基于SCN(系统改编号)

  


  

  

  

  
recover database until scn


  

  

  

  


  -- 另同时使用备份的控制文件的不完全恢复

  


  

  

  

  
using backup control file


  

  

  

  


  实例说明几种场景的不完全恢复

  1.


  

  

  

  
truncate table dept;

  alter system switch logfile;

  delete from emp where empno=;

  alter system switch logfile;

  alter system switch logfile;


  

  

  

  


  --发现是误操作

  --启动EM,用logminer(日志查看器)查时间点或SCN

  


  

  

  

  
oemapp consol


  

  

  

  


  登陆到management server(参看:如何使用management server,后面会发布)

  -->工具-->数据库应用程序-->日志查看器-->创建查询条件

  --比如:表=DEPT (必须大写) 开始时间 结束时间

  查询出误操作时间或SCN,比如时间:2006-07-14 13:52:18 SCN 12345

  --好现在开始做基于时间点的不完全恢复

  a.shutdown immediate

  b.restore(复制) full backup到数据文件目录下

  c.startup mount

  d.alter session set NLS_date_format = "YYYY-MM-DD HH24:MI:SS"

  e.recover database until time "2004-07-14 13:52:17";

  //recover database until scn 12345

  f.alter database open resetlogs --必须带resetlogs

  g.删除所有归档、冷备 热备(已经都没用了,必须重新备份)

  h.备份(不要忘了)

  2.基于cancel的模拟

  


  

  

  

  
delete dept where depno=42;//假如users表空间下的表

  commit;

  alter database switch logfile;--多次

  alter database switch logfile;

  alter database switch logfile;

  --发现失误,实行恢复

  shutdown immediate


  

  

  

  


  删除users表空间(对应的文件号假如是Array)和一个归档日志

  试着做完全恢复,失败,

  --参看http://www.david-studio.org/new/resource/showdetail.jsp?ID=12

  --做基于cancel的恢复

  


  

  

  

  
shutdown immediate


  

  

  

  


  还原所有文件

  


  

  

  

  
startup mount

  alter tablespace users online--将offline的所有文件online

  recover database until cancel

  alter database open resetlogs


  

  

  

  


  别忘了重新备份

  3. 使用备份的控制文件的不完全恢复

  --已经有所有数据文件的备份

  --备份控制文件

  


  

  

  

  
alter system switch logfile;

  alter system switch logfile;

  alter system switch logfile;

  alter database backup controlfile to "d:ackupcon1.ctl";

  alter system switch logfile;

  conn scott/tiger

  delete dept where deptno=42;

  commit;

  alter system switch logfile;

  alter system switch logfile;

  alter system switch logfile;

  shutdown abort/immediate/normal/transactional


  

  

  

  


  删除所有数据文件,备份和删除当前的控制文件,但是归档必须存在

  


  

  

  

  
startup [nomount]


  

  

  

  


  --报错 查看状态

  


  

  

  

  
nomount, select status from v$instance;


  

  

  

  


  从备份中恢复控制文件

  复制所有备份的数据文件(在删除前要已经有备份)

  


  

  

  

  
recover database until cancel using backup controlfile;

  alter database open resetlogs;


  

  

  

  


  别忘了做全备

  4.联机日志全部丢失

  


  

  

  

  
shutdown immediate


  

  

  

  


  删除所有的联机日志

  


  

  

  

  
startup


  

  

  

  


  --报联机日志错误

  


  

  

  

  
recover database until cancel


  

  

  

  


  --这步实际上什么也不做,但必须做这个操作

  


  

  

  

  
alter database open resetlogs;


  

  

  

  


  别忘了做全备,以前的都没用了(包括归档)

  5.误删除了表空间怎么恢复,必须归档模式

  


  

  

  

  
archive log list

  select * from v$tablespace

  select * from scott.emp;


  

  

  

  


  --删除表空间

  


  

  

  

  
drop tablespace indx including contents and datafiles;

  alter system switch logfile;


  

  

  

  


  --开始恢复

  


  

  

  

  
shutdown immediate


  

  

  

  


  恢复所有的数据文件和控制文件,必须用老的控制文件

  查询alter,查看drop indx表空间的时间,比如: 2006-07-10 10:10:10

  


  

  

  

  
startup mount

  alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss";

  recover database until time ;2006-07-10 10:10:0Array" using backup controlfile;

  alter database open resetlogs


  

  

  

  


  别忘了做全备,以前热备的都没用了。