Linux 平台下 误删 oracle 数据文件的恢复方法
1 问题描述
之前写过一篇删除oracle home目录的blog,参考:
Linux 平台误删 home oracle 根目录的解决方法
http://www.cndba.cn/Dave/article/423
本篇是这边的引深,本来应该是年前整理的,拖到年后了。
模拟现状:
数据库在正常运行,误操作,直接rm 掉了数据文件。
测试环境:
[oracle@dg1 trace]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.1(Santiago)
Oracle 11.2.0.3 单实例。
[oracle@dg1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production onWed Aug 27 18:36:32 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise EditionRelease 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Miningand Real Application Testing options
SQL>
这个问题也要分2种情况,一种是归档模式,一种是非归档模式,归档模式处理就容易很多了。但现在很多由开发人员管理的库是非归档,并且也缺乏专业的运维技能,误操作的概率也会增加很多。
2 创建测试数据
SQL> create tablespace dropspacedatafile '/u01/dropspace01.dbf' size 100m;
SQL> create user ahzhixinidentified by ahzhixin default tablespace dropspace;
SQL> grantconnect,resource,dba to ahzhixin;
SQL> create table test1 as select * fromall_users;
SQL> create table test2 as select * fromall_users;
SQL> create table test3 as select * fromall_users;
3 归档模式处理
3.1 模拟故障
Database log mode Archive Mode
Archive destination /u01/archivelog
Next log sequence to archive 85
[oracle@dg1 u01]$ rm-rf /u01/dropspace01.dbf
SQL> select count(1) from test1;
SQL> select count(1) from test2;
SQL> select count(1) from test3;
SQL> insert into test1 select * fromall_users;
SQL> select count(1) from test1;
如果在这个时候,重启了数据库或者操作系统,那么句柄就会消失,也就只能通过扫描磁盘进行文件恢复。
3.2 恢复
dbwr进程会打开所有数据文件的句柄,在proc目录中可以查到这些数据文件的信息,目录名是进程PID,fd表示文件描述符。
[oracle@dg1 trace]$ ps -ef|grep dbw0|grep-v grep
oracle 9964 1 0 00:49 ? 00:00:03 ora_dbw0_dave
[oracle@dg1 trace]$ cd /proc/9964/fd
[oracle@dg1 fd]$ cp 259/u01/dropspace01.dbf
因为数据库一直是open的,那么SCN也会不断的变化,我们cp出来的数据文件和数据库当前的信息不一致,所以我们需要进行recover:
SQL> alter database datafile'/u01/dropspace01.dbf' offline;
SQL> recover datafile'/u01/dropspace01.dbf';
SQL> alter database datafile'/u01/dropspace01.dbf' online;
[oracle@dg1 u01]$ ls -la/u01/dropspace01.dbf
-rw-r----- 1 oracle oinstall 104865792 Aug27 21:41 /u01/dropspace01.dbf
Total System Global Area 814227456 bytes
Database Buffers 318767104 bytes
也正常。 这里有2个注意的问题:数据库是归档模式,数据库或者操作系统没有重启。这2点非常关键。 也正式如此,才让操作比较简单。
当然也有另一种可能性,就是删除数据文件之后,可以先通过句柄恢复,然后用expdp导出数据,尽可能的挽救部分数据。 这个动作就是与时间赛跑的过程了。
总之生产环境,操作一定要小心,还有要开归档,除非数据允许丢失。
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
Blog: http://www.cndba.cn/dave
Weibo: http://weibo.com/tianlesoftware
Twitter: http://twitter.com/tianlesoftware
Facebook: http://www.facebook.com/tianlesoftware
Linkedin: http://cn.linkedin.com/in/tianlesoftware
--------------------------------------------------------------------------------------------
CNDBA_1: 62697850 (空) CNDBA_2: 62697716 (满) CNDBA_3: 283816689
CNDBA_4: 391125754 CNDBA_5:104207940 CNDBA_6: 62697977 CNDBA_7: 142216823(满)
Linux 平台下 误删 oracle 数据文件的恢复方法相关推荐
- 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法
linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...
- linux查看地址和,UNIX/LINUX平台下查看MAC和WWN地址的方法
归纳了一下,在UNIX/LINUX平台下查看MAC和WWN地址的方法 查看MAC地址 hp-ux #lanscan tru64 unix #netstat -ia aix #lsdev -Cc if ...
- Linux平台下卸载ORACLE
实验环境:操作系统版本:Red Hat Enterprise Linux Server release 5.5 (Tikanga), 数据库版本 :Oracle Database 10g Enterp ...
- 误删oracle数据库文件,误删Oracle数据文件导致数据库无法打开
笔者最近接到同事求助,哥们在数据库关闭的情况下删除了部分数据文件导致数据库无法打开. 下面是总结一下此类问题的解决方式: --------------------------------------- ...
- 【转载】linux中误删除oracle数据文件的恢复操作
转自:http://space.itpub.net/?uid-26015009-action-viewspace-itemid-763506 下面来模拟误删除users表空中的数据文件users01. ...
- linux图片什么格式文件怎么打开,解决Linux平台下无法打开jpg文件(提示: “Not a JPEG file: starts with 0x89 0x50”)的方法...
1.我们经常从网上下载各种jpg图片,有时候某些jpg图片在ubuntu14.04平台下无法显示缩略图,如下图中的vim_logo.jpg. 某些jpg图片在ubuntu14.04平台下无法显示缩略图 ...
- oracle重建实例_记一次误删Oracle控制文件并恢复过程
概述 当你在数据库运行时误删除了控制文件怎么办?很不幸有一次我就有这个情况,虽然是测试环境,这里因为我有事先把控制文件分别备份,所以恢复还是比较简单的.下面简单记录下怎么恢复. 问题 控制文件版本不一 ...
- RAC环境下创建本地数据文件的解决方法
引用收藏:http://blog.itpub.net/501889/viewspace-1083311/ 同事不小心,在RAC环境下创建了本地数据文件,这个肯定会出问题的,节点2不能访问此数据文件.其 ...
- linux oracle em使用,Linux平台下启动oracle 11g EM控制台
http://blog.csdn.net/webajax/article/details/6702233 配置EM具体步骤 一.配置EM dbconsole的步骤信息 emca -config dbc ...
最新文章
- SciHub下载量成论文影响力预测指标:能被下载的论文被引次数高出72%
- 第11课:优化神经网络——梯度优化
- 机器学习——常用核函数
- Azure SQL的DTU和eDTU到底是个什么鬼
- PyTorch框架学习一——PyTorch的安装(CPU版本)
- Python爬虫四(正则表达式)
- python django异步访问_初试Ajax异步请求(基于Django框架)
- armbian搭建php环境,N1刷armbian后搭建lamp环境+可道云管理
- js正则验证输入表情
- Spring Cloud实战(六)-Spring Cloud Netflix Bus
- 我关于读书的一点小体会
- JDBC06 其他操作及批处理Batch
- 通过简单案例,理解观察者模式
- PAIP批量改名JS实现
- Spark SQL自定义函数案例(拼接字符串)
- Office Timeline一款非常专业好用的PPT插件
- html5css字竖着显示,css如何设置竖排文字?
- BZOJ4378[POI2015]Logistyka——树状数组
- Prometheus监控 Blackbox_exporter黑盒监测
- 江西省九江市瑞昌市高考成绩查询2021,2021江西省地区高考成绩排名查询,江西省高考各高中成绩喜报榜单...