12c 备份与恢复 - 初识resetlogs

备份与恢复是一门重要的功课,其中一些基础知识和用法会随着实战次数的增加而理解的越来越深刻。今天通过一个最简单的例子来体会一下resetlogs。

resetlogs: 重置online redolog。当数据库实例启动时需要具有redolog,如果该文件不可用或者不存在了,可以使用resetlogs开启数据库。在开启的过程中oracle会根据控制文件中的redo路径创建全新的redolog。在不完全恢复或者OGG部署时经常会用到resetlogs方式开启数据库。原因就是当前的redo不可用,或者不能用。

实验步骤如下:
1, 一致性停库
2, 手工删除redolog
3, 启动数据库到mount状态
4, resetlogs方式打开数据库

1. 一致性停库

[oracle@snow ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sat May 2 04:29:37 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

确认数据文件、日志文联、控制文件、临时文件的物理位置
SYS@cdb > select name from v$datafile
  2  union select name from v$controlfile
  3  union select member from v$logfile
  4  union select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/home/oracle/dbfile/cdb/control01.ctl
/home/oracle/dbfile/cdb/control02.ctl
/home/oracle/dbfile/cdb/pdb1/SAMPLE_SCHEMA_users01.dbf
/home/oracle/dbfile/cdb/pdb1/example01.dbf
/home/oracle/dbfile/cdb/pdb1/pdb1_temp01.dbf
/home/oracle/dbfile/cdb/pdb1/sysaux01.dbf
/home/oracle/dbfile/cdb/pdb1/system01.dbf
/home/oracle/dbfile/cdb/pdbseed/pdbseed_temp01.dbf
/home/oracle/dbfile/cdb/pdbseed/sysaux01.dbf
/home/oracle/dbfile/cdb/pdbseed/system01.dbf
/home/oracle/dbfile/cdb/redo01.log

NAME
--------------------------------------------------------------------------------
/home/oracle/dbfile/cdb/redo02.log
/home/oracle/dbfile/cdb/redo03.log
/home/oracle/dbfile/cdb/sysaux01.dbf
/home/oracle/dbfile/cdb/system01.dbf
/home/oracle/dbfile/cdb/temp01.dbf
/home/oracle/dbfile/cdb/undotbs01.dbf
/home/oracle/dbfile/cdb/users01.dbf

18 rows selected.

一致性停止数据库,确保redolog中的事务已经写入磁盘
SYS@cdb > shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@cdb > 

2. 手工删除redolog
[oracle@snow ~]$ cd dbfile/cdb/
[oracle@snow cdb]$ ll
total 2135948
-rw-r----- 1 oracle oinstall  17973248 May  2 04:30 control01.ctl
-rw-r----- 1 oracle oinstall  17973248 May  2 04:30 control02.ctl
drwxr-x--- 2 oracle oinstall      4096 May  2 03:07 pdb1
drwxr-x--- 2 oracle oinstall      4096 May  2 03:01 pdbseed
-rw-r----- 1 oracle oinstall  52429312 May  2 04:30 redo01.log
-rw-r----- 1 oracle oinstall  52429312 May  2 04:29 redo02.log
-rw-r----- 1 oracle oinstall  52429312 May  2 04:29 redo03.log
-rw-r----- 1 oracle oinstall 796925952 May  2 04:30 sysaux01.dbf
-rw-r----- 1 oracle oinstall 817897472 May  2 04:30 system01.dbf
-rw-r----- 1 oracle oinstall  92282880 May  2 04:29 temp01.dbf
-rw-r----- 1 oracle oinstall 372252672 May  2 04:30 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 May  2 04:30 users01.dbf
[oracle@snow cdb]$ rm -rf redo*.log
[oracle@snow cdb]$ ll
total 1982336
-rw-r----- 1 oracle oinstall  17973248 May  2 04:30 control01.ctl
-rw-r----- 1 oracle oinstall  17973248 May  2 04:30 control02.ctl
drwxr-x--- 2 oracle oinstall      4096 May  2 03:07 pdb1
drwxr-x--- 2 oracle oinstall      4096 May  2 03:01 pdbseed
-rw-r----- 1 oracle oinstall 796925952 May  2 04:30 sysaux01.dbf
-rw-r----- 1 oracle oinstall 817897472 May  2 04:30 system01.dbf
-rw-r----- 1 oracle oinstall  92282880 May  2 04:29 temp01.dbf
-rw-r----- 1 oracle oinstall 372252672 May  2 04:30 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 May  2 04:30 users01.dbf

3. 启动数据库到mount状态
[oracle@snow cdb]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sat May 2 04:53:23 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SYS@cdb > startup mount;
ORACLE instance started.

Total System Global Area 1503199232 bytes
Fixed Size                  2288584 bytes
Variable Size             973079608 bytes
Database Buffers          520093696 bytes
Redo Buffers                7737344 bytes
Database mounted.

4.restlogs方式打开数据库
注意:执行alter database open resetlog时会提示“RESETLOGS”选项需要在不完全恢复后使用,按照要求我们执行一次recover database until cancel, 再次执行alter database open resetlog就可以成功打开数据库并重新创建了redolog。
如果在数据库处于mount状态时先执行recover,再执行resetlogs就不会报错。

SYS@cdb > alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery


SYS@cdb > recover database until cancel;
Media recovery complete.
SYS@cdb > alter database open resetlogs;

Database altered.

如果在数据库处于mount状态时先执行recover,再执行resetlogs就不会报错。

实例启动后,看到新的redolog被创建在之前的位置
SYS@cdb > exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[oracle@snow cdb]$ ll
total 2135948
-rw-r----- 1 oracle oinstall  17973248 May  2 04:54 control01.ctl
-rw-r----- 1 oracle oinstall  17973248 May  2 04:54 control02.ctl
drwxr-x--- 2 oracle oinstall      4096 May  2 03:07 pdb1
drwxr-x--- 2 oracle oinstall      4096 May  2 03:01 pdbseed
-rw-r----- 1 oracle oinstall  52429312 May  2 04:54 redo01.log
-rw-r----- 1 oracle oinstall  52429312 May  2 04:54 redo02.log
-rw-r----- 1 oracle oinstall  52429312 May  2 04:54 redo03.log
-rw-r----- 1 oracle oinstall 796925952 May  2 04:54 sysaux01.dbf
-rw-r----- 1 oracle oinstall 817897472 May  2 04:54 system01.dbf
-rw-r----- 1 oracle oinstall  92282880 May  2 04:54 temp01.dbf
-rw-r----- 1 oracle oinstall 372252672 May  2 04:54 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 May  2 04:54 users01.dbf

很多初学者在第一次接触resetlogs选项都是在一些比较复杂的恢复场景时才遇到的。希望这个初级的小实验可以帮助你理解resetlogs。

全完



请使用浏览器的分享功能分享到微信等