在Oracle中,RESETLOGS和NORESETLOGS的区别是什么?
RESETLOGS和NORESETLOGS主要用在两个地方,第一是在创建控制文件的时候,第二是在打开数据库的时候。当将控制文件备份到TRACE文件时,可以看到里面包含了两部分的重建语句,一个是使用RESETLOGS,另一个是使用NORESETLOGS。
备份控制文件的SQL如下:
SQL>alter database backup controlfile to trace as '/home/oracle/cct_ctl_lhr.sql';
以下是重建控制文件的命令:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "lhrdb" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/lhrdb/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/lhrdb/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/lhrdb/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/lhrdb/system01.dbf',
'/u01/app/oracle/oradata/lhrdb/sysaux01.dbf',
'/u01/app/oracle/oradata/lhrdb/undotbs01.dbf',
'/u01/app/oracle/oradata/lhrdb/users01.dbf',
'/u01/app/oracle/oradata/lhrdb/example01.dbf'
CHARACTER SET ZHS16GBK
;
若当前的所有在线日志可用时,则在创建控制文件的时候使用NORESETLOGS。若当前的在线日志有所损坏时,则在创建控制文件的时候需要使用RESETLOGS。若使用RESETLOGS则将导致在线日志里的内容丢失,并且所有的备份失效。
在打开数据库的时候也可以使用RESETLOGS或NORESETLOGS选项。在做了不完全恢复后,RESETLOGS会初始化日志,重置日志序列号(从1开始),并且创建一个新的INCARNATION。可以使用RMAN命令查看INCARNATION的信息:
RMAN> LIST INCARNATION;
做不完全恢复必须使用RESETLOGS,但是RESETLOGS也可以做完全恢复。而NORESETLOGS则必须是在做完全恢复时使用。RESETLOGS会重置日志序列号,强制清空或重建在线日志,而NORESETLOGS则不会这么做。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。