OS層面刪除數據文件後的恢復方式(LINUX):

這次刪除數據文件後,請不要重啓數據庫或者關閉數據庫,可直接在線恢復。
測試方式:
先從數據庫中查看數據庫數據文件的文件號及路徑:數據庫

SQL> select  FILE# ,name from v$datafile;

 FILE#  NAME
----------  -----------------------------------------------------------------------
     1 /u01/app/oracle/oradata/coffexiang/system01.dbf
     2 /u01/app/oracle/oradata/coffexiang/tbs1_1.dbf
     3 /u01/app/oracle/oradata/coffexiang/sysaux01.dbf
     4 /u01/app/oracle/oradata/coffexiang/undotbs01.dbf
     5 /u01/app/oracle/oradata/coffexiang/example01.dbf
     6 /u01/app/oracle/oradata/coffexiang/users01.dbf
     7 /u01/app/oracle/oradata/coffexiang/undotbs1.dbf
     8 /u01/app/oracle/oradata/coffexiang/tbs1_2.dbf

     
SQL> select * from v$tablespace;
   TS# NAME                           INC BIG FLA ENC     CON_ID
-----------------------------------   --- --- --- --- ----------
     1 SYSAUX                         YES NO  YES              0
     0 SYSTEM                         YES NO  YES              0
     2 UNDOTBS1                       YES NO  YES              0
     4 USERS                          YES NO  YES              0
     3 TEMP                           NO  NO  YES              0
     6 EXAMPLE                        YES NO  YES              0
     9 TBS1                           YES NO  YES              0
SQL> select tablespace_name,status from dba_tablespaces;

 TABLESPACE_NAME                STATUS
 ------------------------   ---------
 SYSTEM                         ONLINE
 SYSAUX                         ONLINE
 UNDOTBS1                       ONLINE
 TEMP                           ONLINE
 USERS                          ONLINE
 EXAMPLE                        ONLINE
 TBS1                           ONLINE

刪除表空間TBS1的數據文件oracle

[oracle@xiang66 ~]$ cd /u01/app/oracle/oradata/coffexiang/
[oracle@xiang66 coffexiang]$ rm tbs1_1.dbf tbs1_2.dbf

建表測試,顯示失敗:app

SQL> create table xiang1.tbs1 as select * from scott.emp;
create table xiang1.tbs1 as select * from scott.emp
                                            *
ERROR at line 1:
ORA-01116: error in opening database file 2
ORA-01110: data file 2: '/u01/app/oracle/oradata/coffexiang/tbs1_1.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

而後咱們經過dbw進程找到spid號,經過/proc/'spid號'/fd 路徑下找到被刪除的數據文件測試

--找到spid號spa

[oracle@xiang66 coffexiang]$ ps -ef| grep dbw|grep -v grep
oracle     6471      1  0 07:52 ?        00:00:00 ora_dbw0_coffexiang

[oracle@xiang66 fd]$  ll /proc/6471/fd
total 0
lr-x------. 1 oracle oinstall 64 Jan 13 08:08 0 -> /dev/null
l-wx------. 1 oracle oinstall 64 Jan 13 08:08 1 -> /dev/null
lr-x------. 1 oracle oinstall 64 Jan 13 08:08 10 -> 
/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/mesg/oraus.msb
l-wx------. 1 oracle oinstall 64 Jan 13 08:08 2 -> /dev/null
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 256 -> 
/u01/app/oracle/oradata/coffexiang/control01.ctl
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 257 -> 
/u01/app/oracle/oradata/coffexiang/control02.ctl
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 258 -> 
/u01/app/oracle/oradata/coffexiang/system01.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 259 -> 
/u01/app/oracle/oradata/coffexiang/tbs1_1.dbf (deleted)
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 260 -> 
/u01/app/oracle/oradata/coffexiang/sysaux01.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 261 -> 
/u01/app/oracle/oradata/coffexiang/undotbs01.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 262 -> 
/u01/app/oracle/oradata/coffexiang/example01.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 263 -> 
/u01/app/oracle/oradata/coffexiang/users01.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 264 -> 
/u01/app/oracle/oradata/coffexiang/undotbs1.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 265 -> 
/u01/app/oracle/oradata/coffexiang/temp01.dbf
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 266 -> 
/u01/app/oracle/oradata/coffexiang/tbs1_2.dbf (deleted)
lr-x------. 1 oracle oinstall 64 Jan 13 08:08 3 -> /dev/null
 lr-x------. 1 oracle oinstall 64 Jan 13 08:08 4 -> 
/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/mesg/oraus.msb
lr-x------. 1 oracle oinstall 64 Jan 13 08:08 5 -> /proc/6471/fd
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 6 -> 
/u01/app/oracle/product/12.1.0/dbhome_1/dbs/hc_coffexiang.dat
lrwx------. 1 oracle oinstall 64 Jan 13 08:08 9 -> 
/u01/app/oracle/product/12.1.0/dbhome_1/dbs/lkCOFFEXIANG

而後找到被刪除的數據文件恢復到原來的路徑裏面:code

[oracle@xiang66 fd]$ cp 259 /u01/app/oracle/oradata/coffexiang/tbs1_1.dbf
[oracle@xiang66 fd]$
[oracle@xiang66 fd]$ cp 266 /u01/app/oracle/oradata/coffexiang/tbs1_2.dbf
[oracle@xiang66 fd]$

最後offline 數據文件 recover後在進行onlineorm

SQL> alter database datafile 2 offline;

Database altered.

SQL> alter database datafile 8 offline;

Database altered.

SQL> recover datafile 2;
Media recovery complete.
SQL> recover datafile 8;
Media recovery complete.
SQL> alter database datafile 2 online;

Database altered.

SQL> alter database datafile 8 online;

Database altered.

測試創建相關表:進程

SQL> create table xiang1.tbs1 as select * from scott.emp;

Table created.

至此恢復完成。it

相關文章
相關標籤/搜索