继续使用前面的试验环境,可以看见user1用户下面有两条记录
SQL> show user USER 为 "USER1" SQL> select * from test; ID VALUE ---------- -------------------- 1 a 2 b
现在我就正常关闭数据库,删除现在的最新的数据文件
SQL> conn /as sysdba 已连接。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> ! rm -rf /u01/app/oracle/oradata/orcl/ttb1.dbf
启动数据库会发现缺少数据文件
SQL> conn /as sysdba 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1266392 bytes Variable Size 117443880 bytes Database Buffers 46137344 bytes Redo Buffers 2924544 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 14 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'
还记得前面备份过一次ttb1表空间吗,但是它不是最新的数据文件
SQL> ! cp /u01/app/oracle/backup/ttb1.dbf /u01/app/oracle/oradata/orcl/ttb1.dbf SQL> select status from v$instance; STATUS ------------ MOUNTED SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01113: 文件 14 需要介质恢复 ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'
将数据文件离线就能够open数据库了
SQL> alter database datafile 14 offline; 数据库已更改。 SQL> alter database open; 数据库已更改。 SQL> select * from v$recover_file; FILE# ONLINE ONLINE_ ERROR CHANGE# TIME ---------- ------- ------- ----------------------------------------------------------------- ---------- -------------- 14 OFFLINE OFFLINE 1004104 08-10月-11 SQL> recover datafile 14; 完成介质恢复。 SQL> alter database datafile 14 online; 数据库已更改。
查看结果
SQL> conn user1/user1 已连接。 SQL> select * from test; ID VALUE ---------- -------------------- 1 a 2 b