UNDO表空間資料檔案損壞處理方法

2021-04-30 08:25:40 字數 1566 閱讀 8996

undo表空間資料檔案損壞處理方法

問題描述: 當乙個回滾段表空間資料檔案丟失或損壞時,而且又指定了另外的回歸段表空間,此時資料庫可以正常開啟,查詢、插入、刪除資料等都沒有問題,當新增乙個表時,會提示如下錯誤:

ora-00604:遞迴sql級別1出現錯誤

ora-00376:此時無法讀取檔案 44

ora-01110:資料檔案44:'e/oradata/orcl/undotemp.ora'

具體解決步驟如下: 1、

先shutdown,以restrict模式開啟資料庫:

sql>startup restrict mount;

2、以offline drop選項刪除丟失或損壞的資料檔案:

sql>alter database datafile 44 offline drop;

3、開啟資料庫:

sql>alter database open;

4、修改initsid.ora的檔案,並且加入如下一行:

_corrupted_rollback_segments = (

,...,)

這個引數應當包含rollback_segments中損壞的表空間的所有的回滾段,例如:

_corrupted_rollback_segments = (_syssmu11$,_syssmu12$,_syssmu13$,_syssmu14$,_syssmu15$,_syssmu16$,_syssmu17$,_syssmu18$,_syssmu19$,_syssmu20$,_syssmu21$)

5、以restrict模式指定pfile開啟資料庫:

sql>startup restrict pfile="c:/oracle/product/10.2.0/db_1/database/initorcl.ora";

6、刪除掉損壞的資料檔案所屬的回滾段表空間:

sql>drop tablespace "undotemp" including contents and datafiles; 7

、重建回滾段表空間:

sql>create undo tablespace undotbs datafile 'e:/oradata/orcl/undotbs.dbf' size 100m reuse autoextend on;

sql>alter system set undo_tablespace=undotbs;

sql>drop tablespace undo0702 including contents;

sql>select * from dba_tablespaces;

8、在initsid.ora中把你重新建立的回滾段再一次包括進來,如:

undo_tablespace=undotbs

9、以該pfile再次重啟資料庫,一切正常,表建立成功。

類似問題參考**:

Undo表空間資料檔案損壞

undo表空間資料檔案和system表空間資料檔案都是資料庫的關鍵資料檔案,如果損壞會導致sql執行失敗,使用者無法登入,甚至例項崩潰等。同樣恢復undo表空間資料檔案也必須在資料庫mount狀態下進行。資料庫在執行過程中發現undo表空間資料檔案損壞,此時是無法正常關閉資料庫的 sql shutd...

移動表空間資料檔案

2011年5月31日 移動表空間資料檔案方法 一 首先啟用介質恢復即開啟歸檔模式,用sys使用者 如果已經開啟則省略該步驟 sql shutdown immediate 資料庫已經關閉。已經解除安裝資料庫。oracle 例程已經關閉。sql startup mount oracle 例程已經啟動。t...

ORA 01157 表空間資料檔案損壞需重建時

em控制台報錯如下 處理步驟 1 備份該資料檔案所在的表空間 tbs hy 的資料 exp pcs hs hn pcs jwzh tablespaces tbs hy file d jwzhpt oracle bak tbs hy.dmp log d jwzhpt oracle bak tbs hy...