oracle数据文件恢复 步骤_oracle数据库文件扩展名

oracle数据文件恢复 步骤_oracle数据库文件扩展名1、基于linux操作系统文件恢复条件:1、误强制删除linux下的数据文件(rm-rf)。2、未重启数据库或操作系统。3、数据库是归档模式恢复原理:句柄恢复文件–因为我们的操作系统是linux,当数据文件从操作系统级别被rm掉,但之前打开该文件的进程仍然持有相应的文件句柄,所以指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1、基于linux操作系统文件恢复

     条件:1、误强制删除linux下的数据文件(rm -rf)。2、未重启数据库或操作系统。3、数据库是归档模式

     恢复原理:句柄恢复文件–因为我们的操作系统是linux,当数据文件从操作系统级别被rm掉,但之前打开该文件的进程仍然持有相应的文件句柄,所以指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。

                       若重启了数据库或者操作系统,那么句柄就会消失,可以通过扫描磁盘进行文件恢复

     恢复步骤:

       1、检查dbwr的进程PID: [oracle@dg2 oracle]$ps -ef|grep dbw0|grep -v grep         —目录名是进程PID,fd表示文件描述符。         2、通过进程id9946找到对应的目录:[oracle@dg2 oracle]$cd /proc/9964/fd

       3、找到被删除的文件:[oracle@dg2 oracle]$ ls -l(会有一个delete的标志)

       4、直接cp 删除的句柄文件名回原位置:[oracle@dg2 oracle]$ cp  句柄文件名  /u01/app/oradata/dropdatafile.dbf

2、利用闪回,基于时间戳或者SCN恢复数据文件(drop 或者 delete

   条件:1、在删除数据后还没做大量的操作,数据没有被覆盖。2、9i之后的版本。3、不考虑全库备份和利用归档日志

              4、闪回已经打开:alter database flashback on

   恢复原理:利用闪回功能恢复数据

   恢复步骤:(时间戳

       1、确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)。 
       2、用语句找出删除的数据  (select * from 表名 as of timestamp sysdate-30/1440;  30分钟内的语句)。

select * from 表名 as of timestamp to_timestamp(‘2013-05-29 15:29:00′,’yyyy-mm-dd hh24:mi:ss’);  (如果不是,则继续缩小范围)
       3、把删除的数据重新插入原表。(insert into 表名 (select * from 表名 as of timestamp sysdate-30/1440 );)

       4、SQL>flashback database to timestamp to_timestamp(‘2007-2-12 12:00:00′,’yyyy-mm-dd hh24:mi:ss’);

   恢复步骤:(scn

       1、获得当前数据库的scn号,查询到的scn号:  (select current_scn from v$database;)

       2、查询当前scn号之前的scn: select * from 表名 as of scn 1499220;

       3、恢复删除且已提交的数据:flashback table 用户.表名 to scn 1499220;  (若是sys用户,表需带上用户名)

        如果flash出现错误。可以尝试执行 alter table 表名 enable row movement,使用后改成disable

       4、如果是表被drop掉:

              可以先查询删除数据:select * from recyclebin order by droptime desc

              直接闪回表:flashback table ‘需要恢复的表名’ to before drop

建议:建议使用AS OF SCN的方式执行Flashback Query。如需要对多个相互有主外键约束的表进行恢复时,如果使用AS OF TIMESTAMP的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过AS OF SCN方式则能够确保记录处理的时间点一致。

总结:
flash机制保证了数据安全操作,但同时会有另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:

  1、采用truncate方式进行截断。(但不能进行数据回恢复了)

  2、在drop时加上purge选项:drop table 表名 purge

  3、也可以通过删除recyclebin区域来永久性删除表 ,

  原始删除表:drop table emp cascade constraints   purge table emp;     

   删除当前用户的回收站:purge recyclebin;       删除全体用户在回收站的数据::purge dba_recyclebin

 

注:1、执行闪回时:报如下错误  ORA-00604: 递归 SQL 级别 1 出现错误 ORA-25153: 临时表空间为空  重建零时表空间即可(一般问题是没有临时表空间)   临时表空间的作用见:

alter tablespace temp add tempfile ‘D:\app\Administrator\oradata\WAREHOUSE\CONTROLFILE\temp01.dbf’ size 20M autoextend off;

   

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190381.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • smalldatetime mysql_SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005-6-…

    smalldatetime mysql_SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005-6-…SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-812:12:00和2005-6-614:02:02我用下面语句什么也搜不出来select*fromsoftwheresoft.savetimelike’%2005-3-8%’SQL帮助中说:”当搜索datetime值时,推荐使用LIKE,因为date…

    2022年5月12日
    34
  • 2022年 2月19运维面试题

    2022年 2月19运维面试题 

    2022年5月30日
    27
  • 调整数据库表结构,搞定 WordPress 数据库查询缓慢问题

    调整数据库表结构,搞定 WordPress 数据库查询缓慢问题

    2021年11月24日
    40
  • SpringBoot跨域设置(CORS)「建议收藏」

    SpringBoot跨域设置(CORS)「建议收藏」目录什么是跨域跨域资源共享(CORS)1.简单请求2.非简单请求SpringBoot设置CORS1.配置过滤器CorsFilter2.实现接口WebMvcConfigurer3.使用注解@CrossOrigin什么是跨域请求url的协议、域名、端口三者有任意一个不同即为跨域。跨域问题是因为浏览器的同源策略的限制而产生的。同源:请求url的协议、域名、端口三者都相同即为同源(同一个域)。同源策略:同源策略(Sameoriginpolicy)是一种约定,他是浏览器最核心也最基本的安全

    2022年6月18日
    23
  • 秋招手撕代码:用移位寄存器实现的序列检测器(verilog)「建议收藏」

    秋招手撕代码:用移位寄存器实现的序列检测器(verilog)「建议收藏」之前一直想当然的认为序列检测器就应该用状态机来实现,后面在qq群里看到有人面试的时候被问,除了用状态机实现序列检测外,还能使用什么方法实现序列检测?后面查找了资料,发现可以使用序列检测器,自己就动手写了一个。1、代码思路:将输入的数据存储在移位寄存器中,如果寄存器中的序列是我们要检测的序列就输出1.2、代码`timescale1ns/1ps/////////////////////////////////////////////////////////////////////////////

    2022年7月16日
    10
  • 学习方法——哈佛大学幸福课(积极心理学)学习笔记(下)[通俗易懂]

    学习方法——哈佛大学幸福课(积极心理学)学习笔记(下)[通俗易懂]最近刚看完哈佛大学的幸福课(又名积极心理学),真的是受益匪浅,通常心理学只研究如何消除抑郁、自卑等消极心理,但是消除了消极心理并不代表就会变得幸福,就像摆脱了痛苦并不代表获得了快乐。积极心理学的核心内容就是去分析积极心理的特点、研究如何培养他们。下面目录中加粗的章节是我认为的讲的最好的章节,从根源去分析悲观、焦虑以及完美主义等是如何产生的,然后分析它们与积极品性的关系,最后告诉我们培养积极品性…

    2022年7月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号