資料庫UNDO異常及出現壞塊處理V

2021-09-24 17:23:40 字數 1763 閱讀 3723

(1)用spfile 建立pfile,然後修改引數:

#*.undo_tablespace='undotbs1'

#*.undo_management='auto'

#*.undo_tablespace

#*.undo_retention

undo_management='manual'

rollback_segments='system'

(2)用修改之後的pfile,重啟db

sql> startup mount pfile='f:/initorcl.ora' ;

(3)刪除原來的表空間,建立新的undo 表空間

sql> drop tablespace undotbs;

sql> create undo tablespace undotbs1 datafile '/u01/oradata/undotbs1.dbf' size 10m;

(4)關閉資料庫,修改pfile引數,然後用新的pfile建立spfile,在正常啟動資料庫。

*.undo_tablespace='undotbs1'

*.undo_management='auto'

#undo_management='manual'

#rollback_segments='system'

sql> shutdown immediate

ora-00376: file 15 cannot be read at this time

ora-01110: data file 15: '/rman/oradata/mat/undo2.dbf'

-- 修改引數檔案pfile加上如下兩個引數:

$ vi initmat.ora

*._allow_resetlogs_corruption=true

*._corrupted_rollback_segments=(_syssmu1$,_syssmu2$,_syssmu3$,_syssmu4$,_syssmu5$,_syssmu6$,_syssmu7$,_syssmu8$,_syssmu9$,_syssmu10$)

-- 儲存後用pfile啟動

sql> startup pfile=initmat.ora

-- 重新建立undo表空間

create undo tablespace undo1 datafile '/data/mat/undo1.dbf' size 100m

/-- 切換undo表空間

alter system set undo_tablespace=undo1  scope=both;

drop tablespace undo2 including contents and datafiles;

-- 再次查詢需要恢復的檔案,已經不存在了

sql> select * from v$recover_file;

no rows selected

-- 再次關閉資料庫,並重啟,沒有發現報錯。

sql> shutdown immediate

-- 把原來的引數進行修改,去掉隱含引數,再次啟動

sql> startup pfile=initmat.ora

sql> create spfile from pfile;

sql> shutdown immediate

sql> startup

資料庫壞塊的處理

當 oracle 資料庫出現壞塊時,oracle 會在警告日誌檔案 alert sid.log 中記錄壞塊的資訊 ora 01578 oracle data block corrupted file 7,block ora 01110 data file oracle1 oradata v920 o...

資料庫undo和redo

undo和redo是沒有關係的,不能相互取代,對於資料庫來說,只有有沒有undo 和有沒有redo的區別,不是有了undo就不能有redo,或者有了redo就不能有undo。到底用不用redo和undo是和steal no steal force no force策略相關的。你肯定是沒搞明白這四個策...

dataguard資料庫壞塊自動修復

在dg環境中資料庫的壞塊是可以自動修復的。主庫建立測試表 select distinct dbms rowid.rowid relative fno rowid dbms rowid.rowid block number rowid from scott.test dbms rowid.rowid ...