window oracle 只有bak文件怎么恢复_一起来学习Oracle的备份恢复基础吧-4

基于backup controlfile的恢复

使用备份的控制文件在实际工作中的两种情况:

当前控制文件全部损坏,而数据文件备份、控制文件备份及当前的日志处在不同的SCN版本,它们之间又增加过表空间(数据文件)。

当前控制文件没有损坏,但是想恢复被删除的表空间。

使用备份的控制文件恢复数据库的语法

recover database until [time|change] using backup controlfile

注意:[time|change]是可选的,如果条件满足,仍然可以做到完全恢复,然后会出现如下选项:

Specify log: {=suggest | filename | AUTO | CANCEL }

此语法的出现是由于控制文件和当前日志中的SCN不一致,当前日志中的SCN总是最新的,而控制文件可能是老的或尚未更新的(shutdown abort过)。

AUTO:自动使用archivelog前滚恢复,但是一般不包括前滚current log;

filename:输入当前文件的路径和文件名,是指current log的恢复;

CANCEL:退出

注意:

1. 控制文件丢失进行恢复将会出现停机时间,不能联机进行控制文件的恢复。

1. 使用backup controlfile子句恢复数据库之后,一般用alter database open resetlogs打开数据库。

例子

例1 当前控制文件损坏,数据文件损坏,有全备但之后增加了表空间,并备份了控制文件(控制文件次新,包含了新建的表空间)。

分析:新建表空间数据文件损坏,全备里没有该数据文件的备份及控制文件描述,当前控制文件又丢失,只能用备份的控制文件恢复。

模式:所有数据文件备份---新建表空间----备份控制文件(次新)---日志文件(新)

1. 备份数据文件并新创建表空间,表

2dbae29ed25e9d850a93494084e48b79.png

c. 备份控制文件

alter database backup controlfile to '/opt/oracle/app/oradata/test.bak/con.bak1';

d. 模拟数据文件故障

rm abcd01.dbf

e. 恢复所有数据文件备份,准备做不完全恢复

dc33586f5f20a2a19cc9eb92eefa9dc6.png
bfc11db4d5073ce4675f29fd54882fb0.png

f. 启动库

f4df6b0a0908fcc299ffc520def6e46d.png

g. 查看scn信息

0f2b9ddfd60a078aab761e69211d835b.png

可以看出:

1) file5在控制文件记录的是abcd01,而与之对应的数据文件5是不存在的

2) 备份的数据文件scn比控制文件scn还老

h. 使用备份的控制文件恢复

recover database using backup controlfile;

e62ab0dc854653744090d50332a0dc85.png

报错信息:ORA-00283ORA-01110ORA-01157ORA-01110

此报错是因为老备份里没有abcd表空间,但是控制文件里记录了abcd,方法是建一个新的datafile空文件,而其中的内容可由日志文件recover(前滚)时填补出来;

alter database create datafile '/opt/oracle/app/oradata/test/abcd01.dbf';

再次使用recover database using backup controlfile;

440386693eff156ae892281ab64fe70a.png

查看redo3里包含9

cff092502795055d138f67f4a0b60852.png

i. resetlogs打开数据库

alter database open resetlogs;

6b1489f2c52bc8ddf00e1fc89a07b01e.png
例2当前控制文件损坏,新建表空间在备份控制文件之后

模式:全备(老)--备份控制文件(次新)--新建表空间----日志文件(新)

分析:整个恢复过程中datafile结构发生了变化,变化发生在备份控制文件之后,新增了表空间,而控制文件中没有此表空间记录,但日志里有。

1. 备份数据文件

cp *.dbf

1. 备份控制文件

alter database backup controlfile to '/opt/oracle/app/oradata/test.bak/con.bak';

1. 新建表空间、表

0936cbdda541e5304f7978bdd423a656.png
212e561e866134ab42325e48adb91b4f.png

m. 模拟新建数据文件损坏,将备份的数据文件、控制文件还原

4c30099fb90605a706c6f922265c4f6d.png
ebb46c7adb9a13242e1be044d9c76750.png

n. 查看scn版本

2b91b91f5b74ac42809a2a37d79b3d12.png

可以看出控制文件scn要比数据文件scn新

o. 开启库并使用备份控制文件恢复数据库

552281de61e4292f4ef7a097e651b7a8.png

SQL> recover database using backup controlfile;

e3a2073ed098608cbf897f46c4dac02a.png
462396b824fd232a7eb12acd3143bd6a.png
03fa63e2f2c60f13b0852e5e45da0c84.png

出现报错信息:ora-00283ora-01244ora-01110

78bec8a84a7aff12d487fad9d77e8ceb.png

恢复后控制文件出现UNNAMED00005,老控制文件不知道之后的timran01.dbf

p. 重命名数据文件

alter database create datafile '/opt/oracle/app/product/11.2.0/db_1/dbs/UNNAMED00005' as '/opt/oracle/app/oradata/test/timran01.dbf'; --这条命令自动完成两天动作:加了个数据文件timran01.dbf;重命名控制文件UNNAMED00005为timran01.dbf

73b175a03a6805d7274fbeb67bf8d703.png

q. 再次恢复database

536a973f81f906835f5cafe6d5a95f09.png

r. resetlogs打开库

1dd198223c81f4e8790b480a7ecad7bc.png
例3恢复被删除的表空间

环境;用户使用正常的操作命令删除了表空间及数据文件,但之后又希望恢复删除的表空间,全备里有这个表空间的数据文件。

模式:全备(老)----控制文件备份(次新)------删除表空间----所需日志(新)

分析:当用户使用drop tablespace xxx including contents and datafiles 这条DDL语句后,数据结构发生了变更,涉及到了3个地方:控制文件、该表空间下的数据文件、系统表空间(数据字典)

注意:当前控制文件里已经没有该表空间的信息了,所以不能使用当前的控制文件做恢复。恢复表空间要满足三个条件:

1. 要有该表空间的数据文件备份

1. 要使用不完全恢复(基于时间点或SCN)

1. 使用备份的控制文件,而这个控制文件是删除该表空间前的控制文件,不是当前的控制文件。这个非常重要,该控制文件中记录了需要恢复的数据库结构,重要的这个控制文件必须包括有你要恢复的那个表空间的信息。

1. 记录当前scn

select current_scn from v$database;

w. 备份控制文件

x. 删除表空间及数据文件

y. 删除所有的数据文件和当前控制文件,还原所有数据文件及备份的控制文件

z. 启动数据库做基于时间点(或scn)的不完全恢复

recover database until change SCN using backup controlfile;

aa. alter database open resetlogs;

32

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务、容器和Kubernetes的2020你怎么看?

历史上,有些年份比其他年份容易预测。因为市场出现的稳定性使追踪趋势线变得更加容易。2020年将是企业向微服务迁移的关键一年:稳定并逐步地向主流应用过渡。毫无疑问,IT组织正在转向微服务架构。微服务将应用程序分解为许多小部分&#xff0…

C++类对象作为类成员

C类中的成员可以是另一个类的对象&#xff0c;我们称该成员为对象成员 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//类对象作为类成员 class Phone {public:Phone(string PName) {cout << "Phone函数的调用&…

.NET 大数据实时计算--学习笔记

摘要纯 .Net 自研大数据实时计算平台&#xff0c;在中通快递服务数百亿包裹&#xff0c;处理数据万亿计&#xff01;将分享大数据如何落地以及设计思路&#xff0c;技术重难点。目录背景介绍计算平台架构项目实战背景介绍计算平台架构分片实时计算计算平台数据统计模型开源项目…

asp.net core 实现支持多语言

asp.net core 实现支持多语言Intro最近有一个外国友人通过邮件联系我&#xff0c;想用我的活动室预约&#xff0c;但是还没支持多语言&#xff0c;基本上都是写死的中文&#xff0c;所以最近想支持一下更多语言&#xff0c;于是有了多语言方面的一些实践国际化/本地化介绍国际化…

C++this指针的用途

this指针的用途&#xff1a; 1.当形参和成员变量同名时&#xff0c;可用this指针来区分。 2.在类的非静态成员函数中返回对象本身&#xff0c;可使用return *this 每一个非静态成员函数只会诞生一份函数实例&#xff0c;也就是说多个同类型的对象会共用一块代码&#xff0c;那…

【实战 Ids4】小技巧篇:自定义登录页操作

今天的内容很简单&#xff0c;1分钟就能看完&#xff0c;5分钟就能学会&#xff0c;但是却是在我们平时开发中必须要学会的一个小知识点&#xff0c;我就不让大家走弯路了&#xff0c;直接看操作。在平时的IdentityServer4开发中呢&#xff0c;我们都是根据官方的Demo来操作一遍…

Asp.Net Core下的开源任务调度平台ScheduleMaster

从何说起2017年初的时候&#xff0c;由于当时项目需要做了一个乞丐版定时调度系统&#xff0c;那时候只在单机上实现了核心的调度功能。做这个玩意之前也调研了社区中开源的解决方案&#xff0c;找了几个实地部署试跑了一下&#xff0c;其实都很不错。但那时候我们有个问题就是…

C#录制视频

这是一个使用C#语言制作的录制框架&#xff0c;支持录制桌面&#xff0c;多屏&#xff0c;声音&#xff0c;摄像头&#xff0c;某个应用程序的界面1.安装使用此框架需要安装扩展包Kogel.Record,可以Nuget上搜索或者使用Nuget命令Install-Package Kogel.Record安装完成包后会出现…

python编程小案例_用Python3编程写第一个小案例!-Go语言中文社区

用Python3编程第一步&#xff01;今天博主跟大家聊一聊如何使用Python3编程第一步&#xff01;&#xff01;不喜勿喷&#xff0c;如有建议欢迎补充、讨论&#xff01;Come on&#xff01;在前面的几篇文章中我们已经学习了一些Python3 的基本语法知识&#xff0c;我们尝试来写一…

UnitTest in .NET(Part 5)

Photo &#xff1a;UnitTesting文 | Edison Zhou上一篇我们学习了单元测试的核心技术&#xff1a;存根、模拟对象和隔离框架&#xff0c;它们是我们进行高质量单元测试的技术基础。本篇会集中在管理和组织单元测试的技术&#xff0c;以及如何确保在真实项目中进行高质量的单元测…

java 大小写_java中如何进行大小写字母转换?

展开全部1.创建工程&#xff0c;或使用已有工程&#xff0c;在工程下创建包&#xff0c;包内新建一个类&#xff0c;我e69da5e887aa3231313335323631343130323136353331333365653262命名为Cases类&#xff0c;大家根据自己喜好随便命名&#xff0c;但请保持类名与文件名一致。2…

大量SQL的解决方案——sdmap

大量SQL的解决方案——sdmap最近看到群里面经常讨论大型应用中 SQL的管理办法&#xff0c;有人说用 EF/ EFCore&#xff0c;但很多人不信任它生成 SQL的语句&#xff1b;有人说用 Dapper&#xff0c;但将 SQL写到代码中有些人觉得不合适&#xff1b;有人提出用存储过程&#xf…

java 最小堆_堆排序 最大堆 最小堆 Java 实现

堆一点疑惑&#xff0c;堆排序是就地排序&#xff0c;所以空间复杂度是 O(1)。但是&#xff0c;比如我有一个数组&#xff0c;建立一个最小堆&#xff0c;然后每次取出最小堆的顶点。建立最小堆需要额外空间&#xff1f;不深究了&#xff0c;归并排序需要额外空间。堆是完全二叉…

提高文档翻译效率神器:VS Code 插件之 Translator Helper

微软 Docs 网站上线之后&#xff0c;我发现很多中文内容是由机器翻译的&#xff0c;可读性比较差。2017 年开始我参与了中文文档的本地化工作&#xff0c;对机器翻译的文本进行校对。Docs 的内容全部托管在 GitHub 上&#xff0c;参与者可以 fork 仓库后进行修改&#xff0c;然…

java 导入导出 插件_Java最优的Excel导入/导出工具开发,你用过吗?

关注程序员7歌&#xff0c;一起用技术改变世界在我们实际开发中经常会遇到Excel的导入与导出功能&#xff0c;而目前Excel操作工具也是数不甚数啊&#xff0c;但是7歌用过很多&#xff0c;还是觉得最近发现的tool-excel好用&#xff0c;让你实现一语句代码就能完成Excel功能。首…

java gt_JAVA泛型知识--gt; lt;? extends Tgt;和lt;? super Tgt;

extends T> 和 super T> 是Java泛型中的“通配符(Wildcards)” 和 “边界(Bounds)”的概念extends T> 是指 “上界通配符(Upper Bounds Wildcards)”super T> 是指 “下界通配符(Lower Bounds Wildcards)”1. 为什么要用通配符和边界&#xff1f;使用泛型的过程…

使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)

工作上有个业务&#xff0c;.Net Core WebAPI作为服务端&#xff0c;需要将运行过程中产生的日志分类&#xff0c;并实时推送到各种终端进行报警&#xff0c;终端有桌面(WPF)、移动(Xamarin.Forms)、网站(Angular.JS)等&#xff0c;使用SignalR进行警报日志推送。微信公众号&am…

java图形包_java流布局图形包

第一步&#xff1a;导包import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;第二步&#xff1a;定义类public class TestFlayOut {public static void main(String[] args) {JFrame jf new JFrame("流布局DEMO"); //建立一个窗口Flo…

ASP.Net Core 3.1 中使用JWT认证

JWT认证简单介绍关于Jwt的介绍网上很多&#xff0c;此处不在赘述&#xff0c;我们主要看看jwt的结构。JWT主要由三部分组成&#xff0c;如下&#xff1a;HEADER.PAYLOAD.SIGNATUREHEADER包含token的元数据&#xff0c;主要是加密算法&#xff0c;和签名的类型&#xff0c;如下面…

C++继承的继承方式

继承方式一共有三种&#xff1a; 1.公共继承 2.保护继承 3.私有继承