ARCHIVELOG模式下用户管理的完全恢复(2)——恢复打开的数据库,并且数据库最初是关闭的!

来源:互联网 发布:vb中spc是什么意思 编辑:程序博客网 时间:2024/06/05 20:23

继续使用前面的试验环境,可以看见user1用户下面有两条记录

SQL> show userUSER 为 "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> startupORACLE 例程已经启动。Total System Global Area  167772160 bytesFixed Size                  1266392 bytesVariable Size             117443880 bytesDatabase Buffers           46137344 bytesRedo 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.dbfSQL> select status from v$instance;STATUS------------MOUNTEDSQL> 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月-11SQL> recover datafile 14;完成介质恢复。SQL> alter database datafile 14 online;数据库已更改。

查看结果

SQL> conn user1/user1已连接。SQL> select  * from test;        ID VALUE---------- --------------------         1 a         2 b