Oracle恢復誤刪除的資料檔案
實驗環境:
CentOS 6.4
Oracle 11.2.0.3.0
1.模擬誤刪除了Oracle的資料檔案
下面是Oracle的資料檔案目錄
刪除所有的檔案.
[oracle@master orcl]$ rm -rf *
[oracle@master orcl]$ ls
[oracle@master orcl]$
這個時候千萬不要關閉資料庫例項
2.恢復資料檔案
首先找到dbwn的程式號(PID),可以看到pid是3030
[oracle@master orcl]$ ps -ef | grep ora_dbw | grep -v grep
oracle 3030 1 0 09:14 ? 00:00:01 ora_dbw0_orcl
進入這個程式的目錄
[root@master fd]# cd /proc/3030/fd
可以看到相關的檔案都已經刪除
現在只需要將刪除的檔案拷貝回原位置即可.
如cp 256 /home/oracle/app/oracle/oradata/orcl/control01.ctl
但是檔案數量較大,可以使用AWK拼接命令
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup open;
ORACLE instance started.
Total System Global Area 784998400 bytes
Fixed Size 2232472 bytes
Variable Size 478154600 bytes
Database Buffers 297795584 bytes
Redo Buffers 6815744 bytes
ORA-00214: control file
'/home/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl' version 1946
inconsistent with file '/home/oracle/app/oracle/oradata/orcl/control01.ctl'
version 1939
CentOS 6.4
Oracle 11.2.0.3.0
1.模擬誤刪除了Oracle的資料檔案
下面是Oracle的資料檔案目錄
刪除所有的檔案.
[oracle@master orcl]$ rm -rf *
[oracle@master orcl]$ ls
[oracle@master orcl]$
這個時候千萬不要關閉資料庫例項
2.恢復資料檔案
首先找到dbwn的程式號(PID),可以看到pid是3030
[oracle@master orcl]$ ps -ef | grep ora_dbw | grep -v grep
oracle 3030 1 0 09:14 ? 00:00:01 ora_dbw0_orcl
進入這個程式的目錄
[root@master fd]# cd /proc/3030/fd
如cp 256 /home/oracle/app/oracle/oradata/orcl/control01.ctl
但是檔案數量較大,可以使用AWK拼接命令
[root@master fd]# ll | awk '/deleted/{print "cp "$9" "$11}' > /tmp/test.sh
[root@master fd]# source /tmp/test.sh
3.同理,恢復日誌檔案
[root@master fd]# ps -ef | grep ora_lgwr | grep -v grep
oracle 3032 1 0 09:14 ? 00:00:09 ora_lgwr_orcl
進入lgwr程式的目錄
[root@master fd]# cd /proc/3032/fd
恢復redolog
[root@master fd]# ll | awk '/deleted/{print "cp "$9" "$11}' | grep redo > /tmp/test.sh
[root@master fd]# source /tmp/test.sh
其中/tmp/test.sh的內容如下
cp 258 /home/oracle/app/oracle/oradata/orcl/redo01.log
cp 259 /home/oracle/app/oracle/oradata/orcl/redo02.log
cp 260 /home/oracle/app/oracle/oradata/orcl/redo03.log
4.重啟資料庫例項
重啟資料庫例項,發現控制檔案不一致,用其他控制檔案覆蓋即可(多路複用控制檔案的好處).[root@master fd]# source /tmp/test.sh
3.同理,恢復日誌檔案
[root@master fd]# ps -ef | grep ora_lgwr | grep -v grep
oracle 3032 1 0 09:14 ? 00:00:09 ora_lgwr_orcl
[root@master fd]# cd /proc/3032/fd
恢復redolog
[root@master fd]# ll | awk '/deleted/{print "cp "$9" "$11}' | grep redo > /tmp/test.sh
[root@master fd]# source /tmp/test.sh
其中/tmp/test.sh的內容如下
cp 258 /home/oracle/app/oracle/oradata/orcl/redo01.log
cp 259 /home/oracle/app/oracle/oradata/orcl/redo02.log
cp 260 /home/oracle/app/oracle/oradata/orcl/redo03.log
檔案恢復之後,停止資料庫例項,重新設定檔案的屬主和屬組(一般使用root恢復,需要重新設定為原使用者)
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup open;
ORACLE instance started.
Total System Global Area 784998400 bytes
Fixed Size 2232472 bytes
Variable Size 478154600 bytes
Database Buffers 297795584 bytes
Redo Buffers 6815744 bytes
ORA-00214: control file
'/home/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl' version 1946
inconsistent with file '/home/oracle/app/oracle/oradata/orcl/control01.ctl'
version 1939
總結:
1.在誤刪除發生的時候,千萬不要停止資料庫例項.只要程式還握有檔案控制程式碼,還是有可能恢復的.
2.直接查詢lgwr的程式比查詢dbwn要好.因為lgwr除了握有資料檔案的控制程式碼還握有日誌檔案的控制程式碼.
3.經過實驗,MySQL資料庫不能使用這種方式恢復.因為MySQL程式不會握有所有檔案的控制程式碼,即使使用這種方式恢復了部分檔案,也不能啟動資料庫例項.
1.在誤刪除發生的時候,千萬不要停止資料庫例項.只要程式還握有檔案控制程式碼,還是有可能恢復的.
2.直接查詢lgwr的程式比查詢dbwn要好.因為lgwr除了握有資料檔案的控制程式碼還握有日誌檔案的控制程式碼.
3.經過實驗,MySQL資料庫不能使用這種方式恢復.因為MySQL程式不會握有所有檔案的控制程式碼,即使使用這種方式恢復了部分檔案,也不能啟動資料庫例項.
參考:
http://www.xifenfei.com/5640.html
http://www.xifenfei.com/5640.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28258625/viewspace-1414338/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- Oracle恢復誤刪資料Oracle
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 【北亞資料恢復】zfs檔案系統的伺服器誤刪除的資料恢復資料恢復伺服器
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 【伺服器資料恢復】Zfs檔案系統下誤刪除怎麼恢復資料伺服器資料恢復
- Git恢復刪除的檔案Git
- 【資料庫資料恢復】HP-UX系統ORACLE資料庫被誤刪除的資料恢復資料庫資料恢復UXOracle
- 【虛擬機器資料恢復】誤刪除VMware虛擬機器vmdk檔案的資料恢復案例虛擬機資料恢復
- 【NetApp資料恢復案例】針對NetApp誤刪除資料的恢復APP資料恢復
- eclipse 恢復誤刪檔案Eclipse
- 行動硬碟刪除的檔案能恢復嗎,怎麼恢復硬碟刪除的檔案硬碟
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 電腦裡刪除的檔案怎麼恢復,資料恢復方法大全資料恢復
- 【儲存資料恢復案例】Netapp誤操作刪除lun的資料恢復資料恢復APP
- 【儲存資料恢復】NetApp儲存誤刪除的資料恢復案例資料恢復APP
- 電腦檔案誤刪除了怎麼恢復找回?誤刪電腦資料恢復方法教程資料恢復
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- 伺服器儲存檔案誤刪資料恢復伺服器資料恢復
- 【伺服器資料恢復】linux ext3檔案系統下誤刪除mysql資料庫的資料恢復案例伺服器資料恢復LinuxMySql資料庫
- linux系統下檔案誤刪除該如何恢復?Linux
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- 【伺服器資料恢復】LINUX誤刪除、格式化的資料恢復伺服器資料恢復Linux
- 【伺服器資料恢復】NetApp儲存誤刪除的資料恢復案例伺服器資料恢復APP
- 誤刪除儲存SqlServer資料庫資料恢復SQLServer資料庫資料恢復
- hbase 恢復 誤刪除
- 【北亞資料恢復】分散式儲存hbase和hive資料庫底層檔案被誤刪除的資料恢復案例資料恢復分散式Hive資料庫
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- sd卡中的資料夾刪除了怎麼恢復,SD卡刪除的檔案如何恢復SD卡
- 【伺服器資料恢復】LINUX誤刪除、誤格式化怎麼恢復資料?伺服器資料恢復Linux
- sd卡刪除的檔案如何恢復SD卡
- Shift + Delete刪除的檔案如何恢復?delete
- git恢復誤刪未提交的檔案Git
- 被誤刪的檔案快速恢復方法
- 如何有效恢復誤刪的HDFS檔案