一.完全数据库恢复
1.修改数据库为归档模式
2.改完以后,进行完全数据库备份(这备份必须是修改归档模式后的备份,否则恢复不了。).
3.生成数据库的日常行为(如往某张表插入数据),然后强制归档(alter system switch logfile),因为恢复至少需要一个归档文件。
4.删除一个数据文件,破坏数据库
查看需要恢复的文件:select *from v$recover_file;
5.恢复还原数据文件
SELECT * FROM v$log_history t ORDER BY t.SEQUENCE# DESC;
SELECT * FROM v$log;
select * from v$database;
v$database里的scn比v$log_history 大。 因为v$database是从控制文件读取的。 v$log_history是备份的SCN
为了使所有的数据文件拥有一致的变化序号,需要来自重做日志的重做信息。所需的每个变化都包含在一个或多个归档 文件或当前重做文件中。
查看是否有所需要的重做信息:v$log_history的SCN在v$recover_file和v$database;之间的。
6.recover database:恢复数据库
7.确认数据库是否恢复成功f
二。不完全数据库恢复
1.产生数据库动作
1).往date_log插入若干条记录,然后手工强制归档。
2).删除indx表空间(date_log上的索引在indx里)
3).再往date_log插入若干条记录
2.关闭数据库,从最近的备份恢复所有数据文件(和控制文件, 不能恢复控制文件)。
3.执行不完全数据库恢复
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
alter database recover automatic until time '2009-08-13 18:03:24';
(recover database until time '2009-08-13 09:59:34';)
4.以resetlogs打开数据库
select name,checkpoint_change#,last_change# from v$datafile;
select name,checkpoint_change# from v$datafile_header;
select checkpoint_change# from v$database;
SELECT group#,first_change#,sequence# FROM v$log t;
---
set logsource=/oradata/practice/archive
recover until cancel using backup controlfile;
按cancel退出
三.备用数据库
db_name=PRACTICE
instance_name=STANDBY
service_names=STANDBY
control_files=("d:/oracle/product/10.1.0/oradata/standby/standby.ctl")
#pan
db_file_name_convert="D:/oracle/product/10.1.0/oradata/practice","D:/oracle/product/10.1.0/oradata/standby"
#archive
log_archive_dest_1="location=D:/oracle/product/10.1.0/oradata/standby/archive"
log_archive_format= %s%t%r.arc
log_file_name_convert="D:/oracle/product/10.1.0/oradata/practice","D:/oracle/product/10.1.0/oradata/standby"
lock_name_space=STANDBY
#log_archive_start=TRUE
standby_archive_dest="D:/oracle/product/10.1.0/oradata/standby/archive"
background_dump_dest=D:/oracle/product/10.1.0/admin/standby/bdump
--自动管理恢复
recover managed standby database;
---取消自动管理恢复(在另一窗口运行)
recover managed standby database cancel;
--在产品库上设置自动管理恢复(会自动在standby上生成生产库的归档文件)
alter system set log_archive_dest_2="mandatory service=standby reopen=30"
--延迟往standby生成归档文件
alter system set log_archive_dest_state_2=DEFER;
--继续往standby生成归档文件
alter system set log_archive_dest_state_2=enable;
--激活备份库
alter database activate standby database;