Linux 恢復rm -rf命令所刪除的達夢資料檔案
LINUX系統中被刪除的檔案,只要其控制程式碼沒有被關閉,可以在/proc//fd中找到其對應的檔案副本。其中指開啟該檔案的程式id。利用該方法,結合OS命令,DM7提供失效檔案的恢復方案,下面用示例來演示:
1.建立一個表空間cs,給其建立兩個資料檔案
SQL> create tablespace cs datafile '/dm_home/dmdba/dmdbms/data/jydm/cs1.dbf' size 128,'/dm_home/dmdba/dmdbms/data/jydm/cs.dbf' size 128; executed successfully used time: 00:00:21.941. Execute id is 90.
2.找出達夢伺服器程式ID
[root@cs1 jydm]# ps -ef | grep dmserver dmdba 2467 1 0 10月15 ? 00:05:53 /dm_home/dmdba/dmdbms/bin/dmserver /dm_home/dmdba/dmdbms/data/jydm/dm.ini -noconsole root 18893 18058 0 21:45 pts/1 00:00:00 grep --color=auto dmserver
3.顯示達夢伺服器程式所開啟的檔案列表
[root@cs1 jydm]# ls /proc/2467/fd -l 總用量 0 lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853] lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854] lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856] lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807] lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041] lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042] lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log
4.刪除表空間cs中的一個資料檔案
[root@cs1 jydm]# rm -rf cs.dbf
5.透過呼叫系統過程SP_FILE_SYS_CHECK()來手動的對錶空間失效檔案進行檢查。
SQL> call SP_FILE_SYS_CHECK(); DMSQL executed successfully used time: 0.690(ms). Execute id is 93.
6.在表空間cs中建立一個測試表cs,命令執行出錯,顯示錶空間cs中的cs.dbf檔案已經被刪除了。
SQL> create table cs(cs_id number) tablespace cs; create table cs(cs_id number) tablespace cs; [-3430]:tablespace[CS] file[/dm_home/dmdba/dmdbms/data/jydm/cs.dbf] has been deleted. used time: 31.462(ms). Execute id is 0.
7.呼叫系統過程SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)準備進行恢復
SQL> call SP_TABLESPACE_PREPARE_RECOVER('CS'); DMSQL executed successfully used time: 16.121(ms). Execute id is 95.
8.顯示達夢伺服器程式所開啟的檔案列表,可以看到cs.dbf檔案被標示為deleted了。
[root@cs1 jydm]# ls /proc/2467/fd -l 總用量 0 lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853] lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854] lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856] l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856] lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807] lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf (deleted) lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041] lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042] lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log
9.使用作業系統的cp命令將檔案(cs.dbf)複製到原位置
[root@cs1 jydm]# cp /proc/2467/fd/24 /dm_home/dmdba/dmdbms/data/jydm/cs.dbf [root@cs1 jydm]# ls -lrt 總用量 1365112 drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:12 bak -rw-r--r-- 1 dmdba dinstall 479 7月 23 22:12 sqllog.ini -rw-r--r-- 1 dmdba dinstall 633 7月 23 22:13 dm_service.prikey drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:14 HMAIN -rw-r--r-- 1 dmdba dinstall 908 7月 23 22:14 dminit20180723221249.log -rw-r--r-- 1 dmdba dinstall 890 7月 23 22:14 dmarch_example.ini -rw-r--r-- 1 dmdba dinstall 1966 7月 23 22:14 dmdcr_cfg_example.ini -rw-r--r-- 1 dmdba dinstall 631 7月 23 22:14 dmdcr_example.ini -rw-r--r-- 1 dmdba dinstall 2070 7月 23 22:14 dmmal_example.ini -rw-r--r-- 1 dmdba dinstall 1537 7月 23 22:14 dminit_example.ini -rw-r--r-- 1 dmdba dinstall 1277 7月 23 22:14 dmmonitor_example.ini -rw-r--r-- 1 dmdba dinstall 1679 7月 23 22:14 dmtimer_example.ini -rw-r--r-- 1 dmdba dinstall 288 7月 23 22:14 dmmpp_example.ini -rw-r--r-- 1 dmdba dinstall 1241 7月 23 22:14 dmwatch_example.ini -rw-r--r-- 1 dmdba dinstall 2146 7月 23 22:14 dmwatcher_example.ini -rw-r--r-- 1 dmdba dinstall 522 7月 23 22:14 dmwmon_example.ini -rw-r--r-- 1 dmdba dinstall 636 7月 23 22:14 sqllog_example.ini drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:14 trace -rw-r--r-- 1 dmdba dinstall 12 7月 23 22:14 rep_conflict.log -rw-r--r-- 1 dmdba dinstall 157286400 7月 23 22:16 BOOKSHOP.DBF -rw-r--r-- 1 dmdba dinstall 134217728 7月 23 22:16 DMHR.DBF -rw-r--r-- 1 dmdba dinstall 40859 8月 20 15:20 dm.ini -rw-r--r-- 1 dmdba dinstall 10485760 10月 15 12:21 TEMP.DBF -rw-r--r-- 1 dmdba dinstall 268435456 10月 15 12:21 jydm02.log -rw-r--r-- 1 dmdba dinstall 134217728 10月 25 21:24 MAIN.DBF -rw-r--r-- 1 dmdba dinstall 134217728 10月 25 21:43 cs1.dbf -rw-r--r-- 1 dmdba dinstall 7168 10月 25 21:43 dm.ctl drwxr-xr-x 2 dmdba dinstall 4096 10月 25 21:43 ctl_bak -rw-r--r-- 1 dmdba dinstall 134217728 10月 25 21:43 ROLL.DBF -rw-r--r-- 1 dmdba dinstall 22020096 10月 25 21:59 SYSTEM.DBF -rw-r--r-- 1 dmdba dinstall 268435456 10月 25 21:59 jydm01.log -rw-r--r-- 1 root root 134217728 10月 25 21:59 cs.dbf -rw-r--r-- 1 dmdba dinstall 220 10月 25 21:59 dminst.sys
10.複製成功後,呼叫系統過程SP_TABLESPACE_RECOVER(ts_name)完成表空間失效檔案的恢復。注意,要保證資料檔案正確修復,需要保證在SP_TABLESPACE_PREPARE_RECOVER後進行資料檔案的複製。
SQL> call SP_TABLESPACE_RECOVER('CS'); DMSQL executed successfully used time: 46.532(ms). Execute id is 96.
11.再次在表空間cs中建立測試表cs命令成功執行
SQL> create table cs(cs_id number) tablespace cs; executed successfully used time: 36.913(ms). Execute id is 97.
到此,在Linux系統中恢復被刪除的表空間檔案恢復成功了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2217813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rm -rf 刪除檔案還能恢復嗎?
- Linux下用rm刪除的檔案的恢復方法Linux
- Linux rm(刪除檔案/目錄) 命令Linux
- Linux rm命令:刪除檔案或目錄Linux
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- linux rm - rf之後怎麼恢復Linux
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- extundelete工具恢復rm -rf 刪除的目錄(ext4、ext3)delete
- rm 刪除檔案
- linux 刪除檔案或目錄——rmLinux
- Linux學習筆記:rm刪除檔案和資料夾Linux筆記
- Git恢復刪除的檔案Git
- 【Linux】linux下刪除/清空資料夾/檔案命令Linux
- Linux刪除檔案命令Linux
- 行動硬碟刪除的檔案能恢復嗎,怎麼恢復硬碟刪除的檔案硬碟
- 電腦裡刪除的檔案怎麼恢復,資料恢復方法大全資料恢復
- linux的刪除檔案命令和強制刪除命令Linux
- 達夢資料庫手工恢復相關命令資料庫
- Linux 系統的常用命令之 rm ,rm -rf , rm -f 以及rm 命令的其他引數命令Linux
- sd卡中的資料夾刪除了怎麼恢復,SD卡刪除的檔案如何恢復SD卡
- 【北亞資料恢復】zfs檔案系統的伺服器誤刪除的資料恢復資料恢復伺服器
- 【伺服器資料恢復】linux ext3檔案系統下誤刪除mysql資料庫的資料恢復案例伺服器資料恢復LinuxMySql資料庫
- sd卡刪除的檔案如何恢復SD卡
- Shift + Delete刪除的檔案如何恢復?delete
- linux系統下檔案誤刪除該如何恢復?Linux
- 【伺服器資料恢復】LINUX誤刪除、格式化的資料恢復伺服器資料恢復Linux
- linux刪除資料夾命令是什麼 linux刪除檔案和目錄命令大全介紹Linux
- 【伺服器資料恢復】Zfs檔案系統下誤刪除怎麼恢復資料伺服器資料恢復
- 達夢資料庫DM8之刪除歸檔日誌檔案資料庫
- 檔案刪除如何恢復?推薦幾款超實用的資料恢復軟體資料恢復
- 360粉碎檔案可以恢復嗎,如何恢復360強力刪除的檔案
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 虛擬機器vmdk檔案刪除後如何恢復資料虛擬機
- NetApp FAS2240-4儲存刪除檔案資料恢復APP資料恢復
- 如何使用 testdisk 恢復已刪除的檔案
- 伺服器資料恢復-LINUX誤刪除/格式化資料的資料恢復方案伺服器資料恢復Linux
- Linux下面誤刪除檔案使用extundelete工具恢復介紹Linuxdelete
- 【虛擬機器資料恢復】誤刪除VMware虛擬機器vmdk檔案的資料恢復案例虛擬機資料恢復