码迷,mamicode.com
首页 > 数据库 > 详细

oracle 恢复table删除数据 恢复package(使用闪回)

时间:2018-06-26 23:47:27      阅读:867      评论:0      收藏:0      [点我收藏+]

标签:ack   解释   ret   oracle   直接   exit   记录   磁盘   alter   

    好久没写东西了,今天写一篇凑个数吧,来公司一年多了,感觉自己到了一个小瓶颈期了。 以前每天很多新东西,都是忙着学,感觉没时间写博客总结一下,大部分都是写笔记,现在又是没东西可以写,每天干着95%都是重复的工作,大部分时间在运维,但我内心是把自己当做dba的,毕竟当初老大把我从java开发拉倒系统组^_^
    上次一个技术把表中的数据删除,这次是另一个技术把正确的包给覆盖了,我给恢复了,哈哈哈---有用的话看一下

参考博客:https://blog.csdn.net/wyzxg/article/details/6761458
虽然包恢复原理一样,但是操作差异一点,因为我的数据是12.2c的

正文1:表数据删除恢复

--1、查询删除数据时间点之前的数据
select * from 表名 as of timestamp to_timestamp(‘2016-08-11 16:12:11‘,‘yyyy-mm-dd hh24:mi:ss‘); --(若没有数据 ,将时间继续提前)
--2、启用行移动功能
alter table 表名 enable row movement;
--3、恢复数据(激动人心的时刻)
flashback table 表名 to timestamp to_timestamp(‘2016-08-11 16:12:11‘,‘yyyy-mm-dd hh24:mi:ss‘);
大功告成,数据恢复成功;

正文2:包被覆盖错了,想要闪回package

注意这里需要使用dba权限,否则查看不到

--错误包:XXX_PKG 正确时间:中午12点
SELECT OBJECT_ID
  FROM all_objects 
 WHERE OBJECT_NAME = ‘XXX_PKG‘;
 --如果包直接被删除了,不是被覆盖,那只能先闪回查询对象表
 SELECT OBJECT_ID
  FROM all_objects AS OF TIMESTAMP TO_TIMESTAMP(‘2018-06-26 12:00:00‘, ‘YYYY-MM-DD HH24:MI:SS‘)
 WHERE OBJECT_NAME = ‘XXX_PKG‘;
 --查到2个对象id,一个包头,一个包体
93163
94602
--根据对象id查询包头和包体内容
SELECT source
  FROM source$ AS OF TIMESTAMP TO_TIMESTAMP(‘2018-06-26 12:00:00‘, ‘YYYY-MM-DD HH24:MI:SS‘)
 where obj# = 93163;
 SELECT source
  FROM source$ AS OF TIMESTAMP TO_TIMESTAMP(‘2018-06-26 12:00:00‘, ‘YYYY-MM-DD HH24:MI:SS‘)
 where obj# = 94602;
 --然后确认没问题,用查到的sql内容重新覆盖就好
注意:一般package body的内容比较多,怎么复制下来呢?
spool  /home/oracle/xxx_pkg.sql

SELECT source
  FROM source$ AS OF TIMESTAMP TO_TIMESTAMP(‘2018-06-26 12:00:00‘, ‘YYYY-MM-DD HH24:MI:SS‘)
 where obj# = 93163;

spool off
exit
ll /home/oracle/

知识点

简单总结一下,这里就是利用了oracle的闪回查询功能,非常的简单,一看就懂了,但是oracle闪回有很多种包括删除表和数据库,闪回事务等等。
最重要的是要理解
SQL> show parameter undo_retention;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
undo_retention integer 900
这是默认的900,其中undo保留900s,后面undo磁盘不够就可能回收,那样闪回可能会失败,当然也可以强制保留更久,更详细的解释自行百度,下面是我的对闪回的为知笔记的一点点简单记录:http://8840743b.wiz03.com/share/s/28g7gX2-0A_U21N5531o6XTR1JE9nV1SfQc52nk8DX1zamut

谢谢阅读,有兴趣交流的留言

oracle 恢复table删除数据 恢复package(使用闪回)

标签:ack   解释   ret   oracle   直接   exit   记录   磁盘   alter   

原文地址:https://www.cnblogs.com/xcg-yg/p/9231653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!