linux利用文件句柄恢复数据
实用于数据刚刚删除,db依然是running状态,文件句柄还没有释放,并且数据文件所在磁盘未进行大文件写入即磁盘上的数据还没有被擦写
实验准备:
模拟数据文件删除
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL> set line 200
SQL> col name for a60
SQL> select FILE#,STATUS,TS#,NAME from v$datafile;
FILE# STATUS TS# NAME
---------- ------- ---------- ------------------------------------------------------------
1 SYSTEM 0 /oracle/app/oracle/oradata/orcl/system01.dbf
2 ONLINE 1 /oracle/app/oracle/oradata/orcl/sysaux01.dbf
3 ONLINE 2 /oracle/app/oracle/oradata/orcl/undotbs01.dbf
4 ONLINE 4 /oracle/app/oracle/oradata/orcl/users01.dbf
5 ONLINE 6 /oracle/app/oracle/oradata/orcl/example01.dbf
SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
6 rows selected.
删除user
SQL> host rm -rf /oracle/app/oracle/oradata/orcl/users01.dbf
数据文件删除后,db状态需要是运行状态,否则文件句柄释放,无法使用该方法恢复,若磁盘已经多次擦写也可能无法恢复
查看db状态
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL>
SQL> select FILE#,STATUS,TS#,NAME from v$datafile;
FILE# STATUS TS# NAME
---------- ------- ---------- ------------------------------------------------------------
1 SYSTEM 0 /oracle/app/oracle/oradata/orcl/system01.dbf
2 ONLINE 1 /oracle/app/oracle/oradata/orcl/sysaux01.dbf
3 ONLINE 2 /oracle/app/oracle/oradata/orcl/undotbs01.dbf
4 ONLINE 4 /oracle/app/oracle/oradata/orcl/users01.dbf
5 ONLINE 6 /oracle/app/oracle/oradata/orcl/example01.dbf
SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
6 rows selected.
对比之前的信息发现,db仍然在运行,并且数据文件和表空间的状态都是online的状态
创建一个表放入users表空间,看看是否能够执行成功
SQL> create table testfile tablespace users as select * from dba_tablespaces;
create table testfile tablespace users as select * from dba_tablespaces
*
ERROR at line 1:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/oracle/app/oracle/oradata/orcl/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
提示找不到/oracle/app/oracle/oradata/orcl/users01.dbf数据文件,说明故障模拟成功
尝试恢复,当然这是不可能直接恢复的,或者使用有恢复目录
SQL> alte

当Oracle数据库的数据文件意外删除但DB仍在运行且文件句柄未释放时,可以通过Linux操作系统进行紧急恢复。本文介绍了如何检查DB状态、验证故障、查找文件句柄并恢复数据文件到原来的位置,从而避免数据丢失。
最低0.47元/天 解锁文章
7838

被折叠的 条评论
为什么被折叠?



