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 恢复完毕!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示