ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle 12c - Resetlogs

2021-08-26 18:32:22  阅读:294  来源: 互联网

标签:12c Resetlogs database app oracle oradata Oracle PRODCDB u01


 

When to use resetlogs?

Backup and recover is the important toipc in Database area. the resetlogs knowledge is important in Backup&Recover.

Resetlogs means that reset the online redolog.

We know that the instance need redologs while the instance startup, we can use resetlogs to startup instance while the redolog is deleted or unusable.

Oracle will create the new redologs according to the controlfile’s configuration(path/name/size/group etc.) in resetlog mode.

So we usually use resetlogs to incomplete database recovery or some scences like OGG’s setup…

The root cause is that the redologs can NOT be used.

How to use resetlogs?

I use test case to pratise the resetlogs as the following steps. (Please do NOT test these in Production env.)

1. Stop database
2. Delete redolog manually
3. Startup instance in mount mode
4. Open database in resetlogs

1. Stop database

Confirm with the datafile/controlfiles/logfiles/tempfiles before stop database in normal mode.

select name from v$datafile union select name from v$controlfile union select member from v$logfile union select name from v$tempfile;
shu immediate;

Logs:

[oracle@host01 ~]$ export ORACLE_SID=PRODCDB; sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Mar 15 12:43:22 2018
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area  838860800 bytes
Fixed Size		    2929936 bytes
Variable Size		  570428144 bytes
Database Buffers	  260046848 bytes
Redo Buffers		    5455872 bytes
Database mounted.
Database opened.
SQL>
SQL> select name from v$datafile union select name from v$controlfile union select member from v$logfile union select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/fast_recovery_area/PRODCDB/control02.ctl
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/PDBPROD1_users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/example01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/system01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/temp01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/PDBPROD2_users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/system01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/temp01.dbf
/u01/app/oracle/oradata/PRODCDB/control01.ctl
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PRODCDB/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/pdbseed/system01.dbf
/u01/app/oracle/oradata/PRODCDB/pdbseed/temp01.dbf
/u01/app/oracle/oradata/PRODCDB/redo01.log
/u01/app/oracle/oradata/PRODCDB/redo02.log
/u01/app/oracle/oradata/PRODCDB/redo03.log
/u01/app/oracle/oradata/PRODCDB/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/system01.dbf
/u01/app/oracle/oradata/PRODCDB/temp01.dbf
/u01/app/oracle/oradata/PRODCDB/undotbs01.dbf
/u01/app/oracle/oradata/PRODCDB/users01.dbf
22 rows selected.
SQL> 

SQL> shu immediate;                                   
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

2. Delete redolog manually

Remove the redo*.log file in OS level.

host rm redo*.log

Logs:

SQL> host rm /u01/app/oracle/oradata/PRODCDB/redo*.log
SQL> host ls /u01/app/oracle/oradata/PRODCDB/redo*.log
ls: cannot access /u01/app/oracle/oradata/PRODCDB/redo*.log: No such file or directory
SQL> 

3. Startup instance in mount mode

Startup in mount mode.(just read controlfile and don’t open file like redologs.)

startup mount;

Logs:

SQL> startup mount;
ORACLE instance started.

Total System Global Area  838860800 bytes
Fixed Size		    2929936 bytes
Variable Size		  570428144 bytes
Database Buffers	  260046848 bytes
Redo Buffers		    5455872 bytes
Database mounted.
SQL> 

4. Open database in resetlogs

Need execute incompleted database recovery before open resetlogs.

alter database open resetlogs;
recover database until cancel;
alter database open resetlogs;

Logs:

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
SQL> recover database until cancel;
Media recovery complete.
SQL> alter database open resetlogs;
Database altered.
SQL> host ls /u01/app/oracle/oradata/PRODCDB/redo*.log
/u01/app/oracle/oradata/PRODCDB/redo01.log
/u01/app/oracle/oradata/PRODCDB/redo02.log
/u01/app/oracle/oradata/PRODCDB/redo03.log
SQL> 

In this test case, we can know the resetlogs’s knowledge.

Other

Regarding the recover commands, please check the following documents.

oracle备份恢复之recover database的四条语句区别

1. recover database using backup controlfile
如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉oracle,不要以controlfile中的scn作为恢复的终点;
 
2. recover database until cancel
redo都丢失,会先去自动应用归档日志,可以实现最大的恢复;

3. recover database using backup controlfile until cancel;
 
如果丢失当前controlfile并且current/active redo都丢失,会先去自动应用归档日志,可以实现最大的恢复;
 
4. recover database until cancel using backup controlfile;
如果丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点。因为没有应用归档日志,所有会丢失数据。 
要理解recover database using backup controlfile,先理解 recover database,也就是说,不加using backup controlfile的情况。
在普通的recover database 或者 recover tablespace, recover datafile时, Oracle会以当前controlfile所纪录的SCN为准,利用archive log和 redo log的redo entry, 把相关的datafile 的 block恢复到“当前controlfile所纪录的SCN”
而某些情况下,Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要靠后的位置(比如说,control file是backup controlfile , 或者 controlfile是根据trace create的。),这时候,就需要用using backup controlfile.   恢复就不会受“当前controlfile所记录的SCN”的限制。这时候的限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel)

 

标签:12c,Resetlogs,database,app,oracle,oradata,Oracle,PRODCDB,u01
来源: https://www.cnblogs.com/lkj371/p/15191011.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有