场景:
1.数据库开启归档;
2.创建数据文件之后的所有归档日志都在线;
3.数据文件或者表空间没有进行过备份,数据库也没有全库备份,数据文件异常丢失;
步骤:
创建测试用的表空间:
SQL> create table test_b (id number(10)) tablespace bbb;
Table created.
SQL> insert into test_b values (1);
1 row created.
SQL> commit;
NAME
——————————————————————————–
FILE#
———-
/opt/oracle/oradata/R11203/aaa.dbf
10
/opt/oracle/oradata/R11203/bbb.dbf
11
11 rows selected.
SQL> host
删除数据文件,模拟异常丢失
bash-4.2$ ls -al /opt/oracle/oradata/R11203/bbb.dbf
-rw-rw—- 1 oracle
dba 10493952 Apr 4 09:53
/opt/oracle/oradata/R11203/bbb.dbf
bash-4.2$ mv /opt/oracle/oradata/R11203/bbb.dbf
/opt/oracle/oradata/R11203/bbb.dbf.bak
bash-4.2$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Fri Apr 4
09:55:03 2014
Copyright (c) 1982, 2011, Oracle. All rights
reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 –
64bit Production
With the Partitioning, OLAP, Data Mining and Real
Application Testing options
SQL> alter tablespace bbb read only;
alter tablespace bbb read only
*
ERROR at line 1:
ORA-01116: error in opening database file 11
ORA-01110: data file 11:
‘/opt/oracle/oradata/R11203/bbb.dbf’
ORA-27041: unable to open file
HPUX-ia64 Error: 2: No such file or directory
Additional information: 3
SQL> shutdown immediate;
ORA-01116: error in opening database file 11
ORA-01110: data file 11:
‘/opt/oracle/oradata/R11203/bbb.dbf’
ORA-27041: unable to open file
HPUX-ia64 Error: 2: No such file or directory
Additional information: 3
SQL> select status from v$instance;
STATUS
————
OPEN
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL>/
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL>
停机
SQL> shutdown immediate;
ORA-01116: error in opening database file 11
ORA-01110: data file 11:
‘/opt/oracle/oradata/R11203/bbb.dbf’
ORA-27041: unable to open file
HPUX-ia64 Error: 2: No such file or directory
Additional information: 3
SQL> shutdown abort;
ORACLE instance shut down.
把数据库启动到mount状态
SQL> startup mount;
ORACLE instance started.
Total System Global Area 329859072 bytes
Fixed
Size
2182336 bytes
Variable
Size
285213504 bytes
Database
Buffers 37748736
bytes
Redo
Buffers
4714496 bytes
Database mounted.
使用alter database create datafile <> as ….的方式,重建这个丢失的数据文件:
SQL> alter database create datafile 11;
Database altered.
通过归档日志和redo log对数据文件进行恢复
SQL> recover datafile 11;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL> select * from test_b;
ID
———-
1
