很多朋友经常会对完全恢复与Resetlogs产生误解,以为使用Resetlogs方式打开数据库就是不完全恢复,这种看法是不正确的。
只要拥有当前的日志文件,那么就能够对数据库执行完全恢复,而是否需要使用Resetlogs方式打开,则取决于是否使用的是备份的控制文件,如果使用的是备份的控制文件则需要使用Resetlogs方式打开数据库,如果拥有当前的控制文件或者通过重建控制文件来恢复,就不需要通过Restlogs方式打开数据库。
(1)、使用备份控制文件进行恢复(此时要用Resetlogs打开数据库)
RMAN> run
{
startup nomount;
restore controlfile from autobackup;
sql 'alter database mount';
restore database;
recover database;
sql 'alter database open resetlogs';
}
(2)、通过重建控制文件进行恢复(此时不需要用Resetlogs打开数据库)
RMAN>run
{
startup nomount;
restore controlfile from autobackup;
sql 'alter database mount';
restore database;
}
切换到sqlplus,关闭数据库,启动到nomount状态,重建控制文件
SQL>alter database backup controlfile to trace;
SQL> startup nomount force;
SQL>重建控制文件代码
SQL>recover database; --要保证有全备后的归档日志文件和联机日志
SQL>alter database open;
SQL> alter database mount; Database altered. SQL> alter database backup controlfile to trace; Database altered.
找到trace文件,编辑、执行重建控制文件需要部分:
[oracle@jumper oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Jun 11 01:30:50 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 101782828 bytes
Fixed Size 451884 bytes
Variable Size 37748736 bytes
Database Buffers 62914560 bytes
Redo Buffers 667648 bytes
SQL> set echo on
SQL> @ctl
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "CONNER" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 5
4 MAXLOGMEMBERS 3
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 1361
8 LOGFILE
9 GROUP 1 '/opt/oracle/oradata/conner/redo01.log' SIZE 10M,
10 GROUP 2 '/opt/oracle/oradata/conner/redo02.log' SIZE 10M,
11 GROUP 3 '/opt/oracle/oradata/conner/redo03.log' SIZE 10M
12 -- STANDBY LOGFILE
13 DATAFILE
14 '/opt/oracle/oradata/conner/system01.dbf',
15 '/opt/oracle/oradata/conner/undotbs01.dbf',
16 '/opt/oracle/oradata/conner/users01.dbf'
17 CHARACTER SET ZHS16GBK
18 ;
Control file created.
|
5.执行恢复
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 240560269 generated at 06/09/2005 17:33:48 needed for thread 1
ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_7.dbf
ORA-00280: change 240560269 for thread 1 is in sequence #7
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 240600632 generated at 06/10/2005 10:42:26 needed for thread 1
ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_8.dbf
ORA-00280: change 240600632 for thread 1 is in sequence #8
ORA-00278: log file '/opt/oracle/oradata/conner/archive/1_7.dbf' no longer needed for this recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 240620884 generated at 06/10/2005 10:45:42 needed for thread 1
ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_9.dbf
ORA-00280: change 240620884 for thread 1 is in sequence #9
ORA-00278: log file '/opt/oracle/oradata/conner/archive/1_8.dbf' no longer needed for this recovery
ORA-00283: recovery session canceled due to errors
ORA-00600: internal error code, arguments: [3020], [4242465], [1], [9], [314], [272], [], []
ORA-10567: Redo is inconsistent with data block (file# 1, block# 48161)
ORA-10564: tablespace SYSTEM
ORA-01110: data file 1: '/opt/oracle/oradata/conner/system01.dbf'
ORA-10560: block type 'DATA SEGMENT HEADER - UNLIMITED'
ORA-01112: media recovery not started
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 240620949 generated at 06/10/2005 10:45:44 needed for thread 1
ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_9.dbf
ORA-00280: change 240620949 for thread 1 is in sequence #9
Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
Database altered.
SQL> select name from v$datafile;
NAME
------------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/conner/users01.dbf
SQL>
|
至此恢复完毕。
using backup controlfile和 until cancel 区别
1. recover database using backup controlfile
2. recover database until cancel
3. recover database using backup controlfile until cancel;
4. recover database until cancel using backup controlfile;
区别:
1. 如果丢失丢失当前控制文件,用冷备份中的控制文件恢复的时候。用来告诉oracle,不要以controlfile中的scn作为恢复的终点;
2. 如果丢失current/active redo的时候。手动指定终点。
3. 如果 丢失当前controlfile并且current/active redo都丢失,会先去 自动 应用归档日志,可以实现最大的恢复;
4. 如果 丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点。因为没有应用归档日志,所以会丢失数据。
RMAN备份文件格式
%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,
其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序
列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1 开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/611609/viewspace-665099/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/611609/viewspace-665099/
本文详细介绍了Oracle数据库中完全恢复的概念及操作步骤,包括使用备份控制文件恢复和重建控制文件恢复两种情况,并解释了Resetlogs的作用及其适用场景。
319

被折叠的 条评论
为什么被折叠?



