Linux中如何恢复被误删的数据文件
Linux環境中文件被刪除的恢復,通常有幾種情況,如果數據庫實例還未停止,那么恢復很easy,如果實例停掉,
那么可能需要借助相關的工具來進行恢復,這里我進行簡單的描述。
1.?使用工具進行恢復(ext3grep或者extundelete,e2fsprogs等工具)
我這里使用ext3grep來進行刪除文件的恢復,如下是一個例子。
1).?安裝rpm包
rpm?-ivh?ext3grep-0.10.2-1.el4.rf.i386.rpm
2).模擬數據文件被刪除的恢復
SQL>?!rm?-rf?/home/ora10g/oradata/roger/roger01.dbf
SQL>?shutdown?abort;
ORACLE?instance?shut?down.
SQL>
3)?掃描文件inode并restore
?| 1234 | [root@killdb?~]#?ext3grep?/dev/sda3?--ls?--inode?2Running?ext3grep?version?0.10.2WARNING:?I?don't?know?what?EXT3_FEATURE_COMPAT_EXT_ATTR?is.WARNING:?EXT3_FEATURE_INCOMPAT_RECOVER?is?set.?This?either?means?that?your?partition?is?still?mounted, |
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | and/orthe?file?system?is?in?an?unclean?state.Number?of?groups:?201Loading?group?metadata...?doneMinimum?/?maximum?journal?block:?1546?/?9748Loading?journal?descriptors...?sorting...?doneThe?oldest?inode?block?that?is?still?in?the?journal,?appears?to?be?from?121640448?=?Thu?Nov?8?13:00:48?1973Journal?transaction?1459878?wraps?around,?some?data?blocks?might?have?been?lost?of?this?transaction.Number?of?descriptors?in?journal:?6294;?min?/?max?sequence?numbers:?1458017?/?1460214Inode?is?AllocatedFinding?all?blocks?that?might?be?directories.D:?block?containing?directory?start,?d:?block?containing?more?directory?entries.Each?plus?represents?a?directory?start?that?references?the?same?inode?asa?directory?start?that?we?found?previously.Searching?group?0:?DDddddddddddddddddddddddddddddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD.......DDDDDDDDDDDDDDDDDDDDddSearching?group?1:?ddDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD.........DDddDDDDDDDDDDDddSearching?group?2:?DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDddddD.....DDDDDDSearching?group?3:Searching?group?4:?D。。。。。。。。。。。。。。。。。。Adding?extended?directory?block(s)?fordirectory?"ora9/product/9.2/sysman/admin".Writing?analysis?so?far?to?'sda3.ext3grep.stage2'.?Deletethat?file?ifyou?want?to?dothis?stage?again.The?first?block?of?the?directory?is?1540.Inode?2?is?directory?"".Directory?block?1540:.--?File?type?in?dir_entry?(r=regular?file,?d=directory,?l=symlink)|?.--?D:?Deleted?;?R:?ReallocatedIndx?Next?|?Inode?|?Deletion?time?Mode?File?name==========+==========+----------------data-from-inode------+-----------+=========0?1?d?2?drwxr-xr-x?.1?2?d?2?drwxr-xr-x?..2?3?d?11?drwx------?lost+found3?4?d?65409?drwx------?roger4?5?d?866670?drwxr-xr-x?hadoop5?6?d?1438977?drwxrwxr-x?ora10g6?7?d?3172289?drwx------?ora97?8?d?1308161?drwxr-xr-x?hbase8?9?d?2534746?drwxr-xr-x?mongodb9?10?d?1733317?drwxrwxr-x?sybase10?11?d?3106916?drwxr-xr-x?puppet11?12?d?3155939?drwxrwxr-x?ggs12?endd?965021?drwxr-xr-x?bak[root@killdb?~]#[root@killdb?~]#?ext3grep?/dev/sda3?--ls?--inode?1438977Running?ext3grep?version?0.10.2WARNING:?I?don't?know?what?EXT3_FEATURE_COMPAT_EXT_ATTR?is.WARNING:?EXT3_FEATURE_INCOMPAT_RECOVER?is?set.?This?either?means?that?your?partition?is?still?mounted,?and/orthe |
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 | file?system?is?in?an?unclean?state.Number?of?groups:?201Minimum?/?maximum?journal?block:?1546?/?9748Loading?journal?descriptors...?sorting...?doneThe?oldest?inode?block?that?is?still?in?the?journal,?appears?to?be?from?1376229179?=?Sun?Aug?11?06:52:59?2013Journal?transaction?1459878?wraps?around,?some?data?blocks?might?have?been?lost?of?this?transaction.Number?of?descriptors?in?journal:?6293;?min?/?max?sequence?numbers:?1458318?/?1460214Inode?is?AllocatedLoading?sda3.ext3grep.stage2.................................................................................?doneThe?first?block?of?the?directory?is?2906112.Inode?1438977?is?directory?"ora10g".Directory?block?2906112:.--?File?type?in?dir_entry?(r=regular?file,?d=directory,?l=symlink)|?.--?D:?Deleted?;?R:?ReallocatedIndx?Next?|?Inode?|?Deletion?time?Mode?File?name==========+==========+----------------data-from-inode------+-----------+=========0?1?d?1438977?drwxrwxr-x?.1?2?d?2?drwxr-xr-x?..2?3?r?1439480?rrwxrwxr-x?.bash_profile3?4?r?1438979?rrwxrwxr-x?.bash_logout4?5?r?1438980?rrwxrwxr-x?.canna5?6?r?1438981?rrwxrwxr-x?.gtkrc6?7?r?1438982?rrwxrwxr-x?.emacs7?8?r?1438983?rrwxrwxr-x?.bashrc8?9?r?1438978?rrwxrwxr-x?.bash_history9?10?d?1441395?drwxrwxr-x?oraInventory10?11?d?1441408?drwxrwxr-x?product11?12?r?1439414?rrw-r--r--?log.bbd12?13?r?1439581?rrw-r--r--?listfile.txt13?14?d?1471685?drwxrwxr-x?archivelog14?15?d?1783420?drwxrwxr-x?admin15?16?d?1783428?drwxrwxr-x?oradata16?17?r?1439579?rrwxrwxr-x?par.bbed17?18?r?1439418?rrwxrwxr-x?exp.log18?19?r?1439545?rrw-r--r--?par.119?20?d?1471689?drwxrwxr-x?logs20?21?d?1504385?drwxrwxr-x?core_39779621?22?r?1439420?rrwxrwxr-x?dbv.log22?23?r?1439415?rrwxrwxr-x?odu_308_linux_x86.tar23?24?d?1455329?drwxrwxr-x?odu24?25?d?1488036?drwxr-xr-x?backup25?26?r?1439422?rrwxrwxr-x?stackx26?27?d?1717028?drwxrwxr-x?odu_test27?28?r?1439410?rrwxrwxr-x?core_397796.tar28?29?d?1717038?drwxrwxr-x?pw_cracker29?30?r?1439421?rrwxrwxr-x?stackx1_2.tar30?31?r?1439424?rrwxrwxr-x?README.txt31?32?r?1439425?rrwxrwxr-x?readme.htm32?33?r?1439426?rrwxrwxr-x?core_397796.txt33?34?r?1439432?rrw-r--r--?sql_hash.sql34?35?r?1439434?rrwxrwxr-x?7232.out35?36?r?1439430?rrwxrwxr-x?136?37?r?1439431?rrwxrwxr-x?kill_spid.sh37?38?d?1439428?drwxrwxr-x?demo38?39?r?1439527?rrw-r--r--?test.sh.log39?40?r?1439523?rrw-r--r--?spawrrac.sql40?41?r?1439433?rrwxrwxr-x?19623.out41?42?r?1439435?rrwxrwxr-x?sndb3_diag_275164.trc42?43?r?1439436?rrwxrwxr-x?ass109.awk43?44?r?1439437?rrwxrwxr-x?sndb3_diag_275164.trc.out44?45?r?1439439?rrwxrwxr-x?a.txt45?46?r?1439569?rrwxrwxr-x?1.txt46?47?r?1439440?rrwxrwxr-x?free_tab_block.sql47?48?d?1439485?drwxr-xr-x?dul48?49?r?1439465?rrwxrwxr-x?sqlldr.ctl49?50?r?1439487?rrw-r--r--?a.out50?51?r?2763489?rrwxrwxr-x?locks.lis51?52?r?2763490?rrwxrwxr-x?heap_analyze.txt52?53?r?2763494?rrwxrwxr-x?heap_analyze.sql53?54?r?2763492?rrwxrwxr-x?roger_ora_11076.trc54?55?r?2763493?rrwxrwxr-x?heapdump_analyze55?56?r?527701?rrwxrwxr-x?delete.out56?57?r?2763495?rrwxrwxr-x?heapanalyze.sh57?58?r?1783457?rrwxrwxr-x?delete.sh58?59?r?527920?rrwxrwxr-x?cpu.lst59?60?r?1783567?rrwxrwxr-x?a.sh60?61?r?527921?rrwxrwxr-x?cpu_stats.lst61?62?r?527922?rrwxrwxr-x?sqlhc.sql62?63?r?527923?rrwxrwxr-x?create.sql63?64?r?527924?rrwxrwxr-x?sqlhc.log64?65?r?527925?rrwxrwxr-x?sqlhc_roger_killdb_10.2.0.5.0_96g93hntrzjtr_20120213055519.html65?66?r?527926?rrwxrwxr-x?sqlt.zip66?67?d?1439443?drwxrwxr-x?sqlt67?68?r?527928?rrwxrwxr-x?a.trc68?69?r?527929?rrwxrwxr-x?bug.sql69?70?r?527927?rrwxrwxr-x?crmsiebel_ora_22610144.trc70?71?r?527930?rrwxrwxr-x?b.trc71?72?r?527932?rrwxrwxr-x?awk_10046.awk72?73?r?527931?rrwxrwxr-x?13982_trc.trc73?74?r?1439476?rrwxrwxr-x?pfile.ora74?75?d?1504388?drwxrwxr-x?doc75?76?r?1439461?rrwxrwx---?sqlnet.log76?77?r?1439462?rrwxrwxr-x?drop_index_trace.log77?78?r?1439444?rrwxrwxr-x?awrinfo.txt78?79?d?1504389?drwxrwxr-x?logminer79?80?r?1439464?rrwxrwxr-x?20149.trc80?81?r?1439460?rrwxrwxr-x?sqlldr.log81?82?r?1439466?rrwxrwxr-x?sqlldr.bad82?83?r?1439472?rrwxrwxr-x?sqlldr2.ctl83?84?r?1978612?rrwxrwxr-x?debug.sh84?85?r?1439467?rrwxrwxr-x?sqlldr2.log85?86?r?1439469?rrwxrwxr-x?block_6.dd86?87?r?1439459?rrwxrwxr-x?Undohealth.out87?88?r?1439471?rrwxrwxr-x?undopressure.out88?89?r?1439474?rrwxrwxr-x?undousage.out89?90?r?1439475?rrwxrwxr-x?check_scn.sql90?91?r?1439477?rrwxrwxr-x?chain.sql91?92?d?1439473?drwxrwxr-x?tmp92?93?d?1504391?drwxr-xr-x?nbu93?94?r?1439478?rrwxrwxr-x?chouqu.sql94?95?r?1439417?rrwxrwxr-x?bifile.bbd95?97?r?1439481?rrwxrwxr-x?a.sql97?98?r?1439499?rrw-r--r--?a.log98?99?d?1520737?drwx------?.ssh99?100?r?1439482?rrwxrwxr-x?dd.dbf100?101?r?1439531?rrwxrwxr-x?test.sh101?102?r?1978613?rrwxrwxr-x?dtraceio.d102?103?d?1488033?drwxr-xr-x?tools103?104?d?1439419?drwxr-xr-x?scripts104?105?r?1439503?rrwxr-xr-x?listfile.txt.bak105?106?d?2779847?drwxr-xr-x?arch106?107?r?1439442?rrw-r--r--?control.txt107?108?d?1488037?drwxr-xr-x?flashback108?109?r?1439534?rrw-r--r--?ass1033.awk109?110?d?1684260?drwxr-xr-x?archivelog1110?111?r?1439514?rrw-r--r--?odu_415_linux_x86.tar.gz111?112?r?1439484?rrwxrwxr-x?orion_linux_x86112?113?d?1684273?drwxr-xr-x?tmp_area113?114?r?1439554?rrwxr-xr-x?tmp.txt114?115?r?1439553?rrwxr-xr-x?par.tmp115?116?r?1439542?rrw-r--r--?a.dmp116?117?r?1784202?rrw-r--r--?awrrpt_1_1258_1259.html117?118?r?1439536?rrw-r--r--?cncgu21_l028_32519.trc118?119?r?1439537?rrw-r--r--?dstarget_ora_562140.trc119?120?r?1439538?rrw-r--r--?zyk_ora_414106.trc120?121?r?1439540?rrwxrwxr-x?strace.sh121?122?r?1439565?rrw-r--r--?DD-DATAFILE.zip122?123?r?1439517?rrw-r--r--?test.lun123?124?r?1439550?rrw-r--r--?DD.zip124?125?r?1439575?rrw-r--r--?os_header.dd125?126?r?1439583?rrwxr-xr-x?listfile1.txt126?127?r?1439582?rrwxr-xr-x?par.bbed1127?128?r?1439546?rrw-r--r--?t_logical_corruption.dmp128?129?r?1439498?rrwxrwxr-x?backup_db.log129?130?r?1439548?rrw-r--r--?c.log130?131?r?1439551?rrw-r--r--?d.log131?132?r?1439552?rrw-r--r--?1.log132?133?r?1439555?rrw-r--r--?0417.dd133?134?r?1439511?rrw-r--r--?aaaa.log134?135?r?1439512?rrw-r--r--?11.log135?136?r?1439378?rrw-r--r--?a14402.trc136?137?r?1439558?rrw-r--r--?a2.log137?138?r?1439559?rrw-r--r--?a1.trc138?139?r?1439429?rrw-r--r--?test_20130604_2228_summary.txt139?140?r?1439519?rrw-r--r--?test_20130604_2228_mbps.csv140?141?r?1439520?rrw-r--r--?test_20130604_2228_iops.csv141?142?r?1439522?rrw-r--r--?test_20130604_2228_lat.csv142?143?r?1439528?rrw-r--r--?test_20130604_2228_trace.txt143?144?r?1439377?rrw-r--r--?test_20130604_2249_summary.txt144?145?r?1439529?rrw-r--r--?test_20130604_2249_mbps.csv145?146?r?1439532?rrw-r--r--?test_20130604_2249_iops.csv146?147?r?1439543?rrw-r--r--?test_20130604_2249_lat.csv147?148?r?1439560?rrw-r--r--?test_20130604_2249_trace.txt148?149?r?1439562?rrw-r--r--?coe_xfr_sql_profile.log149?150?r?1439563?rrw-r--r--?coe_xfr_sql_profile.sql150?151?r?1439566?rrw-r--r--?coe_xfr_sql_profile_50gr3nwzq39nf_684537719.sql151?153?r?1439564?rrw-r--r--?coe_xfr_sql_profile_50gr3nwzq39nf_684537719.log153?154?r?1439571?rrw-r--r--?a1.txt154?155?r?1439567?rrw-r--r--?sql_plan_exchange.sql155?156?r?1439606?rrwxr-xr-x?par.bbed2156?157?r?1439544?rrw-r--r--?getpid.sql157?158?r?1439605?rrw-r--r--?a2.txt158?159?r?1439556?rrw-r--r--?a1.log159?160?r?1439506?rrw-r--r--?awrrpt_1_33571_33572.html160?161?r?1439576?rrw-r--r--?getstat_undo.sql161?162?r?1439573?rrwxrwxr-x?listfile.old162?163?r?1439572?rrw-r--r--?orasrp-linux.zip163?164?r?1439561?rrw-r--r--?test_undo1_insert.sql164?165?r?1439570?rrw-r--r--?test_undo1_insert2.sql165?166?r?1439530?rrw-r--r--?exp_t.dmp166?endr?1439574?rrw-r--r--?12560.log[root@killdb?~]#[root@killdb?~]#?ext3grep?/dev/sda3?--ls?--inode?1783428Running?ext3grep?version?0.10.2WARNING:?I?don't?know?what?EXT3_FEATURE_COMPAT_EXT_ATTR?is.WARNING:?EXT3_FEATURE_INCOMPAT_RECOVER?is?set.?This?either?means?that?your?partition?is?still?mounted,?and/orthe?file?system?is?in?an?unclean?state.Number?of?groups:?201Minimum?/?maximum?journal?block:?1546?/?9748Loading?journal?descriptors...?sorting...?doneThe?oldest?inode?block?that?is?still?in?the?journal,?appears?to?be?from?1376229179?=?Sun?Aug?11?06:52:59?2013Journal?transaction?1459878?wraps?around,?some?data?blocks?might?have?been?lost?of?this?transaction.Number?of?descriptors?in?journal:?6293;?min?/?max?sequence?numbers:?1458318?/?1460214Inode?is?AllocatedLoading?sda3.ext3grep.stage2................................................................................................................?doneThe?first?block?of?the?directory?is?3598344.Inode?1783428?is?directory?"ora10g/oradata".Directory?block?3598344:.--?File?type?in?dir_entry?(r=regular?file,?d=directory,?l=symlink)|?.--?D:?Deleted?;?R:?ReallocatedIndx?Next?|?Inode?|?Deletion?time?Mode?File?name==========+==========+----------------data-from-inode------+-----------+=========0?1?d?1783428?drwxrwxr-x?.1?2?d?1438977?drwxrwxr-x?..2?3?d?1783429?drwxrwxr-x?roger3?4?d?2698081?drwxr-xr-x?recover4?6?d?1896850?drwxr-xr-x?aux5?6?r?1160995?D?1374650893?Wed?Jul?24?00:28:13?2013?rrw-r-----?system01.dbf6?endr?1160993?rrw-r--r--?awrrpt_1_944_945.html7?8?r?1063076?D?1373425824?Tue?Jul?9?20:10:24?2013?rrw-r-----?a_data_D-ROGER_I-2466925865_TS-ROGER_FNO-2_0cod7kbr.bak8?10?r?1063077?D?1373425828?Tue?Jul?9?20:10:28?2013?rrw-r-----?a_data_D-ROGER_I-2466925865_TS-SYSTEM_FNO-1_0dod7kgc.bak9?10?r?1063078?D?1373425827?Tue?Jul?9?20:10:27?2013?rrw-r-----?a_data_D-ROGER_I-2466925865_TS-SYSAUX_FNO-3_0eod7khp.bak10?endr?1063079?D?1373425830?Tue?Jul?9?20:10:30?2013?rrw-r-----?a_data_D-ROGER_I-2466925865_TS-USERS_FNO-4_0fod7kj7.bak11?endr?1063080?D?1373425829?Tue?Jul?9?20:10:29?2013?rrw-r-----?a_data_D-ROGER_I-2466925865_TS-UNDOTBS2_FNO-6_0god7kk0.bak12?endr?1063081?D?1373425824?Tue?Jul?9?20:10:24?2013?rrw-r-----?a_data_D-ROGER_I-2466925865_TS-SQLT_FNO-8_0hod7kkf.bak13?endr?1063082?D?1373425819?Tue?Jul?9?20:10:19?2013?rrw-r-----?a_cf_D-ROGER_id-2466925865_0iod7kkm.bak14?endr?1063083?D?1373425819?Tue?Jul?9?20:10:19?2013?rrw-r-----?a_0jod7kkp_1_1.bak[root@killdb?/]#?ext3grep?/dev/sda3?--ls?--inode?1783429Running?ext3grep?version?0.10.2WARNING:?I?don't?know?what?EXT3_FEATURE_COMPAT_EXT_ATTR?is.WARNING:?EXT3_FEATURE_INCOMPAT_RECOVER?is?set.?This?either?means?that?your?partition?is?still?mounted,?and/orthe?file?system?is?in?an?unclean?state.Number?of?groups:?201Minimum?/?maximum?journal?block:?1546?/?9748Loading?journal?descriptors...?sorting...?doneThe?oldest?inode?block?that?is?still?in?the?journal,?appears?to?be?from?1376231625?=?Sun?Aug?11?07:33:45?2013Journal?transaction?1459878?wraps?around,?some?data?blocks?might?have?been?lost?of?this?transaction.Number?of?descriptors?in?journal:?6901;?min?/?max?sequence?numbers:?1458725?/?1460308Inode?is?AllocatedLoading?sda3.ext3grep.stage2................................................................................................................?doneThe?first?block?of?the?directory?is?3598345.Inode?1783429?is?directory?"ora10g/oradata/roger".Directory?block?3598345:.--?File?type?in?dir_entry?(r=regular?file,?d=directory,?l=symlink)|?.--?D:?Deleted?;?R:?ReallocatedIndx?Next?|?Inode?|?Deletion?time?Mode?File?name==========+==========+----------------data-from-inode------+-----------+=========0?1?d?1783429?drwxrwxr-x?.1?2?d?1783428?drwxrwxr-x?..2?3?r?1783455?rrw-r-----?control01.ctl3?4?r?1783456?rrw-r-----?control02.ctl4?5?r?1783458?rrw-r-----?control03.ctl5?6?r?1783465?rrw-r-----?system01.dbf6?8?r?1783466?rrw-r-----?sysaux01.dbf7?8?r?1784045?D?1376286019?Sun?Aug?11?22:40:19?2013?rrw-r-----?roger01.dbf8?9?r?1783470?rrw-r-----?undotbs01.dbf9?10?r?1783500?rrw-r-----?users01.dbf10?11?r?1783898?rrw-r-----?redo01.log11?12?r?1783899?rrw-r-----?redo02.log12?13?r?1783900?rrw-r-----?redo03.log13?14?r?1783903?rrw-r-----?temp01.dbf14?endr?1783992?rrw-r-----?system02.dbf15?16?r?1785770?D?1374650901?Wed?Jul?24?00:28:21?2013?rrw-r-----?redo02.log16?endr?1079300?D?1374650901?Wed?Jul?24?00:28:21?2013?rrw-r-----?redo04.log17?endr?1079301?D?1374650901?Wed?Jul?24?00:28:21?2013?rrw-r--r--?dd.undo18?endr?1079233?D?1374650919?Wed?Jul?24?00:28:39?2013?rrw-r-----?temp02.dbf |
開始恢復被刪掉的文件:
ext3grep?/dev/sda3?–restore-file?ora10g/oradata/roger/roger01.dbf
注意這里的格式,后面的路徑不能加/home。跟前面的Inode?1783429?is?directory?“ora10g/oradata/roger”.?保持一致。
或者
ext3grep?/dev/sda3?–restore-inode?1784045
或者恢復整個目錄
ext3grep?/home/store/file?–restore-all
如下是我的操作過程:
?| 12345678910111213 | [root@killdb?/]#?ext3grep?/dev/sda3?--restore-file?ora10g/oradata/roger/roger01.dbfRunning?ext3grep?version?0.10.2WARNING:?I?don't?know?what?EXT3_FEATURE_COMPAT_EXT_ATTR?is.WARNING:?EXT3_FEATURE_INCOMPAT_RECOVER?is?set.?This?either?means?that?your?partition?is?still?mounted,?and/orthe?file?system?is?in?an?unclean?state.Number?of?groups:?201Minimum?/?maximum?journal?block:?1546?/?9748Loading?journal?descriptors...?sorting...?doneThe?oldest?inode?block?that?is?still?in?the?journal,?appears?to?be?from?1376231625?=?Sun?Aug?11?07:33:45?2013Journal?transaction?1459878?wraps?around,?some?data?blocks?might?have?been?lost?of?this?transaction.Number?of?descriptors?in?journal:?6903;?min?/?max?sequence?numbers:?1458725?/?1460310Loading?sda3.ext3grep.stage2................................................................................................................?doneRestoring?ora10g/oradata/roger/roger01.dbf[root@killdb?/]# |
恢復出來的文件,會存放在如下地方:
?| 123456 | [root@killdb?roger]#?pwd/RESTORED_FILES/ora10g/oradata/roger[root@killdb?roger]#?ls?-ltrtotal?205016-rw-r-----?1?root?root?209723392?Aug?11?22:26?roger01.dbf[root@killdb?roger]# |
4).?恢復完成之后并move,將文件屬主改掉,最后進行recover
?| 1234567891011121314151617181920 | [root@killdb?roger]#?mv?roger01.dbf?/home/ora10g/oradata/roger/[root@killdb?roger]#?cd?/home/ora10g/oradata/roger[root@killdb?roger]#?chownora10g:oinstall?roger01.dbf[root@killdb?roger]#?ls?-ltrtotal?1165464-rw-r-----?1?ora10g?oinstall?20979712?Aug?11?05:45?temp01.dbf-rw-r-----?1?ora10g?oinstall?5251072?Aug?11?22:26?users01.dbf-rw-r-----?1?ora10g?oinstall?26222592?Aug?11?22:26?undotbs01.dbf-rw-r-----?1?ora10g?oinstall?5251072?Aug?11?22:26?system02.dbf-rw-r-----?1?ora10g?oinstall?471867392?Aug?11?22:26?system01.dbf-rw-r-----?1?ora10g?oinstall?293609472?Aug?11?22:26?sysaux01.dbf-rw-r-----?1?ora10g?oinstall?209723392?Aug?11?22:26?roger01.dbf-rw-r-----?1?ora10g?oinstall?52429312?Aug?11?22:27?redo03.log-rw-r-----?1?ora10g?oinstall?52429312?Aug?11?22:27?redo02.log-rw-r-----?1?ora10g?oinstall?52429312?Aug?11?22:27?redo01.log-rw-r-----?1?ora10g?oinstall?7389184?Aug?11?22:28?control03.ctl-rw-r-----?1?ora10g?oinstall?7389184?Aug?11?22:28?control02.ctl-rw-r-----?1?ora10g?oinstall?7389184?Aug?11?22:28?control01.ctl[root@killdb?roger]#開始進行recover: |
| 12345678910111213141516171819202122232425 | <pre?class="brush:sql">[root@killdb?roger]#?su?-?ora10g[ora10g@killdb?~]$?sqlplus?"/as?sysdba"SQL*Plus:?Release?10.2.0.5.0?-?Production?on?Sun?Aug?11?23:05:01?2013Copyright?(c)?1982,?2010,?Oracle.?All?Rights?Reserved.Connected?to?an?idle?instance.SQL>?startup?mountORACLE?instance?started.Total?System?Global?Area?167772160?bytesFixed?Size?1272600?bytesVariable?Size?75498728?bytesDatabase?Buffers?88080384?bytesRedo?Buffers?2920448?bytesDatabase?mounted.SQL>?recover?datafile?5;Media?recovery?complete.SQL>?alter?database?open;Database?altered.SQL></pre> |
| 12 | 2.?數據庫open的情況下,文件被刪除當數據庫未關閉時,數據文件被刪除恢復起來還是很容易的,不管是linux還是unix都非常簡單,如下是一個例子: |
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | SQL>?select?open_mode?from?v$database;OPEN_MODE----------READ?WRITESQL>?set?lines?200SQL>?col?name?fora65SQL>?select?file#,name?from?v$datafile;FILE#?NAME----------?-----------------------------------------------------------------1?/home/ora10g/oradata/roger/system01.dbf2?/home/ora10g/oradata/roger/undotbs01.dbf3?/home/ora10g/oradata/roger/sysaux01.dbf4?/home/ora10g/oradata/roger/users01.dbf5?/home/ora10g/oradata/roger/roger01.dbf6?/home/ora10g/oradata/roger/system02.dbf6?rows?selected.SQL>?!rm?-rf?/home/ora10g/oradata/roger/users01.dbfSQL>SQL>?![ora10g@killdb?~]$?ls?-ltr?/home/ora10g/oradata/rogertotal?1165464-rw-r-----?1?ora10g?oinstall?20979712?Aug?11?05:45?temp01.dbf-rw-r-----?1?ora10g?oinstall?5251072?Aug?11?23:06?system02.dbf-rw-r-----?1?ora10g?oinstall?209723392?Aug?11?23:06?roger01.dbf-rw-r-----?1?ora10g?oinstall?52429312?Aug?11?23:06?redo03.log-rw-r-----?1?ora10g?oinstall?52429312?Aug?11?23:06?redo02.log-rw-r-----?1?ora10g?oinstall?293609472?Aug?11?23:11?sysaux01.dbf-rw-r-----?1?ora10g?oinstall?26222592?Aug?11?23:11?undotbs01.dbf-rw-r-----?1?ora10g?oinstall?471867392?Aug?11?23:11?system01.dbf-rw-r-----?1?ora10g?oinstall?52429312?Aug?11?23:11?redo01.log-rw-r-----?1?ora10g?oinstall?5251072?Aug?11?23:11?users01.dbf-rw-r-----?1?ora10g?oinstall?7389184?Aug?11?23:11?control03.ctl-rw-r-----?1?ora10g?oinstall?7389184?Aug?11?23:11?control02.ctl-rw-r-----?1?ora10g?oinstall?7389184?Aug?11?23:11?control01.ctl[ora10g@killdb?~]$?exitexit+++copydatafile[ora10g@killdb?roger]$?ps?-ef|grep?dbwora10g?7193?1?0?23:05???00:00:00?ora_dbw0_rogerora10g?7367?5727?0?23:09?pts/3?00:00:00?grep?dbw[ora10g@killdb?roger]$?cd?/proc/7193[ora10g@killdb?7193]$?cd?fd[ora10g@killdb?fd]$?ls?-ltrtotal?26lr-x------?1?ora10g?oinstall?64?Aug?11?23:10?0?->?/dev/nulllrwx------?1?ora10g?oinstall?64?Aug?11?23:10?7?->?/home/ora10g/product/10.2/dbs/lkinstroger?(deleted)l-wx------?1?ora10g?oinstall?64?Aug?11?23:10?6?->?/home/ora10g/admin/roger/bdump/alert_roger.logl-wx------?1?ora10g?oinstall?64?Aug?11?23:10?5?->?/home/ora10g/admin/roger/udump/roger_ora_7172.trclr-x------?1?ora10g?oinstall?64?Aug?11?23:10?4?->?/dev/nulllr-x------?1?ora10g?oinstall?64?Aug?11?23:10?3?->?/dev/nulllr-x------?1?ora10g?oinstall?64?Aug?11?23:10?2?->?/dev/nulllr-x------?1?ora10g?oinstall?64?Aug?11?23:10?1?->?/dev/nulllrwx------?1?ora10g?oinstall?64?Aug?11?23:10?9?->?/home/ora10g/product/10.2/dbs/hc_roger.datl-wx------?1?ora10g?oinstall?64?Aug?11?23:10?8?->?/home/ora10g/admin/roger/bdump/alert_roger.loglr-x------?1?ora10g?oinstall?64?Aug?11?23:10?25?->?/home/ora10g/product/10.2/rdbms/mesg/oraus.msblrwx------?1?ora10g?oinstall?64?Aug?11?23:10?24?->?/home/ora10g/oradata/roger/temp01.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?23?->?/home/ora10g/oradata/roger/system02.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?22?->?/home/ora10g/oradata/roger/roger01.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?21?->?/home/ora10g/oradata/roger/users01.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?20?->?/home/ora10g/oradata/roger/sysaux01.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?19?->?/home/ora10g/oradata/roger/undotbs01.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?18?->?/home/ora10g/oradata/roger/system01.dbflrwx------?1?ora10g?oinstall?64?Aug?11?23:10?17?->?/home/ora10g/oradata/roger/control03.ctllrwx------?1?ora10g?oinstall?64?Aug?11?23:10?16?->?/home/ora10g/oradata/roger/control02.ctllrwx------?1?ora10g?oinstall?64?Aug?11?23:10?15?->?/home/ora10g/oradata/roger/control01.ctllrwx------?1?ora10g?oinstall?64?Aug?11?23:10?14?->?/home/ora10g/product/10.2/dbs/lkROGERlrwx------?1?ora10g?oinstall?64?Aug?11?23:10?13?->?/home/ora10g/product/10.2/dbs/hc_roger.datlr-x------?1?ora10g?oinstall?64?Aug?11?23:10?12?->?/home/ora10g/product/10.2/rdbms/mesg/oraus.msblr-x------?1?ora10g?oinstall?64?Aug?11?23:10?11?->?/dev/zerolr-x------?1?ora10g?oinstall?64?Aug?11?23:10?10?->?/dev/zero[ora10g@killdb?fd]$?pwd/proc/7193/fd[ora10g@killdb?fd]$?cp?/proc/7193/fd/21?/home/ora10g/oradata/roger/users01.dbf[ora10g@killdb?fd]$+++++將datafile?copy之后,進行recoverSQL>?recover?datafile?4;ORA-00283:?recovery?session?canceled?due?to?errorsORA-01124:?cannot?recover?data?file?4?-?file?is?in?useorrecoveryORA-01110:?data?file?4:?'/home/ora10g/oradata/roger/users01.dbf'SQL>?shutdown?immediateDatabase?closed.Database?dismounted.ORACLE?instance?shut?down.SQL>?startup?mountORACLE?instance?started.Total?System?Global?Area?167772160?bytesFixed?Size?1272600?bytesVariable?Size?75498728?bytesDatabase?Buffers?88080384?bytesRedo?Buffers?2920448?bytesDatabase?mounted.SQL>?recover?datafile?4;Media?recovery?complete.SQL>?alter?database?open;Database?altered.SQL>?select?file#,name,status?from?v$datafile;FILE#?NAME?STATUS----------?-----------------------------------------------------------------?-------1?/home/ora10g/oradata/roger/system01.dbf?SYSTEM2?/home/ora10g/oradata/roger/undotbs01.dbf?ONLINE3?/home/ora10g/oradata/roger/sysaux01.dbf?ONLINE4?/home/ora10g/oradata/roger/users01.dbf?ONLINE5?/home/ora10g/oradata/roger/roger01.dbf?ONLINE6?/home/ora10g/oradata/roger/system02.dbf?SYSTEM6?rows?selected.SQL> |
或者使用lsof命令進行查看,然后進行copy:
?| 123456789101112 | [ora10g@killdb?fd]$?ps?-ef|grep?dbw|grep?-v?grepora10g?7491?1?0?23:12???00:00:00?ora_dbw0_roger[ora10g@killdb?fd]$?lsof?-a?-p?7491?|?egrep?"COMMAND|dbf"COMMAND?PID?USER?FD?TYPE?DEVICE?SIZE?NODE?NAMEoracle?7491?ora10g?18uW?REG?8,3?471867392?1783465?/home/ora10g/oradata/roger/system01.dbforacle?7491?ora10g?19uW?REG?8,3?26222592?1783470?/home/ora10g/oradata/roger/undotbs01.dbforacle?7491?ora10g?20uW?REG?8,3?293609472?1783466?/home/ora10g/oradata/roger/sysaux01.dbforacle?7491?ora10g?21uW?REG?8,3?5251072?1784064?/home/ora10g/oradata/roger/users01.dbforacle?7491?ora10g?22uW?REG?8,3?209723392?1784045?/home/ora10g/oradata/roger/roger01.dbforacle?7491?ora10g?23uW?REG?8,3?5251072?1783992?/home/ora10g/oradata/roger/system02.dbforacle?7491?ora10g?24uW?REG?8,3?20979712?1783903?/home/ora10g/oradata/roger/temp01.dbf[ora10g@killdb?fd]$ |
直接copy?相關文件即可,該操作更為簡單:
?| 1 | copy/proc/7491/fd/21?/home/ora10g/oradata/roger/user01.dbf |
總的來說,對于文件從操作系統級別刪掉的情況,如果inode在未被覆蓋之前,都是可以恢復,一旦覆蓋就難以恢復了,
所以我們建議,一旦有文件被刪掉,那么建議將該文件系統umount掉,以免信息被覆蓋。
?
轉載于:https://blog.51cto.com/ecloud/1393314
總結
以上是生活随笔為你收集整理的Linux中如何恢复被误删的数据文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bash/shell的字符串trim实现
- 下一篇: Windows Phone APP中禁用