首页 > 数据库 >rm -rf误删Oracle数据库恢复---惜分飞

rm -rf误删Oracle数据库恢复---惜分飞

时间:2024-05-16 20:30:03浏览次数:25  
标签:分飞 误删 --- Oracle Processed 坏块 Total Pages ORA

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:rm -rf误删Oracle数据库恢复

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

有客户把虚拟化环境中装有oracle数据库的linux操作系统,由于操作失误在/下面执行了rm -rf *,导致所有文件被删除,系统无法启动.客户希望要求恢复出其中的Oracle数据库.由于是虚拟化环境,然后客户直接从虚拟化平台下载下来磁盘文件,通过工具加载和分析确认是一个xfs的文件系统
20240516190746


使用工具进一步扫描分析,找到部分数据文件
20240516190505

这里可以获取到两个信息:
1. 尝试恢复oracle的control01.ctl文件,然后通过该文件尝试分析其他数据文件位置,运气不错该文件恢复出来是好的,直接加载到新库查询v$datafile,分析出来所有数据文件信息
2. 这里有一个非常不幸的信息,oracle最核心的system01.dbf文件大小明显异常,进一步分析该文件信息,结论是该文件无法通过反删除方式进行恢复
20240515223607

先把可以os层面可以恢复的数据恢复出来,并且检查坏块情况
20240516191836

对于异常的system文件,有两个处理方法:
1. 通过阅览被删除的文件,发现客户有5月14日1点左右的rman备份,通过恢复软件中完整度提示,大概率应该没有什么问题,但是分析发现部分归档日志损坏无法完整恢复
2. 通过对磁盘做碎片,恢复出来该数据文件,参考以往文章:
dbca删除库和rm删库恢复
Oracle 数据文件大小为0kb或者文件丢失恢复
通过这个方法运气不错,恢复出来该库的system01.dbf文件非常完整0丢失

 

[oracle@localhost oradata]$ dbv file=system01.dbf   DBVERIFY: Release 19.0.0.0.0 - Production on Thu May 15 23:26:57 2024   Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.   DBVERIFY - Verification starting : FILE = /u01/oradata/system01.dbf     DBVERIFY - Verification complete   Total Pages Examined         : 199680 Total Pages Processed (Data) : 113988 Total Pages Failing   (Data) : 0 Total Pages Processed (Index): 26869 Total Pages Failing   (Index): 0 Total Pages Processed (Other): 40253 Total Pages Processed (Seg)  : 1 Total Pages Failing   (Seg)  : 0 Total Pages Empty            : 18570 Total Pages Marked Corrupt   : 0 Total Pages Influx           : 0 Total Pages Encrypted        : 0 Highest block SCN            : 658228557 (0.658228557)

完成上述恢复工作之后,目前确认只有sysaux01.dbf有8026个block损坏,但是该表空间不涉及业务数据,尝试在新的系统中直接修改路径并open库

SQL> recover database; ORA-00283: recovery session canceled due to errors ORA-38760: This database instance failed to turn on flashback database     SQL> alter database flashback off;   Database altered.   SQL> recover database; Media recovery complete. SQL> alter database open;   Database altered.

运气不错,数据库直接open成功,现在处理sysaux01.dbf中的损坏文件:
1. 确认该文件具体坏块开始位置:
20240516193650


2. 由于坏块在文件中比较靠后,分析实际存储数据最后的位置

 

SQL> select max(block_id+blocks) from dba_extents where file_id=3;   MAX(BLOCK_ID+BLOCKS) --------------------              3493120

最后存储数据的位置小于坏块的位置,证明坏块部分是没有存储数据的,直接resize掉坏块部分

SQL> alter database datafile '/u01/oradata/sysaux01.dbf' resize 27290m;   Database altered.

然后dbv该数据文件,确认没有任何问题

[oracle@localhost trace]$ dbv file=/u01/oradata/sysaux01.dbf   DBVERIFY: Release 19.0.0.0.0 - Production on Wed May 15 22:43:00 2024   Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.   DBVERIFY - Verification starting : FILE = /u01/oradata/sysaux01.dbf     DBVERIFY - Verification complete   Total Pages Examined         : 3493120 Total Pages Processed (Data) : 1516833 Total Pages Failing   (Data) : 0 Total Pages Processed (Index): 1868832 Total Pages Failing   (Index): 0 Total Pages Processed (Lob)  : 56577 Total Pages Failing   (Lob)  : 0 Total Pages Processed (Other): 32107 Total Pages Processed (Seg)  : 0 Total Pages Failing   (Seg)  : 0 Total Pages Empty            : 18771 Total Pages Marked Corrupt   : 0 Total Pages Influx           : 0 Total Pages Encrypted        : 0 Highest block SCN            : 658223915 (0.658223915)

使用rman检测全库,也确定没有任何问题

[oracle@localhost trace]$ rman target /   Recovery Manager: Release 19.0.0.0.0 - Production on Wed May 15 22:43:58 2024 Version 19.15.0.0.0   Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.   connected to target database: XIFENFEI (DBID=2912535091)   RMAN>   RMAN>   RMAN> backup validate check logical database skip inaccessible;   Starting backup at 15-MAY-24 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=43 device type=DISK allocated channel: ORA_DISK_2 channel ORA_DISK_2: SID=278 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set ……………… File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 32   OK     0              6273         6400            370625094   File Name: /u01/oradata/xff_com.dbf   Block Type Blocks Failing Blocks Processed   ---------- -------------- ----------------   Data       0              0                 Index      0              0                 Other      0              127               File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 33   OK     0              163752       832000          627920639   File Name: /u01/oradata/XFF_DATA_202312231.dbf   Block Type Blocks Failing Blocks Processed   ---------- -------------- ----------------   Data       0              374296            Index      0              285002            Other      0              8950              Finished backup at 15-MAY-24   [oracle@localhost trace]$ sqlplus / as sysdba   SQL*Plus: Release 19.0.0.0.0 - Production on Wed May 15 22:47:44 2024 Version 19.15.0.0.0   Copyright (c) 1982, 2022, Oracle.  All rights reserved.     Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.15.0.0.0   SQL> select * from v$database_block_corruption ;   no rows selected   SQL>

至此对于这次rm -rf /*的故障实现了Oracle数据库完美恢复,数据0丢失.

标签:分飞,误删,---,Oracle,Processed,坏块,Total,Pages,ORA
From: https://www.cnblogs.com/xifenfei/p/18196691

相关文章

  • Linux-Mint-系统管理-全-
    LinuxMint系统管理(全)原文:zh.annas-archive.org/md5/bc35a5141fec44b55af1b6bad7139bc5译者:飞龙协议:CCBY-NC-SA4.0前言在过去的5年中,基于Linux的操作系统的用户数量显著增加。许多计算机用户希望了解更多关于Linux的信息,并且许多人正在从Windows和MacOSX等......
  • Linux-安全实战秘籍-全-
    Linux安全实战秘籍(全)原文:zh.annas-archive.org/md5/9B7E99EE96EAD6CC77971D4699E9954A译者:飞龙协议:CCBY-NC-SA4.0前言在设置Linux系统时,安全性应该是所有阶段的重要组成部分。对Linux基础知识的良好了解对于在机器上实施良好的安全策略至关重要。Linux作为发行的......
  • vue-cli项目处理vant自适应问题
    原因vant自带的样式,用的单位是px,无法自适应。一般有两种处理思路。一、写媒体查询安装插件postcss-pxtorem:用于将单位px转化为rem//安装命令npmi-Dpostcss-pxtoremlib-flexible:给html标签设置font-size,作为rem基准值(因为我的项目已经脚本处理了,所以我是没有......
  • m基于Q-Learning强化学习的路线规划和避障策略matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:      2.算法涉及理论知识概要      Q-Learning是强化学习中的一种重要算法,它属于无模型(model-free)学习方法,能够使智能体在未知环境中学习最优策略,无需环境的具体模型。将Q-Learning应用于路线规划和避障策略中,智能......
  • Linux-Shell-编程训练营-全-
    LinuxShell编程训练营(全)原文:zh.annas-archive.org/md5/65C572CE82539328A9B0D1458096FD51译者:飞龙协议:CCBY-NC-SA4.0前言在LinuxShellScriptingBootcamp中,您将首先学习脚本创建的基础知识。您将学习如何验证参数,以及如何检查文件的存在。接着,您将熟悉Linux系统......
  • Linux-基础知识-全-
    Linux基础知识(全)原文:zh.annas-archive.org/md5/29980B7659BC4BE41209BC2F2B7B6D02译者:飞龙协议:CCBY-NC-SA4.0前言在这本书中,目标是建立一个扎实的基础,学习Linux命令行的所有基本要素,让你入门。它的设计强调只学习实际的核心技能和基本的Linux知识,这在开始学习这个美......
  • Linux-系统编程实用手册-二-
    Linux系统编程实用手册(二)原文:zh.annas-archive.org/md5/9713B9F84CB12A4F8624F3E68B0D4320译者:飞龙协议:CCBY-NC-SA4.0第十八章:高级文件I/O在附录A,文件I/O基础中,我们介绍了应用程序开发人员如何利用可用的glibc库API以及执行文件I/O(打开、读取、写入和关闭)的典......
  • openGauss JDBC包-驱动类和环境类
    JDBC包、驱动类和环境类JDBC包openGauss提供两种JDBCjar包:postgresql.jar和openGauss-jdbc-x.x.x.jar,两种jar包功能一致,仅仅是为了解决和PostgreSQL之间的JDBC驱动包名冲突。在Linux服务器端源代码目录下执行build.sh,获得驱动jar包postgresql.jar和opengauss-jdbc-x.x.x.jar,包......
  • hive写入star,csv格式的streamload-简单版
    hive写入star,csv格式的streamload注意字符串中的转移字符直接拼接\n而要显示\\是非转义字符publicclassGcyDataTrans{privatestaticStringSTARROCKS_HOST="IP";privatestaticStringSTARROCKS_HTTP_PORT="8030";privatestaticStringSTARROCKS_DB......
  • 《代码随想录》-3.长度最小的子数组
    题目:给定一个含有n个正整数的数组和一个正整数s,找出该数组中满足其和≥s的长度最小的连续子数组,并返回其长度。如果不存在符合条件的子数组,返回0。滑动窗口:只用一个for循环,其索引指向窗口终点位置窗口是满足其和>=s的最小长度的连续数组当窗口大于等于s,起始位置就要......