linux誤刪資料檔案後恢復
--------------建立測試表
[[email protected] ~]$ sqlplus / as sysdba
SQL>create user test identified by test default tablespace users;
SQL>grant dba to test;
SQL>create table test.c_test as select * from dba_users;
SQL> select count(*) from test.c_test;
COUNT(*) ---------- 30
--------------刪除資料檔案
[[email protected] ~]$cd /u01/app/oradata/orcl
[[email protected] ~]$mv users01.dbf users01.dbf.bak
--------------恢復
[[email protected] orcl]$ ps -ef|grep dbw oracle 3332 1 0 15:50 ? 00:00:00 ora_dbw0_orcl oracle 3620 3203 0 16:51 pts/4 00:00:00 grep dbw
[[email protected] orcl]$ cd /proc/3332/fd/
[[email protected] fd]$ ls -lrt total 0 lrwx------. 1 oracle oinstall 64 Oct 18 16:51 9 -> /u01/app/oracle/product/11.2.0/db_1/dbs/hc_orcl.dat lr-x------. 1 oracle oinstall 64 Oct 18 16:51 8 -> /dev/zero lr-x------. 1 oracle oinstall 64 Oct 18 16:51 7 -> /proc/3332/fd lr-x------. 1 oracle oinstall 64 Oct 18 16:51 6 -> /u01/app/oracle/product/11.2.0/db_1/rdbms/mesg/oraus.msb lr-x------. 1 oracle oinstall 64 Oct 18 16:51 5 -> /dev/null lr-x------. 1 oracle oinstall 64 Oct 18 16:51 4 -> /dev/null lr-x------. 1 oracle oinstall 64 Oct 18 16:51 3 -> /dev/nulllrwx------. 1 oracle oinstall 64 Oct 18 16:51 262 -> /u01/app/oradata/orcl/users01.dbf (deleted)
[[email protected] fd]$ cp 262 /u01/app/oradata/orcl/users01.dbf
[[email protected] ~]$ sqlplus / as sysdba
SQL>alter database datafile 4 offline;
Database altered.
SQL>recover datafile 4 ;
Media recovery complete.
SQL>alter database datafile 4 online;
Database altered.
SQL> select count(*) from test.c_test;
COUNT(*) ---------- 30