Oracle之表空间基于时间点的恢复
记一次优化过程中;一次误操作,在不影响其他表空间的情况下;采用表空间基于时间点的恢复(TSPITR)方法恢复数据的过程。
1.TSPITR恢复原理
TSPITR目前最方便的方法是使用RMAN进行自动的恢复。其使用前提为两个,一个是必须存在相应的备份集合,另一个是表空间对象是“self-contain”,也就是其他表空间中不包括与这个表空间对象相关的对象数据。
恢复步骤和原理如下:
- RMAN三个对象集合:catalog、target和auxiliary。其中auxiliary就是用于辅助target各种备份还原要求的操作数据库。这个库在TSPITR中扮演临时数据还原作用的;
- 首先完成数据检查工作,确定备份集合和表空间完整性;
- 当前时间是T1,如果需要将数据还原为T0。使用RMAN提取备份数据集合,还原到auxiliary上形成一个新的实例数据库。选择性应用归档日志序列,还原auxiliary到TO时间点;
- 使用expdp工具从auxiliary中导出目标表空间为dump对象。注意:还原auxiliary并不是100%重建target,而是选择系统运行表空间和目标表空间;
- 在target数据库中删除原表空间。使用impdp工具导入dump文件进入target数据库;
- 清理环境,将创建的auxiliary数据库删除;
2. 模拟环境:
2.1 备份数据库
backup database format '/data/oracle/rman/back_db_%U';
2.2 误操作模拟
SQL> alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"; Session altered. SQL> select sysdate from dual; SYSDATE
-------------------
-- :: SQL> conn lottu/li0924
Connected. SQL> select count() from lottu02; COUNT()
---------- SQL> truncate table lottu02; --误操作 Table truncated.
3.模拟恢复操作
3.1 第一次恢复过程
模拟第一次恢复结果是失败的;我的恢复脚本如下:
run{
sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';
sql 'alter session set NLS_LANGUAGE=American';
recover tablespace LOTTU until time='2017-04-07 11:14:22' auxiliary destination '/u01/auxiliary';
}
在上述的步骤4出现错误;即使用expdp工具从auxiliary中导出目标表空间为dump对象这个过程;错误信息如下:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/06/2017 16:43:57
RMAN-06136: ORACLE error from auxiliary database: ORA-01097: cannot shutdown while in a transaction - commit or rollback first
RMAN-06962: Error received during export of metadata
RMAN-06960: EXPDP> ORA-39065: unexpected master process exception in MAINORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select obj# from oid$ where ...","SQLA","tmp")
RMAN-06960: EXPDP> ORA-39097: Data Pump job encountered unexpected error -4031
根据错误信息中“EXPDP> ORA-39065: unexpected master process exception in MAINORA-04031: unable to allocate 32 bytes of shared memory” 出现辅助实例内存不够。
3.2第二次恢复
本次恢复结果是成功的;与上次不同的是;本次添加了辅助实例的参数文件。操作如下;
[oracle@oracle234 auxiliary]$ cat initaux.ora
db_name=ORA11G
db_unique_name=swhw_tspitr_ORA11G
compatible=11.2.0.0.0
db_block_size=8192
db_files=200
sga_target=1024M
processes=50
其中 "db_name="和"compatible=" 需要跟恢复数据库是一致的;这个可以从第一次恢复信息拷贝。
恢复脚本如下:
run{
set auxiliary instance parameter file to '/u01/auxiliary/initaux.ora'
sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';
sql 'alter session set NLS_LANGUAGE=American';
recover tablespace LOTTU until time='2017-04-07 11:14:22' auxiliary destination '/u01/auxiliary';
}
3.3 验证结果:
SQL> select file#,status from v$datafile;
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 OFFLINE
6 ONLINE
6 rows selected.
SQL> alter tablespace lottu online;
Tablespace altered.
SQL> conn lottu/li0924
Connected.
SQL> select count(1) from lottu02;
COUNT(1)
----------
999
从结果来看;恢复是成功的。
4. 参考文献
http://www.cnblogs.com/jyzhao/p/4956220.html
Oracle之表空间基于时间点的恢复的更多相关文章
- 表空间基于时间点的恢复(TSPITR)
环境:RHEL 6.4 + Oracle 11.2.0.4 准备模拟环境 1. 验证表空间的依赖性 2. 确定执行TSPITR后会丢失的对象 3. 自动执行TSPITR Reference 准备模拟环 ...
- 【RMAN】TSPITR--RMAN表空间基于时间点的自动恢复
[RMAN]TSPITR--RMAN表空间基于时间点的自动恢复 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- Oracle误删除表空间的恢复
对于误删除表空间的恢复,本文通过基于数据库的时间点恢复和基于表空间的时间点恢复分别加以讨论 一 通过基于数据库的时间点恢复被误删除的表空间 1 需要注意的事项 a 基于数据库的时间点恢复将会回退整个数 ...
- 转oracle 学习 - 表空间
Oracle 数据库的表空间和 Oracle 数据库数据文件 关于 Oracle 数据库的表空间. 很多 Oracle 初学者弄不明白表空间的概念和意义,他们只知道给数据库建表的时候需要到表空间这个东 ...
- 转 关于oracle 分区表 表空间以及索引的总结
关于oracle的表空间,分区表,以及索引的总结关键字: oracle, 表空间, 分区表, 索引 上周第一次做数据库测试碰到了很多问题特此总结: 表空间: Oracle的UNDOTBS01.DBF文 ...
- Oracle的表空间、用户和模式
Oracle 的 表空间(Tablespace).用户(User).模式(Schema) 前面有整理了一篇 Oracle 数据库(database) 与 实例(instance) 的概念及关系整理 ...
- oracle数据库表空间追加数据库文件方法
oracle数据库表空间追加数据库文件方法 针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G 第一种方式:表空间增加数据文件 www.2cto.com 1 ...
- Oracle 设置表空间自增长
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...
- Oracle Temp表空间切换
来源于: http://www.2cto.com/database/201507/418564.html 一.TEMP表空间作用 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时 ...
随机推荐
- JSP字符集编码集合
在这里,我们先说说JSP/Servlet中的几个编码的作用. 在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8".contentT ...
- postgresql远程连接中断的处理
在网络上连接远程服务器postgresql时,不活动时间稍长就会自动断开连接,不利于操作. 琢磨了一下,服务器上使用以下网络配置时,解决了这个问题. #man 7 tcp net.ipv4.t ...
- 超级简单却不知道:html标签的嵌套规则
XHTML的标签有许多:div.ul.li.dl.dt.dd.h1~h6.p.a.addressa.span. strong……我们在运用这些标签搭建页面结构的时候,是可以将它们无限嵌套的,但是,嵌套 ...
- 关于Unity中水和雾的使用
水 自己来做水和雾还是有点麻烦的,不过没关系,Unity帮我们做好了很多可以用的. 1.Unity自己实现了水的特效,帮助我们解决游戏中水的问题 2.Unity的水集成在了Environment的环境 ...
- Ogre2.0 全新功能打造新3D引擎
不知当初是在那看到,说是Ogre2.0浪费了一个版本号,当时也没多想,以为没多大更新,一直到现在想做一个编辑器时,忽然想到要看下最新版本的更新,不看不知道,一看吓一跳,所以说,网络上的话少信,你不认识 ...
- (笔记)Linux延时及时间函数总结
一. 基础知识1.时间类型.Linux下常用的时间类型有4个:time_t,struct timeval,struct timespec,struct tm.(1)time_t是一个长整型,一般用来表 ...
- 第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解
第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行 ...
- 第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行、scrapy-splash、splinter
第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行.scrapy-splash. splinter 1.chrome谷歌浏览器无界面运行 chrome ...
- Maven构建自动化
构建自动化定义相关工程项目构建过程中,在当项目构建成功完成启动的情况下,来确保所依赖的项目是稳定的. 实例 考虑一个团队正在开发一个项目总线核心API上的其他两个项目的应用程序:网页UI和应用程序的桌 ...
- e790. 设置JSpinner的边框
// Create a number spinner JSpinner spinner = new JSpinner(); // Get the text field JFormattedTextFi ...