oracle數據文件被誤刪除后的災難處理方法
steps:
當Oracle數據文件被誤刪除之后的處理辦法!!
1、關閉數據庫:
sqlplus "/as sysdba";
sqlplus>shutdown abort;
2、裝載數據庫
sqlplus>startup mount;
3、刪除無效的數據庫文件
sqlplus>alter database datafile '/home/oracle/survey/survey.dbf' offline drop
sqlplus>alter database datafile '/home/oracle/survey/surveytemp.dbf' offline drop
4、打開數據庫
sqlplus>alter database open;
5、刪除無效的表空間
sqlplus> drop tablespace surevy including contents;
sqlplus> drop tablespace surevytemp including contents;
---dtl----
表空間 GTI40_DATA01 數據文件GTI40_DATA01.dbf被我刪除了
我再運行drop tablespace qwer
會報錯
ORA-01116: 打開數據庫文件48時出錯
ORA-01110: 數據文件 48: '/data/GTI40_DATA01.dbf'
ORA-27041: 無法打開文件
Linux Error: 2: No such file or directory
Additional information: 3
我怎么才能刪除這個表空間
現在我無法在建立這個空間(在線等急!!!!!!!!)
簡單的問題搞這么復雜?
按下面步驟做即可:
1.shutdown immediate
2.startup mount
3.alter database datafile 'xxx' offline drop;
4.alter database open
5.drop tablespace xxxx including contents and datafiles;
先說明一下alter database datafile ... offline drop:
在非歸檔模式下,可以使用... offline drop,在歸檔模式下,使用... offline. 這個命令的意思並不是從表空間將這個數據文件徹底刪除,而是說將這個數據文件“凍結”住:它的scn不在變化,不會再向它寫入任何數據;但是原有存在這個文件中對象和數據還可以繼續使用。因此在使用這個命令后,通過修改控制文件將它刪除,數據庫在啟動時就會報文件丟失的錯誤,並且會在數據字典中產生一個MISGXXXXX的紀錄。因此,以一個數據文件是無法被直接從數據庫中刪除掉的。
如果需要減少表空間的數據文件,可以采用以下辦法:
export除表空間的內容:exp ... tablespaces=xxx;
使用include content子句刪除表空間:drop tablespace xxx include content;
重見表空間,使之不包括需要去除掉的數據文件;
import表空間的所有數據對象。
re: 徹底將一個數據文件從表空間中刪除 [回復]
呵呵,在10g R2的drop empty datafile之前,事實上是無法對單個數據文件進行刪除的,除非你更改數據字典或者將表空間刪除。如果按你上面的步驟操作,你查dba_data_files里面肯定會有那個數據文件的記錄,只是標識為D:ORACLEORA92DATABASEMISSING00005這類的文件,事實上是由於你將控制文件中該數據文件的信息刪除掉了,而數據字典里面還有該文件的信息,現在對應不上,因此標識為這種奇怪的文件名,表示該數據文件需要恢復的。
當Oracle數據文件被誤刪除之后的處理辦法!!
1、關閉數據庫:
sqlplus "/as sysdba";
sqlplus>shutdown abort;
2、裝載數據庫
sqlplus>startup mount;
3、刪除無效的數據庫文件
sqlplus>alter database datafile '/home/oracle/survey/survey.dbf' offline drop
sqlplus>alter database datafile '/home/oracle/survey/surveytemp.dbf' offline drop
4、打開數據庫
sqlplus>alter database open;
5、刪除無效的表空間
sqlplus> drop tablespace surevy including contents;
sqlplus> drop tablespace surevytemp including contents;
good:
oracle數據文件被誤刪除后的災難處理方法- -
Tag: oracle datafile 數據文件 誤刪除 災難
環境:Red Hat Linux 7.2 SMP
數據庫:Oracle 8.1.7
起因,一同事建立了一個表空間並建立一張表后發現表空間未用到直接刪除了那個數據文件.其操作如下:
create tablespace r_csh_20051001 datafile '/webdata/dbdata/ry/csh20051001.dat' size 50M autoextend on next 500M default storage (initial 10m NEXT 10m MINEXTENTS 1 PCTINCREASE 0);
create table r_csh(
UsedDate char(26) default '',
CardNumber char(26) default '',
UserNumber char(16) default '',
Credit number(5) default 0,
UserArea number(6) default 0,
CardArea number(6) default 0,
ValiDdate char(26) default ''
);
rm /webdata/dbdata/ry/csh20051001.dat
經過這一操作后,數據庫出現連接失敗,發現數據庫已經停止了.
查看oracle的log顯示:
Errors in file /oracle/admin/webdb/bdump/ckpt_31638.trc:
ORA-01110: data file 63: '/webdata/dbdata/ry/csh20051001.dat'
ORA-01115: IO error reading block from file 63 (block # 1)
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode
ORA-01116: error in opening database file 63
ORA-01110: data file 63: '/webdata/dbdata/ry/csh20051001.dat'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Fri Oct 21 15:31:47 2005
CKPT: terminating instance due to error 1242
Instance terminated by CKPT, pid = 31638
Fri Oct 21 15:55:09 2005
想要把oracle重新啟動,發現也啟動不了:
SQL> shutdown immediate;
SQL> startup;
ORACLE instance started.
Total System Global Area 40104096 bytes
Fixed Size 73888 bytes
Variable Size 23080960 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
ORA-01122: database file 63 failed verification check
ORA-01110: data file 63: '/webdata/dbdata/ry/csh20051001.dat'
ORA-01251: Unknown File Header Version read for file number 63
分析問題:
因為數據文件在沒有被offline的情況下實物理刪除了,導致oracle的數據不一致,因此啟動失敗.
解決方法:
lsnrctl stop
sqlplus internal
SQL> shutdown abort
SQL> startup mount
SQL> alter database datafile '/webdata/dbdata/ry/csh20051001.dat' offline drop;
SQL> alter database open;
SQL> drop tablespace r_csh_20051001;
lsnrctl start
其中省略了屏幕輸出內容.
小結:oracle數據文件(datafile)被誤刪除后沒有恢復的辦法,只能把該數據文件offline后drop掉
這是我們的實際操作記載!