之前介紹過Oracle表空間恢復,這裡在向大家詳細介紹重建Oracle表空間之前,首先讓大家了解下用戶表空間的錯誤,然後全面介紹重建Oracle表空間。
錯誤:
在啟動數據庫時出現ORA-01157,ORA-01110或操作系統級錯誤例如ORA-07360,在關閉數據庫(使用shutdown normal或shutdown immediate) 時將導致錯誤ORA-01116,ORA-01110以及操作系統級錯誤ORA-07368
以下有兩種解決方案:
1.用戶的表空間可以被輕易地重建
即最近導出的對象是可用的或表空間中的對象可以被輕易地重建等.在這種情況下,最簡單的方法是offline並刪除該數據文件,刪除表空間並重建Oracle表空間以及所有的對象.
svrmgrl> startup mount
svrmgrl> alter database datafile 'filename' offline drop;
svrmgrl> alter database open;
svrmgrl> drop tablespace tablespace_name including contents;
重建Oracle表空間及所有對象.
2.用戶的表空間不能夠被輕易地重建
在大多數情況下,重建Oracle表空間是不可能及太辛苦的工作.方法是倒備份及做介質恢復.如果您的系統運行在NOARCHIVELOG模式下,則只有丟失的數據在online redo log中方可被恢復。步驟如下:
1)Restore the lost datafile from a backup
2)svrmgrl> startup mount
3)svrmgrl> select v1.group#,member,sequence#,first_change#
◆from v$log v1,v$logfile v2
◆where v1.group#=v2.group#;
4)如果數據庫運行在NOARCHIVELOG模式下則:
svrmgrl> select file#,change# from v$recover_file;
如果 CHANGE# 大於最小的FIRST_CHANGE#則數據文件可以被恢復。
如果 CHANGE# 小於最小的FIRST_CHANGE#則數據文件不可恢復。 恢復最近一次的全備份或采用方案一.
5)svrmgrl> recover datafile filename;
6)確認恢復成功
7)svrmgrl> alter database open resetlogs;
3.只讀表空間無需做介質恢復,只要將備份恢復即可.唯一的例外是:
◆表空間在最後一次備份後被改為read-write 模式
◆表空間在最後一次備份後被改為read-only 模式
◆在這種情況下,均需進行介質恢復