ARCHIVELOG模式下用户管理的完全恢复(4)——在没有数据文件备份的情况下恢复数据文件!

这个情况需要满足两个条件:只从数据文件创建以后,所有的归档日志文件和控制文件都在就可以使用这种方式来恢复数据。假如数据库是关闭的,发现该数据文件丢失了,又没有备份

SQL> conn /as sysdba
已连接。
SQL> create tablespace tb3 datafile '/u01/app/oracle/oradata/orcl/tb3.dbf' size 10m;

表空间已创建。

SQL> create user u3 identified by u3 default tablespace tb3;

用户已创建。

SQL> grant connect,resource to u3;

授权成功。

SQL> create table u3.t as select * from all_objects;

表已创建。

 

现在正常关闭数据库,删除数据文件

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> ! rm -rf /u01/app/oracle/oradata/orcl/tb3.dbf

 

现在肯定不能启动数据库,查询出丢失的文件的文件号码,也可以看见需要恢复文件记录。

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: 无法标识/锁定数据文件 15 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 15: '/u01/app/oracle/oradata/orcl/tb3.dbf'


SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select file#,name,status from v$datafile;

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
         1 /u01/app/oracle/oradata/orcl/system01.dbf          SYSTEM
         2 /u01/app/oracle/oradata/orcl/undotbs01.dbf         ONLINE
         3 /u01/app/oracle/oradata/orcl/sysaux01.dbf          ONLINE
         4 /u01/app/oracle/oradata/orcl/users01.dbf           ONLINE
         5 /u01/app/oracle/oradata/orcl/test01.dbf            ONLINE
         6 /u01/app/oracle/oradata/orcl/perfstat01.dba        ONLINE
         7 /u01/app/oracle/oradata/orcl/undo01.dbf            ONLINE
         8 /u01/app/oracle/oradata/orcl/tbspart01.dbf         ONLINE
         9 /u01/app/oracle/oradata/orcl/tbspart02.dbf         ONLINE
        10 /u01/app/oracle/oradata/orcl/tbspart03.dbf         ONLINE
        11 /u01/app/oracle/oradata/orcl/tbspart04.dbf         ONLINE

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
        12 /u01/app/oracle/oradata/orcl/tb1.dbf               ONLINE
        13 /u01/app/oracle/oradata/orcl/tb2.dbf               ONLINE
        14 /u01/app/oracle/oradata/orcl/ttb1.dbf              ONLINE
        15 /u01/app/oracle/oradata/orcl/tb3.dbf               ONLINE

已选择15行。

SQL> select * from v$recover_file;

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

 

恢复

SQL> alter database datafile 15 offline;

数据库已更改。

SQL> alter database create datafile '/u01/app/oracle/oradata/orcl/tb3.dbf';

数据库已更改。

SQL> select * from v$recover_file;

     FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- --------------
        15 OFFLINE OFFLINE                                                                      1026698 08-10月-11

SQL> recover datafile 15;
完成介质恢复。
SQL> alter database datafile 15 online;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> conn u3/u3
已连接。
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
T                              TABLE

SQL> select count(*) from t;

  COUNT(*)
----------
     49945

你可能感兴趣的:(oracle,sql,数据库,File,database,System)