oracle 恢复table删除数据 恢复package(使用闪回)
好久没写东西了,今天写一篇凑个数吧,来公司一年多了,感觉自己到了一个小瓶颈期了。 以前每天很多新东西,都是忙着学,感觉没时间写博客总结一下,大部分都是写笔记,现在又是没东西可以写,每天干着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(使用闪回)的更多相关文章
- oracle中关于删除表purge语句和闪回语句的基本使用
语法: drop table ... purge; 例子:drop table test purge; purge是直接删除表,不保留到回收站,10G开始默认drop表式改名移动到回收站; 闪回(fl ...
- Oracle闪回查询恢复delete删除数据
Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. Flashback q ...
- Oracle恢复已删除数据
Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database ...
- oracle插入,更新,删除数据
插入,更新,删除数据 oracle提供了功能丰富的数据库管理语句 包括有效的向数据库中插入数据的insert语句 更新数据的update语句 以及当数据不再使用时删除数据的delete语句 更改数据之 ...
- Oracle多表更新及MERGE命令和闪回机制还原数据表
一.多表更新 比如线上有个系统由于某一个模块出现异常,导致系统整体的数据出现了错误,需要你手动改写数据库错误,Oracle update语句更新的值来自另一张表 update语法最基本的格式为 UPD ...
- Oracle 修改 新增 触发器 针对字段修改 触发器 误删Oracle表、数据、触发器找回 闪回查询
emmmm 写这个博客心情很复杂,,,本来这个触发器早就写好了,后来发生点事就写个博客当个备份吧,就当留纪念了:话不多数上问题以及SQL: 问题: 在ABONPB表上增加一个触发器,针对车牌号字段做u ...
- oracle 大表删除数据后,回收空间的问题。
在oracle中由于表结构设计不合理或者需要清楚老数据的时候,经常需要对大表数据进行清理. 一般有一下几种方法: 1. 删除大部分数据,留下小部分数据.我们可以把需要保留的数据转移到别的表,然后再把大 ...
- Oracle闪回技术详解
概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速 ...
- Oracle闪回技术
(一)闪回技术概要 闪回技术是数据库备份与恢复的重要补充手段,主要包括以下7种特性: 特性 原理 数据库支持 闪回查询(Flashback Query) 利用undo表空间中的回退信息,查询过去某个时 ...
随机推荐
- [转]真正的中国天气api接口xml,json
转自:http://blog.csdn.net/fancylovejava/article/details/26102635 我只想说现在网上那几个api完全坑爹有木有??? 官方的申请不来有木有,还 ...
- JUnit源码分析 - 扩展 - 自定义RunListener
RunListener简述 JUnit4中的RunListener类用来监听测试执行的各个阶段,由RunNotifier通知测试去运行.RunListener与RunNotifier之间的协作应用的是 ...
- OneHot编码
One-Hot编码 What.Why And When? 一句话概括:one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程. 目录: 前言: 通过例子可能更容易理解这个概念. 假设 ...
- Polar Code(1)极化码SC译码迭代公式的理解
采用对数似然比求解的迭代公式推导: 考虑 如上图,将L的部分看为一个整体,用 exp(a)和exp(b)代替,并对式子左右都取对数,则公式变为如下所示: 对数似然比 上述公式等效一下公式: 进一步可等 ...
- 使用IDEA工具编写Python自动化脚本遇到的小问题
1.无法编写代码:因为安装了IdeaVim,所以需要按i进入编辑模式才能输入 2.位于同一目录下的py文件,其中一个文件需要引入另一个文件from 模块名 import * 无法找到模块名:点击这两个 ...
- HDU - 1695 GDU
莫比乌斯反演基础. 用rep 去掉重复的对数,rep一定是奇数( 因为有(1,1 ) ) #include <bits/stdc++.h> using namespace std; #de ...
- Java8-函数式接口理解及测试
1. 函数式接口的理解 根据重构的思想,需要把容易变化的模块进行抽象并封装起来,从这个点来看,Java8新引入的函数式接口就是基于这个思想进行设计的. 2. 函数式接口定义 2.1 自定义如下 需要 ...
- Spring 事物Transaction
日常开发中Spring 为我们提供了两种事物的定义方式 XML 配置 方式 :这种方式配置起来比较麻烦,但后期比较好进行维护 注解方式:配置起来比较方便,也是日常开发常用的: 我们这里进行第二种注解的 ...
- rabbitmq 启动报错 Failed to get nic info
这个报错 基本搜索不到什么有效信息 解决办法: hostnamectl set-hostname xxx.local # 先把rabbitmq进程杀掉$ ps -ef | grep rabbitmq ...
- Redhat 7 开通防火墙端口
1.查看防火墙状态,root用户登录,执行命令systemctl status firewalld 2.开启防火墙:systemctl start firewalld 3.关闭防火墙:systemct ...