这篇文章主要为大家展示了“使用using backup controlfile恢复db之后为什么需要resetlogs”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“使用using backup controlfile恢复db之后为什么需要resetlogs”这篇文章吧。
这个问题我想可能不仅仅困挠我一个人,不过很多时候我们却又解释不清,觉得oracle似乎使用using backup controlfile恢复db之后没必要resetlogs,但是我觉得resetlogs似乎又有些道理…SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
–冷备份
SQL> startup
ORACLE instance started.Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> select group#,免费云主机域名status,sequence# ,archived,first_change# from v$log;GROUP# STATUS SEQUENCE# ARC FIRST_CHANGE#
———- —————- ———- — ————-
1 CURRENT 2 NO 1090927
2 INACTIVE 1 YES 1090926
3 UNUSED 0 YES 0SQL> alter system switch logfile;系统已更改。SQL> alter system switch logfile;系统已更改。SQL> alter system switch logfile;系统已更改。SQL> alter system switch logfile;系统已更改。SQL> alter system switch logfile;系统已更改。SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
–目前controlfile是最新的,如果controlfile不损坏,查看一下db能最终恢复到的scn是1092089
SQL> select file#,checkpoint_change# from v$datafile;FILE# CHECKPOINT_CHANGE#
———- ——————
1 1092089
3 1092089
4 1092089
7 1092089SQL>SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
–删除了controlfile和datafile,拷贝备份时的controlfile和datafile
SQL> startup
ORACLE 例程已经启动。Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-00314: 日志 1 (用于线程 1) 要求的序号 与 不匹配
ORA-00312: 联机日志 1 线程 1: ‘D:ORADATATESTREDO01.LOG’
SQL> recover database using backup controlfile;
ORA-00279: 更改 1091621 (在 07/31/2010 14:33:23 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_2_%U_.ARC
ORA-00280: 更改 1091621 (用于线程 1) 在序列 #2 中
指定日志: {
auto
ORA-00279: 更改 1091764 (在 07/31/2010 14:35:30 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_
ORA-00280: 更改 1091764 (用于线程 1) 在序列 #3 中
ORA-00278: 此恢复不再需要日志文件
‘E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_2_6595S2CQ_.ARC’
ORA-00279: 更改 1091766 (在 07/31/2010 14:35:31 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_4_%U_.ARC
ORA-00280: 更改 1091766 (用于线程 1) 在序列 #4 中
ORA-00278: 此恢复不再需要日志文件
‘E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_3_6595S400_.ARC’
ORA-00279: 更改 1091769 (在 07/31/2010 14:35:36 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_5_%U_.ARC
ORA-00280: 更改 1091769 (用于线程 1) 在序列 #5 中
ORA-00278: 此恢复不再需要日志文件
‘E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_4_6595S8RF_.ARC’
ORA-00279: 更改 1091771 (在 07/31/2010 14:35:37 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_6_%U_.ARC
ORA-00280: 更改 1091771 (用于线程 1) 在序列 #6 中
ORA-00278: 此恢复不再需要日志文件
‘E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_5_6595S9TC_.ARC’
ORA-00279: 更改 1091774 (在 07/31/2010 14:35:43 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_7_%U_.ARC
ORA-00280: 更改 1091774 (用于线程 1) 在序列 #7 中
ORA-00278: 此恢复不再需要日志文件
‘E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_6_6595SHSW_.ARC’
ORA-00308: 无法打开归档日志
‘E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_7_%U_.ARC’
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL>SQL> recover database using backup controlfile;
ORA-00279: 更改 1091774 (在 07/31/2010 14:35:43 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_7_%U_.ARC
ORA-00280: 更改 1091774 (用于线程 1) 在序列 #7 中
指定日志: {
D:oradatatestredo01.log
ORA-00310: 归档日志包含序列 5; 要求序列 7
ORA-00334: 归档日志: ‘D:ORADATATESTREDO01.LOG’
SQL> recover database using backup controlfile;
ORA-00279: 更改 1091774 (在 07/31/2010 14:35:43 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_7_%U_.ARC
ORA-00280: 更改 1091774 (用于线程 1) 在序列 #7 中
指定日志: {
D:oradatatestredo02.log
已应用的日志。
完成介质恢复。
SQL> select file#,checkpoint_change# from v$datafile;
———- ——————
1 1092088
3 1092088
4 1092088
7 1092088SQL> select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#
———- ——————
1 1092088
3 1092088
4 1092088
7 1092088SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
–=======================================
–最终db恢复到了1092088,和完全恢复到的scn1092089仅仅相差了1,难道相差1这就是使用using backup controlfile恢复db之后需要resetlogs的理由?其实我觉得肯定不是,之所以需要resetlogs
的原因是controlfile里记录了大量的和redo相关的信息,现在最新的controlfile损坏之后,很多有关
redo的信息不明确了,这可能是最终使用using backup controlfile恢复db之后需要resetlogs的理由
毕竟oracle 打开db使用的是resetlogs而不是resetscn…
–=======================================
SQL> alter database open resetlogs;数据库已更改。SQL> select file#,checkpoint_change# from v$datafile;FILE# CHECKPOINT_CHANGE#
———- ——————
1 1092091
3 1092091
4 1092091
7 1092091SQL> select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#
———- ——————
1 1092091
3 1092091
4 1092091
7 1092091SQL>以上是“使用using backup controlfile恢复db之后为什么需要resetlogs”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注云编程开发博客行业资讯频道!
基于如下几点:1、4G网络的成熟商业化、5G网的即将到来;2、移动智能终端产品的成熟;3、BYOD的实时、便捷性带来的巨大市场需求;4、业务云化;移动智能终端的发展愈加迅猛,在企业级的应用中,相对比较为成熟的PC终端的安全管控,移动智能终端显得较为薄弱,但移动…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。