Oracle数据误删恢复

欢迎关注微信公众号:程序员小圈圈
转载请标明出处^_^
原文首发于:www.zhangruibin.com
本文出自于:RebornChang的博客

对于删除数据,我们大致可以分为两种。
①一种是在控制台执行的sql进行数据删除。
②一种是在项目中,比如web项目,jdbc执行sql的删除。
有的人可能就这样说了,我是用datagrip之类的数据库连接软件,直接查询出来数据然后点击按钮删除的。这种就是①的情况,因为这种软件在底层都是连接数据库执行的sql。
那又有一个疑问,项目中执行的sql跟控制台执行的是否一样呢,有什么证明吗?
有的,那就涉及到一个视图:
vsqlarea。说到vsqlarea。 说到vsqlarea。说到vsqlarea 就不得不说下 vsql以及vsql 以及vsql以及vsqltext。
关于三者的详细说明见文末。

接下来说下为啥笔者会写这篇文章记录:
情景:某一在用系统对商品配置时,错误的删除了一个代理商,可怕的是,项目执行的是delete语句,并不是update状态,也就是说是彻底删除,瞬间炸裂,怎么找回刚误删的数据?
那么看下面两种,笔者使用的是第二种。

控制台执行的sql删除

在控制台执行的sql都会被oracle快照到一个视图:

v$sqlarea。
通过查询这个视图,我们可以看到刚才执行的语句,比如delete语句,然后通过对时间的排序,我们就可以得到想要的sql。

select t.SQL_TEXT, t.FIRST_LOAD_TIME  from v$sqlarea t order by t.FIRST_LOAD_TIME desc ;

上面那句sql笔者执行后结果如下:

不过这样有一个问题,就是当我的数据比较复杂的时候,我是直接通过id之类的做的删除,那这个就不好使了,你可以想象下,这个视图存储的是控制台执行的语句,而且不包括上文中的②。
那么接下来再看另一种。

oracle数据快照找回删除数据

每条我们删除的数据,都会存在对应表的删除快照,所以我们只需要找到这个类似于回收站的东西,然后就可以筛选我们需要的数据,笔者的数据就是依赖这个找到的,先说下sql例子:

select * from GOODS_CONFIG_DETAIL as of timestamp to_timestamp('2019-08-28 09:30:00', 'yyyy-mm-dd hh24:mi:ss') where GOODS_CONFIG_ID = '0000000082AF0815AA953170ACD88F';

解释:
select * from 误删数据的表名 as of timestamp to_timestamp(‘从什么时候开始进行筛选,也就是需要定位到误删之前的时间’, ‘yyyy-mm-dd hh24:mi:ss’)。

vsqlarea、vsqlarea、 vsqlarea、vsql 、v$sqltext

共同点

1.都存储了sql内容;

  1. 记录的都是位于内存中的sql内容;

3.因为是内存,所以都不保留历史记录;

不同点

1.存储的为止不都是相同

其中vsql和vsql和vsql和vsqlarea存储的sql都是位于shared sql area中的sql,而v$sqltext是位于sga中的sql。但文档没有明确说明这里的sga是否还包含了psa(私有sql区域--共享服务器模式下)。

2.存储sql的方式也不同
vsql和vsql和vsql和vsqlarea都是用一行来存储sql全文,而v$sqltext用一行存储sql的一行。

3.v$sql不存储包含group by的
通常这个视图,在每个查询执行完成后更新,但对于执行很久的sql,它是每5秒更新一次,这点对于查看sql执行状态是有意义的。

4.存储的明细不同
这是最基本的。

V$SQL

VSQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。VSQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。VSQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。VSQL中的视图信息一般在sql执行的最后进行更新。然而,对于长时间执行的sql,每5秒会更新一次v$sql视图。这使得很容易查看长时间执行的sql在运行过程中带来的影响。

vsql列说明,如没有特别说明,均指子游标,存储的是具体的SQL和执行计划相关信息,实际上,vsql列说明,如没有特别说明,均指子游标,存储的是具体的SQL 和执行计划相关信息,实际上,vsql列说明,如没有特别说明,均指子游标,存储的是具体的SQL和执行计划相关信息,实际上,vsqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by之后的信息。

V$SQL各列说明

v$sql SQL_TEXT           //当前正在执行的游标的sql文本的前1000个字符SQL_FULLTEXT       CLOB类型 整个sql文本,不用借助于 V$SQL_TEXT视图来查看整个文本SQL_ID           //库缓存中的SQL父游标的标志SHARABLE_MEM           //子游标使用的共享内存的大小,bytesPERSISTENT_MEM           //子游标生存时间中使用的固定内存的总量,bytesRUNTIME_MEM           //在子游标执行过程中需要的固定内存大小,bytesSORTS           //子游标发生的排序数量LOADED_VERSIONS          // 显示上下文堆是否载入,1是,0否USERS_OPENING          // 执行这个sql的用户数FETCHES          // sql取数据的次数EXECUTIONS         //自从被载入共享池后,sql执行的次数 FIRST_LOAD_TIME          // 父游标产生的时间戳PARSE_CALLS           //解析调用的次数 DISK_CALLS             //读磁盘的次数DIRECT_WRITES           //直接写的次数`BUFFER_GETS           //直接从buffer中得到数据的次数`APPLICATION_WAIT_TIME          // 应用等待时间,毫秒CONCURRENCY_WAIT_TIME          //并发等待时间,毫秒USER_IO_WAIT_TIME           //用户IO等待时间ROWS_PROCESSED SQL           //解析sql返回的总行数OPTIMIZER_MODE           //优化器模式OPTIMIZER_COST           //优化器对于sql给出的成本PARSING_USER_ID           //第一个创建这个子游标的用户idHASH_VALUES           //解析产生的哈希值CHILD_NUMBER           //该子游标的数量SERVICE           //服务名CPU_TIME           //该子游标解析,执行和获取数据使用的CPU时间ELAPSED_TIME           //sql的执行时间,毫秒INVALIDATIONS           //该子游标的无效次数MODULE       //第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的模块名ACTION      //第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的动作名 IS_OBSOLETE          //标记该子游标过期与否,当子游标过大时会发生这种情况is_bind_sensitive           //不仅指出是否使用绑定变量窥测来生成执行计划,而且指出这个执行计划是否依赖于窥测到的值。如果是,这个字段会被设置为Y,否则会被设置为N。is_bind_aware          //表明游标是否使用了扩展的游标共享。如果是,这个字段会被设置为Y,如果不是,这个字段会被设置为N。如果是设置为N,这个游标将被废弃,不再可用。is_shareable           //表明游标能否被共享。如果可以,这个字段会被设置为Y,否则,会被设置为N。如果被设置为N,这个游标将被废弃,不再可用。

v$sqlarea

vsqlarea的字段定义和vsqlarea的字段定义和vsqlarea的字段定义和vsql基本一致,不同的是VSQLAREA是在父游标级别上统计的sql信息,vSQLAREA是在父游标级别上统计的sql信息,vSQLAREA是在父游标级别上统计的sql信息,vsql的汇总表,进行了group by hash_value,sql_id的汇总。

v$sqltext

本视图包括Shared pool中SQL语句的完整文本,一条SQL语句可能分成多个块被保存于多个记录内。

注:VSQLAREA和vSQLAREA和vSQLAREA和vsql中的SQL_TEXT字段只包括头1000个字符, SQL_FULLTEXT以CLOB方式包含了所有的字符

V$SQLTEXT列说明

HASH_VALUE           SQL语句的Hash值ADDRESS           sql语句在SGA中的地址SQL_TEXT           SQL文本。PIECE           SQL语句块的序号SQL_ID           SQL idCOMMAND_TYPE             命令类型,如select、insert等。

,博主的微信公众号
程序员小圈圈’开始持续更新了哟~~
识别二维码或者直接搜索名字 ‘程序员小圈圈’ 即可关注本公众号哟~~
不只是有技术哟~~
还有很多的学习娱乐资源免费下载哦~~
还可以学下教育知识以及消遣娱乐哟~~
求关注哟~~

Oracle数据误删恢复相关推荐

  1. Linux文件系统恢复(数据误删恢复)

    Linux文件系统恢复(数据误删恢复) 文章目录 Linux文件系统恢复(数据误删恢复) inode与block 用户通过文件名打开文件时,系统内部的过程 查看文件对应的inode号码有两种方式 用s ...

  2. oracle数据误删怎么恢复,Oracle数据误删了怎么恢复

    1.最好一定要执行删除之前先备份数据,这是最安全的办法. 2.如果真的不小心误删了数据,还有最后一个办法,不过不一定能成功,下面是从网上找的方法,我是执行delete误删的,发现可以,其他方式没试过, ...

  3. Oracle 数据误删的恢复措施

    Oracle中,常见的数据删除操作就三种,truncate,drop,delete,下面分类说一下如何恢复 Truncate: 该操作执行后,保留表结构,清空表数据,不记录日志,虽然常规手段无法恢复, ...

  4. oracle恢复删除数据1440,Oracle数据误删了怎么恢复

    1.最好一定要执行删除之前先备份数据,这是最安全的办法. 2.如果真的不小心误删了数据,还有最后一个办法,不过不一定能成功,下面是从网上找的方法,我是执行delete误删的,发现可以,其他方式没试过, ...

  5. oracle emp数据库或数据误删恢复

    在E:\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN目录中找到scott.sql 现将原代码粘贴如下: DROP TABLE EMP; CREATE TABLE ...

  6. oracle表数据误删恢复

    select * from tmmsm01 as of  timestamp sysdate-20/1440 在以上的操作中,我们delete一个表,然后truncate一个表,下面,我们将来看看fl ...

  7. SQL SERVER 数据库delete 未加where 条件数据误删恢复办法

    步骤: 1.下载ApexSQLLog.链接: https://pan.baidu.com/s/1lXW7TILAc7MHcCskhXvgeg 提取码: 7tix 复制这段内容后打开百度网盘手机App, ...

  8. oracle数据备份 恢复,Oracle数据备份和恢复

    Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法. 本文涉及的备份与恢复的其它概念都是狭义的 ...

  9. oracle 数据不可恢复,Oracle数据恢复:错误叠加导致灾难不可恢复解决办法

    文章详细记录了自己在给一个客户做数据恢复的过程了,原因是错误叠加导致灾难不可恢复算是高难度的了. 文章详细记录了自己在给一个客户做数据恢复的过程了,原因是错误叠加导致灾难不可恢复算是高难度的了. 客户 ...

最新文章

  1. 056_Avatar头像
  2. 求解一个数的所有约数之积
  3. [TCP/IP] ping traceroute和TTL
  4. java mp3数组_Java基础之数组(一)
  5. C语言CV10版怎么生成结果,CV学习笔记(十九):文本数据集生成(text_renderer)
  6. python大写字母怎么读_python中字母大小写的转换,和一些字典的常规操作
  7. webrtc nack实现原理
  8. 怎样看股市K线图指标之市场盈亏指标CYS
  9. CentOS 8 Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
  10. Task05|joyfulpandas|变形
  11. Codeforces 1132F
  12. 基于MATLAB的数字图像处理系统设计
  13. 阿里云盘视频m3u8播放-python+vue3实现
  14. 【opencv】viz 3D虚拟空间模块编译及使用
  15. ESP8266开发之旅 应用篇④ WiFi广告机
  16. 3年收10亿,普陀山悄悄改名重启IPO
  17. HTTP缓存机制和原理
  18. 中信涂猪android抓包,玩卡计划 篇二:中信《鼠来宝》规则攻略,珠光宝气之后的活动!还记得去年的涂猪吗?...
  19. 常用Java注释标签(Java comment tags)
  20. Java SE 8: 从入门到上瘾

热门文章

  1. 概率论与数理统计学习笔记——学科核心思想
  2. PCB设计基础知识与基本概念
  3. 高德地图实时公交体验:省时准点绿色出行
  4. 基于微信小程序的二手车交易管理系统设计与实现
  5. 班级纪念册php源码,班级毕业纪念册创意设计-班级纪念册内容设计
  6. 网络营销之百度问答平台
  7. 技术专栏|剖析-单目相机在旋翼机上的速度测量原理
  8. 铁路通信线路、传输及接入网设计规范_史上最强通信线路施工维护秘籍,全剧情动画视频...
  9. 西点军校二十二条军规
  10. 智能电销机器人将是你的好帮手《各版本机器人部署》