Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36147
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-18 14:53
文章分类
文章存档

2016年(10)

我的朋友

分类: Oracle

2016-06-23 23:31:35

背景:恢复误删除的数据文件

恢复原理:
 Linux 操作系统中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从 /proc 目录中获得。但是要注意的是,此时如果关闭数据库,则此句柄会消失,那么除了扫描磁盘进行文件恢复之外就没有其它方法了,因此在数据库出现问题的时候,如果不确认情况的复杂程度,千万不要随便关闭数据库。重启数据库往往是没有意义的,甚至是致命的。


[oracle@SHAPP7 trace]$ tail -f alert_orcl.log 
ORA-01110: data file 30: '/home/oracle/app/oracle/oradata/orcl/ats_data01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_17200.trc:


误删除了/ats_data01.dbf数据文件。
恢复过程:
一.找到误删除文件的文件句柄(fd代表句柄)


[oracle@SHAPP7 ~]$ ps -ef | grep dbw0
oracle 17893 17820 0 09:52 pts/5 00:00:00 grep dbw0
oracle 24097 1 0 Mar03 ? 00:06:27 ora_dbw0_orcl
[oracle@SHAPP7 ~]$ cd /proc/240
2401/ 24072/ 24079/ 24081/ 24083/ 24087/ 24089/ 24091/ 24093/ 24095/ 24097/ 24099/ 
[oracle@SHAPP7 ~]$ cd /proc/24097/fd


二:根据文件句柄恢复文件(截图)

已经删除的文件的文件句柄后会加deleted,将句柄文件拷贝到链接对应的文件位置

[oracle@SHAPP7 fd]$ cp 286 /home/oracle/app/oracle/oradata/orcl/ats_data01.dbf


:表空间(数据文件recover

SQL> alter database datafile 30 offline;
alter database datafile 30 offline
*
ERROR at line 1:
ORA-01145: offline immediate disallowed unless media recovery enabled 

SQL> 
SQL> 
SQL> 
SQL> 
SQL> alter tablespace ATS_DATA offline; 
Tablespace altered. 
SQL> alter database datafile 30 offline; 
Database altered. 
SQL> recover datafile 30 ;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required 

SQL> recover tablespace ATS_DATA;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required 

SQL> alter tablespace ATS_DATA online; 
Tablespace altered. 
SQL> alter database datafile 30 online; 
Database altered.


恢复完成
切记:如果误删了数据库任何文件,都不要关闭数据库,保留现场,才可以便于后续恢复。

阅读(1405) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:修改数据库到归档模式并制定归档目录

给主人留下些什么吧!~~