66.Oracle数据文件误删除之后怎样恢复

前提:归档模式下:当数据库的数据文件被误删除后,一定不要关闭库!!!一定不要关闭库!!!一定不要关闭库!!

1.查看数据库状态:

SQL> select status from v$instance;

STATUS
------------
OPEN

2.查看数据文件

复制代码
col name for a50;
select name,status from v$datafile;
NAME                                               STATUS
-------------------------------------------------- -------
/data/ORACLE/system01.dbf                          SYSTEM
/data/ORACLE/sysaux01.dbf                          ONLINE
/data/ORACLE/undotbs01.dbf                         ONLINE
/data/ORACLE/test01.dbf                            ONLINE
/data/ORACLE/users01.dbf                           ONLINE
复制代码

3.模拟删除 /data/ORACLE/test01.dbf 这个文件 

[oracle@db01 fd]$ rm -rf /data/ORACLE/test01.dbf

4.此时如果关闭库(shutdown immedite)会报如下错误:

SQL> shu immediate;
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/data/ORACLE/test01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

  且查询这个文件里对应的任何对象都会报这个错误

5.开始恢复

  5.1 恢复的思路主要是先物理恢复数据文件

[oracle@db01 ORACLE]$ ps -ef|grep dbw0
oracle   10238     1  0 01:25 ?        00:00:00 ora_dbw0_oracle
oracle   11000  2447  0 01:35 pts/2    00:00:00 grep --color=auto dbw0
[oracle@db01 ORACLE]$ cd /proc/10238/fd

  这里查看dbw0这个进程对应的进程号,然后进入该进程号对应的fd中。

    这里会发现已经误删除的文件在这里是一个软连接(261),此时执行如下命令将它物理恢复到相应的位置上。

[oracle@db01 fd]$ cp 261 /data/ORACLE/test01.dbf

    执行完上述命令之后,发现该物理文件已经恢复到了/data/ORACLE/  目录下面了。

  5.2 然后进入数据库执行如下命令

SQL> alter database datafile 5 offline;
Database altered.
SQL> recover datafile 5;
Media recovery complete.
SQL> alter database  datafile 5 online;
Database altered.

  ok 恢复完毕!

 

posted on   太白金星有点烦  阅读(426)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示