Oracle意外删除数据文件恢复方法
来源:互联网 发布:有组织犯罪知乎 编辑:程序博客网 时间:2024/05/21 10:48
Oracle意外删除数据文件恢复方法
本文http://www.itpub.net/thread-2063564-1-1.html
一、 恢复原理
在Linux操作系统中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。但是要注意的是,此时如果关闭数据库,则此句柄会消失,那么除了扫描磁盘进行文件恢复之外就没有其它方法了,因此在数据库出现问题的时候,如果不确认情况的复杂程度,千万不要随便关闭数据库。重启数据库往往是没有意义的,甚至是致命的。
二、 测试环境
操作系统:redhat6
数据库版本:oracle 11
三、 恢复步骤
i. 创建测试表空间、用户
1、创建表空间
SYS@orcl>createtablespace test datafile '/u01/app/oracle/oradata/orcl/test.dbf' size 50m;
Tablespacecreated.
2、创建test用户
SYS@orcl>createuser test identified by test default tablespace test;
User created.
3、授权
SYS@orcl>grantconnect,resource to test;
Grantsucceeded.
ii. 删除数据文件测试
TEST@orcl>host rm /u01/app/oracle/oradata/orcl/test.dbf
TEST@orcl>createtable test(t int);
Tablecreated.
TEST@orcl>insertinto test values(1);
insertinto test values(1)
*
ERRORat line 1:
ORA-01116:error in opening database file 36
ORA-01110:data file 36: '/u01/app/oracle/oradata/orcl/test.dbf'
ORA-27041:unable to open file
Linux-x86_64Error: 2: No such file or directory
Additional information: 3
建表成功,但是,插入操作报错,数据文件不存在。
iii. 检查dbwr的进程PID
ps -ef|grep dbw0|grep-v grep
oracle 5745 1 0Jul14 ? 00:00:00 ora_dbw0_orcl
iv. dbwr会打开所有数据文件的句柄。在proc目录中可以查到,目录名是进程PID,fd表示文件描述符。
cd /proc/5745/fd
ll
……..
lrwx------ 1 oracle oinstall64 7月 15 00:51 300 ->/u01/app/oracle/oradata/orcl/test.dbf (deleted)
……
可以看到“/u01/app/oracle/oradata/orcl/test.dbf (deleted)”字样,表名改文件已经被删除
v. 直接拷贝该句柄文件回原位置
cp 300 /u01/app/oracle/oradata/orcl/test.dbf
vi. 进行数据文件恢复
1、将数据文件/u01/app/oracle/oradata/orcl/test.dbf置于离线状态。
SYS@orcl>alter database datafile '/u01/app/oracle/oradata/orcl/test.dbf'offline;
Database altered.
2、介质恢复
SYS@orcl>recoverdatafile '/u01/app/oracle/oradata/orcl/test.dbf';
Media recovery complete.
3、将数据文件/u01/app/oracle/oradata/orcl/test.dbf置于在线状态
SYS@orcl>alter database datafile '/u01/app/oracle/oradata/orcl/test.dbf'online;
Database altered.
4、测试
TEST@orcl>insertinto test values(1);
1 row created.
发现已经可以向表中插入数据。
0 0
- Oracle意外删除数据文件恢复方法
- Oracle 意外删除数据文件的恢复
- 恢复被rm意外删除数据文件
- 恢复被rm意外删除数据文件
- 恢复被rm意外删除数据文件
- 恢复被rm意外删除数据文件
- 恢复被rm意外删除数据文件
- 恢复被rm意外删除数据文件
- oracle误用操作系统命令删除数据文件的恢复方法
- oracle数据文件被误操作删除了恢复方法
- Linux环境利用恢复被rm意外删除数据文件
- ORACLE 删除数据文件模拟灾难恢复
- oracle数据文件被删除没备份恢复
- oracle数据文件被删除的恢复
- linux 误删除Oracle数据文件恢复
- 误删Oracle数据文件的恢复方法
- 误删Oracle数据文件的恢复方法
- ORA-27041: unable to open file--恢复被rm意外删除数据文件
- 遍历Map的六种方法
- 下载单张图片到本地相册
- RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
- 动画的显示与隐藏
- 全选 vue
- Oracle意外删除数据文件恢复方法
- rsync常见问题
- HDU 1564 考虑奇偶性的变化
- Scala eclipse 错误 -找不到或无法加载主类
- GitHub NPoco 调用存储过程
- RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)
- android:windowSoftInputMode属性使用
- hdu Find a way
- sql学习---datepart函数的使用