linux 误删除Oracle数据文件恢复

本文偶得,权当记录查询,原文转至现某炬Oracle lunar 女神
[oracle@lunar ~]$ sqlplus /  as  sysdba
 
SQL*Plus: Release 11.2.0.3.0 Production  on  Fri Mar 15 23:46:35 2013
 
Copyright (c) 1982, 2011, Oracle.   All  rights reserved.
 
 
Connected  to :
Oracle  Database  11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With  the Partitioning, OLAP, Data Mining  and  Real  Application Testing options
 
SQL>  select  tablespace_name  from  dba_tablespaces;
 
TABLESPACE_NAME
------------------------------------------------------------
SYSTEM
SYSAUX
UNDOTBS1                   
TEMP
USERS
EZIO
 
rows  selected.


创建测试表空间

SQL>  create  tablespace lunar_test datafile  '/test/lunar_test01.dbf'  size  10M;
 
Tablespace created.
 
SQL>  alter  user  lunar  default  tablespace lunar_test;
 
User  altered.


创建表插入数据

SQL> conn lunar/lunar
Connected.
SQL>  create  table  test_table ( name  varchar2(300)) tablespace lunar_test;
 
Table  created.
 
SQL>  insert  into  test_table  values  ( 'Love you forever, my baby, Happy Childrens Day!' );
 
1 row created.
 
SQL>  commit ;
 
Commit  complete.
 
SQL>
SQL>  select  from  test_table;
 
NAME
--------------------------------------------------------------------------------
Love you forever, my baby, Happy Childrens  Day !


删除datafile

SQL> !rm -rf /test/lunar_test01.dbf
 
SQL> !ls -lrt /test/lunar_test01.dbf
ls: /test/lunar_test01.dbf:  No  such file  or  directory
 
SQL>


数据还在,因为从buffer cache中读到的

SQL> conn lunar/lunar
Connected.
SQL>  select  from  test_table;
 
NAME
--------------------------------------------------------------------------------
Love you forever, my baby, Happy Childrens  Day !


执行flush buffer cache

SQL> conn /  as  sysdba
Connected.
SQL>  alter  system flush buffer_cache;
 
System altered.


可以看见,再次查询,报错文件状态不对了(找不到了)

SQL> conn lunar/lunar
Connected.
SQL>  select  from  test_table;
select  from  test_table
*
ERROR  at  line 1:
ORA-01116: error  in  opening  database  file 6
ORA-01110: data file 6:  '/test/lunar_test01.dbf'
ORA-27041: unable  to  open  file
Linux-x86_64 Error: 2:  No  such file  or  directory
Additional information: 3


检查dbwr进程的spid

SQL> !ps -ef|grep dbw
oracle    2757     1  0 12:29 ?        00:00:14 ora_dbw0_bb
oracle    8912  8872  0 23:50 pts/3    00:00:00 /bin/bash -c ps -ef|grep dbw
oracle    8914  8912  0 23:50 pts/3    00:00:00 grep dbw


找到dbwr的句柄

SQL> !/usr/sbin/lsof -p 2757
COMMAND  PID    USER    FD   TYPE DEVICE    SIZE / OFF     NODE  NAME
oracle  2757 oracle  cwd    DIR  253,0       4096 6947181 /u01/app/oracle/product/11.2.0.3/dbhome_1/dbs
oracle  2757 oracle  rtd    DIR  253,0       4096       2 /
oracle  2757 oracle  txt    REG  253,0  232399473 1179781 /u01/app/oracle/product/11.2.0.3/dbhome_1/bin/oracle
oracle  2757 oracle  DEL    REG    0,4            1933317 /SYSV00000000
oracle  2757 oracle  DEL    REG    0,4            1966086 /SYSV00000000
oracle  2757 oracle  DEL    REG    0,4            1998855 /SYSV2b7268c4
oracle  2757 oracle  mem    REG  253,0     144776 2293762 /lib64/ld-2.5.so
oracle  2757 oracle  mem    REG  253,0       5328 4822547 /usr/lib64/libaio.so.1.0.1
oracle  2757 oracle  mem    REG  253,0    1722328 2293764 /lib64/libc-2.5.so
oracle  2757 oracle  mem    REG  253,0      23360 2293771 /lib64/libdl-2.5.so
oracle  2757 oracle  mem    REG  253,0     615136 2293809 /lib64/libm-2.5.so
oracle  2757 oracle  mem    REG  253,0     145872 2293775 /lib64/libpthread-2.5.so
oracle  2757 oracle  mem    REG  253,0      53448 2293781 /lib64/librt-2.5.so
oracle  2757 oracle  mem    REG  253,0     114352 2293986 /lib64/libnsl-2.5.so
oracle  2757 oracle  mem    REG  253,0      58949 6955646 /u01/app/oracle/product/11.2.0.3/dbhome_1/lib/libnque11.so
oracle  2757 oracle  262uW  REG  253,0   87040000 4784725 /u01/app/oracle/oradata/bb/temp01.dbf
oracle  2757 oracle  263uW  REG  253,0   10493952 1639050 /test/lunar_test01.dbf (deleted)   可以看见文件被标识为 delete


进入dbwr进程的File Descriptor number目录中

SQL> !ls -ltar /proc/2757/fd/
total 0
dr-xr-xr-x 7 oracle oinstall  0 Mar 15 12:29 ..
dr-x ------ 2 oracle oinstall  0 Mar 15 12:29 .
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 9 -> /dev/null
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 8 -> /dev/null
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 7 -> /u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/hc_bb.dat
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 6 -> /dev/null
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 5 -> /dev/null
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 4 -> /dev/null
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 3 -> /dev/null
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 263 -> /test/lunar_test01.dbf (deleted)   可以看见dbwr的进程的FD号
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 262 -> /u01/app/oracle/oradata/bb/temp01.dbf
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 261 -> /u01/app/oracle/oradata/bb/ezio01.dbf
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 260 -> /u01/app/oracle/oradata/bb/users01.dbf
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 259 -> /u01/app/oracle/oradata/bb/undotbs01.dbf
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 258 -> /u01/app/oracle/oradata/bb/sysaux01.dbf
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 257 -> /u01/app/oracle/oradata/bb/system01.dbf
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 256 -> /u01/app/oracle/oradata/bb/control01.ctl
l-wx ------ 1 oracle oinstall 64 Mar 15 23:30 2 -> /dev/null
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 18 -> /u01/app/oracle/product/11.2.0.3/dbhome_1/rdbms/mesg/oraus.msb
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 17 -> /u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/lkBB
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 16 -> /u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/hc_bb.dat
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 15 -> /dev/zero
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 14 -> /proc/2757/fd
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 13 -> /u01/app/oracle/product/11.2.0.3/dbhome_1/rdbms/mesg/oraus.msb
lrwx ------ 1 oracle oinstall 64 Mar 15 23:30 12 -> /u01/app/oracle/product/11.2.0.3/dbhome_1/dbs/hc_bb.dat
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 11 -> /dev/zero
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 10 -> /dev/zero
l-wx ------ 1 oracle oinstall 64 Mar 15 23:30 1 -> /dev/null
lr-x ------ 1 oracle oinstall 64 Mar 15 23:30 0 -> /dev/null
lrwx ------ 1 oracle oinstall 64 Mar 15 23:37 19 -> socket:[42951]


恢复过程

[oracle@lunar ~]$  cd  /proc/2757/fd/
--根据File Descriptor number重建数据文件:
[oracle@lunar fd]$  cat  263 >  /test/lunar01 .dbf


检查下,文件已经恢复完成,大小为10m

[oracle@lunar fd]$  ls  -lrt  /test/lunar01 .dbf
-rw-r--r-- 1 oracle oinstall 10493952 Mar 15 23:50  /test/lunar01 .dbf


将数据文件offline

SQL>  alter  database  datafile  '/test/lunar_test01.dbf'  offline;
 
Database  altered.
[/sql
修改控制文件的文件信息,因为已经将rm的/test/lunar_test01.dbf,创建到/test/lunar01.dbf,因此要同步控制文件中的信息
1
SQL>  alter  database  rename file  '/test/lunar_test01.dbf'  to  '/test/lunar01.dbf' ;
 
Database  altered.


恢复datafile

SQL> recover datafile  '/test/lunar01.dbf' ;
Media recovery complete.


将数据文件online

SQL>  alter  database  datafile  '/test/lunar01.dbf'  online;
 
Database  altered.


完成恢复

SQL> conn lunar/lunar
Connected.
SQL>  select  from  test_table;
 
NAME
--------------------------------------------------------------------------------
Love you forever, my baby, Happy Childrens  Day !
 
SQL>
SQL>  select  tablespace_name  from  dba_tablespaces;
 
TABLESPACE_NAME
------------------------------------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EZIO
LUNAR_TEST
 
rows  selected.
 
SQL>  select  name  from  v$datafile;
 
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/bb/system01.dbf
/u01/app/oracle/oradata/bb/sysaux01.dbf
/u01/app/oracle/oradata/bb/undotbs01.dbf
/u01/app/oracle/oradata/bb/users01.dbf
/u01/app/oracle/oradata/bb/ezio01.dbf
/test/lunar01.dbf
 
rows  selected


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
### 回答1: 对于误删除文件的恢复,可以使用一些工具来进行恢复,比如说TestDisk、PhotoRec等等。这些工具可以扫描硬盘并找回被删除的文件,但是需要注意的是,如果文件被覆盖或者硬盘已经受损,那么恢复的成功率会降低。 ### 回答2: 在Linux系统中,当文件被误删除时,我们有几种方法可以尝试恢复文件。 首先,我们可以使用一些命令行工具来恢复误删除的文件。比如使用“find”命令可以搜索整个文件系统,找到被删除文件的副本。命令如下: ``` $ find / -name "filename" ``` 这将在整个文件系统中搜索名为“filename”的文件,并显示它们的位置。然后可以将文件移动回原来的位置。 第二种方法是使用“grep”命令。它可以在磁盘上搜索二进制数据,找到被删除文件的内容并使用其内容重建文件。命令如下: ``` $ grep -a -B100 -A100 'text in the file' /dev/sda1 > recovered_file ``` 这个命令将在磁盘设备/sda1上搜索包含“file”中内容的二进制数据,并将结果保存到一个名为“recovered_file”的文件中。 第三种方法是使用专业的数据恢复工具。有许多第三方软件可以帮助我们恢复误删除的文件,例如TestDisk、PhotoRec等。这些工具通常具有更复杂的功能,可以深入扫描磁盘,寻找被删除文件的各个部分,并尝试将它们重新组装起来。 尽管使用这些方法可以恢复误删除的文件,但是成功率并不是百分之百,因为文件删除后,其数据可能已经被覆盖或者损坏。因此,在误删除文件后,应尽快采取措施来尝试恢复文件,以提高成功的机会。此外,为了避免类似问题的发生,我们应该定期备份重要文件,并小心操作。 ### 回答3: 在Linux系统中,当我们误删除文件时,通常可以采取以下方法进行恢复: 1. 使用回收站:某些文件管理器在删除文件时会将其移动到回收站而不是直接永久删除。可以尝试在文件管理器的回收站或垃圾桶中查找并恢复误删除的文件。 2. 使用undelete命令:在终端中,可以尝试使用undelete命令来恢复误删除的文件。通过在终端输入该命令并指定所需恢复的文件路径,系统将尝试从硬盘上恢复删除的文件。 3. 使用恢复工具:还可以使用一些专门的恢复工具来恢复误删除的文件。例如,extundelete和testdisk是两个常用的Linux文件恢复工具。这些工具可以扫描硬盘并尝试恢复已删除的文件。 需要注意的是,无论使用哪种方法,都应尽可能在误删除后尽早采取恢复措施。一旦新的文件被写入硬盘上原文件所在的空间,恢复工作就会变得更加困难或者不可能。因此,当发现误删除文件后,尽量避免继续使用该硬盘,以最大限度地提高文件的恢复成功率。 此外,为了避免误删除文件,建议定期备份重要的文件。备份可以帮助我们恢复文件,即使出现误操作或其他问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值