1、查询数据库的归档模式
select dbid,name,created,log_mode from v$database;
archive log list
alter system set log_archive_dest_state_1=defer;将日志目录设置为无效
alter system set log_archive_dest_state_1=enable;将日志目录设置为生效
2、将数据库设置为归档模式
(1)修改pfile参数增加如下参数:
log_archive_start=true
log_archive_dest=/u01/oracle/archive/
log_archive_format=%s.dat
log_archive_duplex_dest=/u02/oracle/archive1/
(2)以mount方式启动数据库
startup mount
alter database archivelog;
alter database open;
(3)检测结果
archive log list;
alter system switch logfile;
select recid,stamp,sequence#,first_change#,first_time,name from v$archived_log;
3、部分数据库在线备份
(1)设置表空间为备份状态
这种备份方式只可用于归档模式
alter tablespace 表空间名称 begin backup;
执行以上命令被备份的数据文件发生了三个变化
第一、检验点号停止修改,被备份文件的检验点号与其他不同
select a.file#,a.checkpoint_change#,b.file_name from v$datafile a,dba_data_files b where a.file#=b.file_id;
第二、对数据文件做热备份标记
select file#,status,change#,time from v$backup;
第三、给数据文件头做fuzzy标识
select file#,status,fuzzy,name from v$datafile_header;
(2)备份表空间的数据文件
(3)恢复表空间为正常状态
alter tablespace 表空间名称 end backup;
4、部分数据库脱机备份
这种备份方式只可用于归档模式
(1)、将表空间设置为脱机
alter tablespace 表空间名称 offline;
(2)备份表空间的数据文件
(3)将表空间设置为在线
alter tablespace 表空间名称 online;
5、控制文件在线备份
alter database backup controlfile to '路径';
alter database backup controlfile to trace;
6、归档模式下恢复没有备份的数据文件
startup mount;
alter database datafile 'D:/ORACLE/ORADATA/ORACLE92/TEST1.DBF' offline;
alter database open;
alter database create datafile 'D:/ORACLE/ORADATA/ORACLE92/TEST1.DBF';
recover datafile 'D:/ORACLE/ORADATA/ORACLE92/TEST1.DBF';
alter database datafile 'D:/ORACLE/ORADATA/ORACLE92/TEST1.DBF' online;
如果是在运行的时候出错可以这样:
alter tablespace test offline;
select * from v$recover_file;
alter database create datafile 'D:/ORACLE/ORADATA/ORACLE92/TEST1.DBF';
recover datafile 'D:/ORACLE/ORADATA/ORACLE92/TEST1.DBF';
alter tablespace test online;
7、系统表空间数据文件破坏的恢复
startup
recover datafile 1;
alter database open;
如果没有备份文件是不能恢复的
8、恢复一个被删除的基表
startup mount
复制所有的备份数据文件
recover database until time '2006.12.30 14:00:00';
alter database open resetlogs;
9、恢复一个被删除的表空间
startup mount
复制所有的备份数据文件和控制文件
recover database until time '2006.12.30 15:26:00' using backup controlfile;
alter database open resetlogs;
10、在线日志破坏时的数据库恢复
startup mount
复制全部数据文件、日志文件的备份文件
recover database until cancel;
遇到提示直接按回车
alter database open resetlogs;
11、日志不足两个组时的数据库恢复
alter database drop logfile group 1;
alter database add logfile group 1('/u01/oracle/oradata/ora8i/redo01.log') size 1m;
alter database open;
如果还有错就执行
alter database drop logfile group 2;
如果有错就是说明第二组正在使用,这时候的恢复变的跟11一样了
12、使用热备份控制文件恢复数据库(1)修改参数control_files=(控制文件名称),把损坏的控制文件注释掉(2)复制全部数据文件的备份,启动数据库startup报错select * from v$controlfile;alter database open;报错alter database open resetlogs;报错(3)查询数据库检查点号select checkpoint_change# from v$database;(4)实施不完全的数据库恢复恢复到某一个数据一致性状态即停止恢复recover database using backup controlfile;当发现到上述查询语句查出的检查点号是即停止恢复cancel(5)打开数据库alter database open resetlogs;