冷备份能应用归档日志么?
恢复方法二
1.restore所有的数据文件
2.重建控制文件
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 142606336 bytes
Fixed Size 1247732 bytes
Variable Size 83887628 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
![]()
SQL> CREATE CONTROLFILE REUSE DATABASE "NING" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:/ORACLE/ORA10/ORADATA/NING/REDO01.LOG' SIZE 10M,
9 GROUP 2 'E:/ORACLE/ORA10/ORADATA/NING/REDO02.LOG' SIZE 10M,
10 GROUP 3 'E:/ORACLE/ORA10/ORADATA/NING/REDO03.LOG' SIZE 10M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:/ORACLE/ORA10/ORADATA/NING/SYSTEM01.DBF',
14 'E:/ORACLE/ORA10/ORADATA/NING/UNDOTBS01.DBF',
15 'E:/ORACLE/ORA10/ORADATA/NING/SYSAUX01.DBF',
16 'E:/ORACLE/ORA10/ORADATA/NING/USERS01.DBF'
17 CHARACTER SET UTF8
18 ;
控制文件已创建。
3.使用recover database恢复数据库
SQL> recover database;
SQL> recover database using backup controlfile;
ORA-00279: 更改 301820 (在 11/29/2006 10:16:00 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:/ORACLE/ARCH/NING/ARC00133_0607342148.001
ORA-00280: 更改 301820 (用于线程 1) 在序列 #133 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 301821 (在 11/29/2006 10:26:15 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:/ORACLE/ARCH/NING/ARC00134_0607342148.001
ORA-00280: 更改 301821 (用于线程 1) 在序列 #134 中
ORA-00278: 此恢复不再需要日志文件 'E:/ORACLE/ARCH/NING/ARC00133_0607342148.001'
ORA-00279: 更改 302089 (在 11/29/2006 10:27:30 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:/ORACLE/ARCH/NING/ARC00135_0607342148.001
ORA-00280: 更改 302089 (用于线程 1) 在序列 #135 中
ORA-00278: 此恢复不再需要日志文件 'E:/ORACLE/ARCH/NING/ARC00134_0607342148.001'
已应用的日志。
完成介质恢复。
4.打开数据库并检查测试数据
SQL> alter database open;
数据库已更改。
SQL> select * from tt;
![]()
ID NAME
---------- ----------------------------------------
1 a
可见,使用重建控制文件的恢复方法,只有当前联机日志是最新的,无需使用resetlogs即可打开数据库。只要当前联机日志正常,一般建议采取重建日志文件而不是采用备份的控制文件来恢复数据库。由此也可以看到,联机日志文件相当重要,要尽最大努力避免联机日志损坏,例如,使用多个member logfile,每个logfile放到不同的磁盘上,等等。同时,在修改过数据库的结构,比如添加datafile后,最好将控制文件的脚本备份一次alter database backup controlfile to trace;
