(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 ...