用备份控制文件做不完全恢复下的完全恢复(全备<老>--备份控制文件<次新>--删除表空间andy--日志文件<新>)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

为什么会使用备份的控制文件? 实际工作中主要有两种情况:


第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件)。
第二种:当前控制文件没有损坏,但想要恢复被删除的表空间。


实验3 :全备<老>--备份控制文件<次新>--删除表空间andy--日志文件<新>


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


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


特别提醒的是:当前的控制文件里已经没有该表空间的信息了,所以不能使用当前的控制文件做恢复。恢复这个表空间要满足三个条件:
a)要有该表空间的数据文件备份
b)使用不完全恢复(基于时间点或scn)
c)使用备份的控制文件,而这个控制文件是删除该表空间前的控制文件,不是当前的控制文件。这个非常重要,该控制文件中的内容记录了你需要恢复数据库结构,重要的这个控制文件必须包括有你要恢复的那个表空间的信息。


1)准备环境




--生成要备份的数据文件的命令
SQL>  select 'ho cp ' || name || ' /home/oracle/coldbak' from vdatafile;HOCP||NAME||/HOME/ORACLE/COLDBAKhocp/home/oracle/app/oradata/orcl/system01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/sysaux01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/undotbs01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/users01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/tbtb01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/ogg01.dbf/home/oracle/coldbak6rowsselected.SQL>shutdownimmediate;Databaseclosed.Databasedismounted.ORACLEinstanceshutdown.SQL>hocp/home/oracle/app/oradata/orcl/system01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/sysaux01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/undotbs01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/users01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/tbtb01.dbf/home/oracle/coldbakhocp/home/oracle/app/oradata/orcl/ogg01.dbf/home/oracle/coldbakSQL>startup;ORACLEinstancestarted.TotalSystemGlobalArea1068937216bytesFixedSize2220200bytesVariableSize729812824bytesDatabaseBuffers331350016bytesRedoBuffers5554176bytesDatabasemounted.Databaseopened.SQL>alterdatabasebackupcontrolfileto/home/oracle/coldbak/ctl01.bak;Databasealtered.SQL>selectnamefromvtablespace;


NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
LZY
GOLDGATE




SQL>  create tablespace andy datafile '/home/oracle/app/oradata/orcl/andy01.dbf' size 1m;


Tablespace created.


SQL>  create table andy.andy(id int) tablespace andy;


Table created.


SQL>  insert into andy.andy values (101);


1 row created.


SQL> commit;


Commit complete.


SQL> select * from andy.andy;


        ID
----------
       101
SQL> select current_scn from vdatabase;CURRENTSCN20426812SQL>droptablespaceandyincludingcontentsanddatafiles;3)SQL>shutdownimmediate;4[oracle@11gorcl] rm -rf *.dbf
[oracle@11g orcl]rmrf/home/oracle/app/oradata/orcl/control01.ctl[oracle@11gorcl] rm -rf /home/oracle/app/flash_recovery_area/orcl/control02.ctl
[oracle@11g coldbak]cpctl01.bak/home/oracle/app/oradata/orcl/control01.ctl[oracle@11gcoldbak] cp ctl01.bak /home/oracle/app/flash_recovery_area/orcl/control02.ctl
[oracle@11g coldbak]$ cp *.dbf /home/oracle/app/oradata/orcl/


5)启动数据库后,要做基于时间点(或SCN)的不完全恢复


SQL> startup;
ORACLE instance started.


Total System Global Area 1068937216 bytes
Fixed Size    2220200 bytes
Variable Size  729812824 bytes
Database Buffers  331350016 bytes
Redo Buffers    5554176 bytes
Database mounted.
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选


SQL> recover database until change 2042681 using backup controlfile;




6)resetlogs打开数据库


SQL> alter database open resetlogs;


Database altered.


7)验证


SQL> select * from andy.andy;


        ID
----------
       101


OK,结束。 转载请标明出处。

文章可以转载,必须以链接形式标明出处。


本文转自 张冲andy 博客园博客,原文链接:  http://www.cnblogs.com/andy6/p/6279564.html ,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
102
分享
相关文章
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
591 28
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
239 3
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
147 4
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
316 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
200 1
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
214 1
【赵渝强老师】Oracle的控制文件与归档日志文件
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
为什么SQL日志文件很大,该如何处理?
为什么SQL日志文件很大,该如何处理?
系统监控:使用日志文件 journalctl的使用
本文介绍了如何使用`journalctl`命令来监控和查看Linux系统的日志文件,包括查看特定行数、过滤日志级别、实时跟踪日志、按时间段查询日志以及日志轮换和压缩的配置。
471 2
系统监控:使用日志文件 journalctl的使用
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
115 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问