IT貓撲網:您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉貼|軟件發(fā)布

您當前所在位置: 首頁數據庫Oracle → oracle或者mysql誤刪數據文件急救

oracle或者mysql誤刪數據文件急救

時間:2015-06-28 00:00:00 來源:IT貓撲網 作者:網管聯盟 我要評論(0)

  當誤刪除曾經創(chuàng)建的數據庫文件*.ora或*.dbf后,oralce是無法正常進入open狀態(tài).

  ssh

  SQL> startup

  ORACLE instance started.

  Total System Global Area 1610612736 bytes

  Fixed Size????? 2073088 bytes

  Variable Size 268439040 bytes

  Database Buffers?? 1325400064 bytes

  Redo Buffers?? 14700544 bytes

  Database mounted.

  ORA-01113: file 6 needs media recovery

  ORA-01110: data file 6: 'e:/test.DBF'

  unix

  你想要open數據庫,oracle會打開所有文件,并進行一致性,所以會報上述錯誤。所以oracle只進入mount狀態(tài),這時oracle打開控制文件,讀取database的結構信息。

  mysql

  ·情況之一:數據庫沒有歸檔和備份

  linux

  如果redo.log記錄了該表空間對象的所有操作,并且沒有被其他內容循環(huán)使用,則下面的語句是可以恢復的,但是實際應用中這種理想狀態(tài)基本不存在。

  linux

  SQL>alter database datafile 6 offline drop;

  linux

  Database altered.

  mysql

  SQL> alter database create datafile 6 as 'e:/test.DBF';

  Database altered.

  SQL> recover datafile 6;

  mysql

  Media recovery complete. mysql

  SQL> alter database open;

  Database altered.

  oracle

  實際情況,無法依賴redo.log進行恢復的,這種情況只能損失部分數據換取數據庫的運行正常。

  mysql

  實際情況會遇到如下問題: mysql

  SQL> recover datafile 6;

  ORA-00279: change 3975904895 generated at 12/07/2009 14:21:36 needed for thread 1

  ORA-00289: suggestion :

  /u01/app/oracle/flash_recovery_area/XXX/archivelog/2009_12_17/o1_mf_1_56424_%

  u_.arc

  ORA-00280: change 3975904895 for thread 1 is in sequence #56424 linux

  Specify log: {=suggested | filename | AUTO | CANCEL} linux

  所以目前的是,將數據文件offline drop后,將數據庫open,然后查出哪些表在該數據文件所在的表空間上,檢查這些表是否正常,如果不正常的話,則導出這些表的數據,然后在數據庫上刪 除表,然后將導出的數據再導入到oracle,這樣該表就正常了。操作步驟,參考如下: ssh

  查找可能受影響的表:

  linux

  SELECT T.SEGMENT_NAME, T.OWNER, T.PARTITION_NAME

  FROM DBA_SEGMENTS T

  WHERE TABLESPACE_NAME = 'XXX'

  AND T.OWNER = 'XXX'

  AND SEGMENT_TYPE LIKE '%TABLE%';

  oracle

  導出該表的數據:

  mysql

  exp XXX/XXX@XXX file=/XXX/20091217_XXX.dmp log=/XXX/XXX.log tables=(XXX); ssh

  刪除該表:

  unix

  drop table XXX;

  ssh

  導入該表數據:

  linux

  imp XXX/XXX@XXX file=/XXX/20091217_XXX.dmp tables=(XXX);

  oracle

  這樣處理一定會損失部分數據的。導入完畢以后,查看該表是否正常,如有特殊需要則特殊處理。 oracle

  注:如果涉及到的表太多,不想一個一個表導出的話,那么就將這個庫exp出來,然后drop掉該模式(并drop掉該模式下所有的對象),然后重建該模式以及給出大小適當的表空間,然后將導出的模式導入回去。

關鍵詞標簽:oracle,mysql

相關閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數據庫實例的控制文件 誤刪Oracle數據庫實例的控制文件 為UNIX服務器設置Oracle全文檢索 為UNIX服務器設置Oracle全文檢索

相關下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數據處理 Oracle刪除表的幾種方法