归档模式下恢复无备份的lost datafile

场景:

  1. 你在os层面丢失了数据文件,并且没有相应的备份
  2. 数据库处于archivelog模式
  3. 从数据文件创建到目前所有的归档日志都完好

由于没有备份,数据库无法正常打开,除非将数据文件或表空间删除,这样就会造成数据的丢失

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
SYS@xb> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 /u01/arch
最早的联机日志序列 121
下一个存档日志序列 123
当前日志序列 123

SYS@xb> create tablespace tbs_ts datafile '/u01/app/oracle/oradata/xb/tbs_ts01.dbf' size 20m;

表空间已创建。

SYS@xb> create table tb_test (id number) tablespace tbs_ts;

表已创建。

SYS@xb> insert into tb_test values (1);

已创建 1 行。

SYS@xb> commit;

提交完成。

SYS@xb> select file_id,file_name from dba_data_files where tablespace_name='TBS_TS';

FILE_ID FILE_NAME
---------- ----------------------------------------------------------------------
6 /u01/app/oracle/oradata/xb/tbs_ts01.dbf

删除物理文件,模拟文件丢失

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
32
[oracle@xb xb]$ mv tbs_ts01.dbf tbs_ts01.dbf.bak

SYS@xb> shutdown immediate;
ORA-01116: 打开数据库文件 6 时出错
ORA-01110: 数据文件 6: '/u01/app/oracle/oradata/xb/tbs_ts01.dbf'
ORA-27041: 无法打开文件
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SYS@xb> select status from v$instance;

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

SYS@xb> shutdown abort;
ORACLE 例程已经关闭。
SYS@xb> startup mount
ORACLE 例程已经启动。

Total System Global Area 943669248 bytes
Fixed Size 2258880 bytes
Variable Size 666896448 bytes
Database Buffers 268435456 bytes
Redo Buffers 6078464 bytes
数据库装载完毕。

SYS@xb> select * from v$recover_file;

FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- --------------
6 ONLINE ONLINE FILE NOT FOUND 0

使用alter database create datafile <> as ….的方式,重建这个丢失的数据文件:

1
2
3
SYS@xb> alter database create datafile 6;

数据库已更改。

使用归档日志和redo恢复datafile

1
2
3
4
5
6
7
8
9
10
11
SYS@xb> recover datafile 6;
完成介质恢复。
SYS@xb> alter database open;

数据库已更改。

SYS@xb> select * from tb_test;

ID
----------
1

归档模式下恢复无备份的lost datafile
https://www.xbdba.com/2018/10/25/recover-datafile-with-nobackup/
作者
xbdba
发布于
2018年10月25日
许可协议