基于取消的不完全恢复

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 基于取消的不完全恢复是指数据库恢复到特定日志序列号之前的状态。当因丢失归档日志或重做日志完全恢复失败时,可以使用这种方法。 在做这个实验时我是将序列号位 23的日志文件删除了。

基于取消的不完全恢复是指数据库恢复到特定日志序列号之前的状态。当因丢失归档日志或重做日志完全恢复失败时,可以使用这种方法。

在做这个实验时我是将序列号位 23的日志文件删除了。实验表t1;

SQL> select * from t1;

       NUM                                                                     
----------                                                                     
         1                                                                     
         2                                                                     
         3                                                                     
         4                                                                     
         5                                                                     
         6                                                                     

已选择6行。

模拟实验环境,删除t1表所在的数据文件 test.dbf

1)关闭数据库,将数据打开至加载状态。执行不完全恢复时数据库必须在mount状态。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  535662592 bytes                                      
Fixed Size                  1334380 bytes                                      
Variable Size             142607252 bytes                                      
Database Buffers          385875968 bytes                                      
Redo Buffers                5844992 bytes                                      
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'F:\APP\YANG\ORADATA\ORACL\TEST.DBF'
 

2)  复制所有数据文件备份。                                                               

SQL> @f:\sql\recover.sql
SQL> select file#,change# from v$recover_file;

     FILE#    CHANGE#                                                          
---------- ----------                                                          
         1    2558251                                                          
         2    2558251                                                          
         3    2558251                                                          
         4    2558251                                                          
         5    2558251                                                          
         6    2558251                                                          

已选择6行。

----当复制数据文件备份时,必须确保备份文件的scn值小于要恢复到的scn值。

2558251     !

SQL> select max(first_change#) fchange from v$log_history where sequence#=23;

   FCHANGE                                                                     
----------                                                                     
   2559954            

3)执行  recover database until cancel 命令。                                                       

SQL> recover database until cancel;
ORA-00279: 更改 2558251 (在 05/14/2010 12:33:26 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\13_1_718839060.LOG
ORA-00280: 更改 2558251 (用于线程 1) 在序列 #13 中

指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01195: 文件 1 的联机备份需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'F:\APP\YANG\ORADATA\ORACL\SYSTEM01.DBF'


ORA-01112: 未启动介质恢复

SQL> recover database until cancel;
ORA-00279: 更改 2558251 (在 05/14/2010 12:33:26 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\13_1_718839060.LOG
ORA-00280: 更改 2558251 (用于线程 1) 在序列 #13 中

指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 2558455 (在 05/14/2010 12:38:45 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\14_1_718839060.LOG
ORA-00280: 更改 2558455 (用于线程 1) 在序列 #14 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\13_1_718839060.LOG'

ORA-00279: 更改 2558787 (在 05/14/2010 12:45:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\15_1_718839060.LOG
ORA-00280: 更改 2558787 (用于线程 1) 在序列 #15 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\14_1_718839060.LOG'

ORA-00279: 更改 2558793 (在 05/14/2010 12:46:07 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\16_1_718839060.LOG
ORA-00280: 更改 2558793 (用于线程 1) 在序列 #16 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\15_1_718839060.LOG'

ORA-00279: 更改 2558799 (在 05/14/2010 12:46:18 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\17_1_718839060.LOG
ORA-00280: 更改 2558799 (用于线程 1) 在序列 #17 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\16_1_718839060.LOG'

ORA-00279: 更改 2558818 (在 05/14/2010 12:46:33 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\18_1_718839060.LOG
ORA-00280: 更改 2558818 (用于线程 1) 在序列 #18 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\17_1_718839060.LOG'

ORA-00279: 更改 2559925 (在 05/14/2010 13:14:21 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\19_1_718839060.LOG
ORA-00280: 更改 2559925 (用于线程 1) 在序列 #19 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\18_1_718839060.LOG'

ORA-00279: 更改 2559934 (在 05/14/2010 13:14:41 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\20_1_718839060.LOG
ORA-00280: 更改 2559934 (用于线程 1) 在序列 #20 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\19_1_718839060.LOG'

ORA-00279: 更改 2559942 (在 05/14/2010 13:14:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\21_1_718839060.LOG
ORA-00280: 更改 2559942 (用于线程 1) 在序列 #21 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\20_1_718839060.LOG'

ORA-00279: 更改 2559948 (在 05/14/2010 13:15:06 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\22_1_718839060.LOG
ORA-00280: 更改 2559948 (用于线程 1) 在序列 #22 中
ORA-00278: 此恢复不再需要日志文件 'F:\APP\YANG\ARCHIVE2\21_1_718839060.LOG'

ORA-00308: 无法打开归档日志 'F:\APP\YANG\ARCHIVE2\22_1_718839060.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

SQL> recover database until cancel;
ORA-00279: 更改 2559948 (在 05/14/2010 13:15:06 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\22_1_718839060.LOG
ORA-00280: 更改 2559948 (用于线程 1) 在序列 #22 中

4)alter database open resetlogs,查看恢复是否成功。。
SQL> alter database open resetlogs;
数据库已更改

SQL> select * from t1;

       NUM                                                                     
----------                                                                     
         1                                                                     
         2                                                                     
         3                                                                     
         4
         

数据库的不完全恢复 成功。。。。。

5)执行了resetlogs之后,建议进行数据库的全备份。

SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            f:\app\yang\archive2
最早的联机日志序列     1
下一个存档日志序列   1
当前日志序列           1
SQL> alter database begin backup;
数据库已更改。
SQL> @f:\sql\hotbak.sql
SQL> alter database end backup;
数据库已更改。
SQL> alter database backup controlfile
  2  to 'f:\lib\control.ctl' reuse;
数据库已更改。
SQL> alter system archive log current;
系统已更改。

结束语: 做这个实验做了好几次都没成功,当执行第三步时,先输入cancel 提示,取消介质恢复。输入auto后,数据库才利用归档日志进行恢复。关于这一点,我有点不清楚了,既然是基于cancel的,为什么还要输入auto呢?请哪位看官给个解答。谢谢了
                         

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
机器学习/深度学习 存储 自然语言处理
大语言模型参数真的必须要万亿以上吗?
本文探讨了大语言模型(LLMs)的发展及其在自然语言处理领域的应用。随着模型规模的不断增大,文章分析了参数规模与性能之间的关系,并展示了不同规模模型的优势与挑战。此外,文中还提供了代码示例,介绍了参数设置的方法。未来研究方向包括模型压缩和多模态学习,以进一步优化模型性能。总之,选择合适的模型规模对于平衡性能和效率至关重要。
|
存储 人工智能 数据处理
Claude 3有哪些特点?
【2月更文挑战第17天】Claude 3有哪些特点?
791 2
Claude 3有哪些特点?
|
机器学习/深度学习 算法 计算机视觉
基于复杂环境下的雷达目标检测技术(Matlab代码实现)
基于复杂环境下的雷达目标检测技术(Matlab代码实现)
508 0
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
590 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
236 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
828 60