用户管理的不完全恢复必须满足下面三个条件才可以使用:
a) 归档模式
b) 要有所有datafile在误操作之前的备份
c) 要有自要使用的备份以来的所有归档
不完全恢复的类型
a) 基于时间点 :比如从alter警告文件中查到drop table操作是什么时候发生的
[code]recover database until time '2000-10-01 10:10:10'[/code]
b) 基于Cancel : 可能中间某个归档损坏或丢失
[code]recover database untill cancel[/code]
c) 基于SCN(系统改编号)
[code]recover database until scn[/code]
-- 另同时使用备份的控制文件的不完全恢复
[code]using backup control file[/code]
实例说明几种场景的不完全恢复
1.
[code]truncate table dept;
alter system switch logfile;
delete from emp where empno=;
alter system switch logfile;
alter system switch logfile;[/code]
--发现是误操作
--启动EM,用logminer(日志查看器)查时间点或SCN
[code]oemapp consol[/code]
登陆到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的模拟
[code]delete dept where depno=42;//假如users表空间下的表
commit;
alter database switch logfile;--多次
alter database switch logfile;
alter database switch logfile;
--发现失误,实行恢复
shutdown immediate[/code]
删除users表空间(对应的文件号假如是9)和一个归档日志
试着做完全恢复,失败,
--参看http://www.david-studio.org/new/resource/showdetail.jsp?ID=12
--做基于cancel的恢复
[code]shutdown immediate[/code]
还原所有文件
[code]startup mount
alter tablespace users online--将offline的所有文件online
recover database until cancel
alter database open resetlogs[/code]
别忘了重新备份
asiaec 于 2006-10-10 00:47:54发表:
3. 使用备份的控制文件的不完全恢复
--已经有所有数据文件的备份
--备份控制文件
[code]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[/code]
删除所有数据文件,备份和删除当前的控制文件,但是归档必须存在
[code]startup [nomount][/code]
--报错 查看状态
[code]nomount, select status from v$instance;[/code]
从备份中恢复控制文件
复制所有备份的数据文件(在删除前要已经有备份)
[code]recover database until cancel using backup controlfile;
alter database open resetlogs;[/code]
别忘了做全备
4.联机日志全部丢失
[code]shutdown immediate[/code]
删除所有的联机日志
[code]startup[/code]
--报联机日志错误
[code]recover database until cancel[/code]
--这步实际上什么也不做,但必须做这个操作
[code]alter database open resetlogs;[/code]
别忘了做全备,以前的都没用了(包括归档)
5.误删除了表空间怎么恢复,必须归档模式
[code]archive log list
select * from v$tablespace
select * from scott.emp;[/code]
--删除表空间
[code]drop tablespace indx including contents and datafiles;
alter system switch logfile;[/code]
--开始恢复
[code]shutdown immediate[/code]
恢复所有的数据文件和控制文件,必须用老的控制文件
查询alter,查看drop indx表空间的时间,比如: 2006-07-10 10:10:10
[code]startup mount
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
recover database until time ;2006-07-10 10:10:09' using backup controlfile;
alter database open resetlogs[/code]
别忘了做全备,以前热备的都没用了。