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

您當(dāng)前所在位置:首頁(yè)數(shù)據(jù)庫(kù)Oracle → oracle或者mysql誤刪數(shù)據(jù)文件急救

oracle或者mysql誤刪數(shù)據(jù)文件急救

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

  當(dāng)誤刪除曾經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)文件*.ora或*.dbf后,oralce是無(wú)法正常進(jìn)入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數(shù)據(jù)庫(kù),oracle會(huì)打開(kāi)所有文件,并進(jìn)行一致性,所以會(huì)報(bào)上述錯(cuò)誤。所以oracle只進(jìn)入mount狀態(tài),這時(shí)oracle打開(kāi)控制文件,讀取database的結(jié)構(gòu)信息。

  mysql

  ·情況之一:數(shù)據(jù)庫(kù)沒(méi)有歸檔和備份

  linux

  如果redo.log記錄了該表空間對(duì)象的所有操作,并且沒(méi)有被其他內(nèi)容循環(huán)使用,則下面的語(yǔ)句是可以恢復(fù)的,但是實(shí)際應(yīng)用中這種理想狀態(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

  實(shí)際情況,無(wú)法依賴(lài)redo.log進(jìn)行恢復(fù)的,這種情況只能損失部分?jǐn)?shù)據(jù)換取數(shù)據(jù)庫(kù)的運(yùn)行正常。

  mysql

  實(shí)際情況會(huì)遇到如下問(wèn)題: 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: {<RET>=suggested | filename | AUTO | CANCEL} linux

  所以目前的是,將數(shù)據(jù)文件offline drop后,將數(shù)據(jù)庫(kù)open,然后查出哪些表在該數(shù)據(jù)文件所在的表空間上,檢查這些表是否正常,如果不正常的話,則導(dǎo)出這些表的數(shù)據(jù),然后在數(shù)據(jù)庫(kù)上刪 除表,然后將導(dǎo)出的數(shù)據(jù)再導(dǎo)入到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

  導(dǎo)出該表的數(shù)據(jù):

  mysql

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

  刪除該表:

  unix

  drop table XXX;

  ssh

  導(dǎo)入該表數(shù)據(jù):

  linux

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

  oracle

  這樣處理一定會(huì)損失部分?jǐn)?shù)據(jù)的。導(dǎo)入完畢以后,查看該表是否正常,如有特殊需要?jiǎng)t特殊處理。 oracle

  注:如果涉及到的表太多,不想一個(gè)一個(gè)表導(dǎo)出的話,那么就將這個(gè)庫(kù)exp出來(lái),然后drop掉該模式(并drop掉該模式下所有的對(duì)象),然后重建該模式以及給出大小適當(dāng)?shù)谋砜臻g,然后將導(dǎo)出的模式導(dǎo)入回去。

關(guān)鍵詞標(biāo)簽:oracle,mysql

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 Oracle中使用alter table來(lái)增加,刪除,修改列Oracle中使用alter table來(lái)增加,刪除,修改列oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫(kù)賬戶得到管理員權(quán)限使用低權(quán)限Oracle數(shù)據(jù)庫(kù)賬戶得到管理員權(quán)限Oracle對(duì)user的訪問(wèn)控制Oracle對(duì)user的訪問(wèn)控制

相關(guān)下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法ORACLE和SQL語(yǔ)法區(qū)別歸納(1)oracle grant 授權(quán)語(yǔ)句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限