千家信息网

使用using backup controlfile恢复db之后为什么需要resetlogs

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"使用using backup controlfile恢复db之后为什么需要resetlogs",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并
千家信息网最后更新 2026年11月01日使用using backup controlfile恢复db之后为什么需要resetlogs

这篇文章主要为大家展示了"使用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 0

SQL> 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 1092089

SQL>

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 中


指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 1091764 (在 07/31/2010 14:35:30 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG2010_07_31O1_MF_1_

3_%U_.ARC
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 中


指定日志: {=suggested | filename | AUTO | CANCEL}
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 中


指定日志: {=suggested | filename | AUTO | CANCEL}
D:oradatatestredo02.log
已应用的日志。
完成介质恢复。
SQL> select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092088
3 1092088
4 1092088
7 1092088

SQL> select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092088
3 1092088
4 1092088
7 1092088

SQL> 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 1092091

SQL> select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1092091
3 1092091
4 1092091
7 1092091

SQL>

以上是"使用using backup controlfile恢复db之后为什么需要resetlogs"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

线程 日志 序列 数据 数据库 建议 文件 生成 系统 中指 内容 篇文章 装载 信息 备份 理由 学习 帮助 必要 不仅仅 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技工作委员会副主任毛军 互联网科技公司税收优惠 互联网 的科技创新 碳银互联网科技 远拓互联网科技 大白互联网科技 湖南诚度互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 受益于互联网科技的高速发展 青海科技产业互联网发展 工业互联网等科技实现智能化赋能 美国互联网科技实力 上海京穆互联网科技有限公司 互联网金融科技公司的优势 富国互联网科技002692 易企秀互联网科技是做什么的 中国互联网公司的科技投入 科技信息时代互联网发展 承德科技产业互联网平台 哈尔滨大商圈互联网科技有限公司 深圳恒合互联网络科技有限公司 亿策互联网科技 顺玮阁互联网科技 互联网科技公司名称 中国最先进互联网科技公司 宁波青枫互联网科技有限公司 成都互联网科技公司工作好不好 健康食品互联网创新科技园项目 允成互联网科技有限公司融资
0