恢復Oracle表空間的方法
學習Oracle時,你可能會遇到oracle表空間恢復問題,這裡將介紹Oracle表空間恢復問題的解決方法,在這裡拿出來和大家分享一下。
Oracle表空間恢復方案
一。使用者表空間
錯誤:
在啟動時
出現ora-01157,ora-01110或作業系統級錯誤例如ora-07360, 在關閉資料庫(使用shutdown
normal或shutdown immediate) 時將導致錯誤ora -01116,ora-01110以及作業系統級錯誤ora-07368
------>>比如下面的情況:
以下有兩種解決方案:
1.使用者的表空間可以被輕易地重建 即最近匯出的物件是可用的或表空間中的物件可以被輕易地重建等。在 這種情況下,最簡單的方法是offline並刪除該資料檔案,刪除表空間並 重建表空間以及所有的物件。
svrmgrl> startup mount
svrmgrl> alter database datafile filename offline drop;
svrmgrl> alter database open;
svrmgrl> drop tablespace tablespace_name including contents;
重建表空間及所有物件。
2.使用者的表空間不能夠被輕易地重建在大多數情況下,重建表空間是不可能及太辛苦的工作。方法是倒備份及做介質恢復。如果您的系統執行在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 模式
在這種情況下,均需進行介質恢復
二。臨時表空間
臨時表空間並不包含真正的資料,恢復的方法是刪除臨時表空間並重建即可。
三。表空間
如果備份不可用,則只能採用重建資料庫的方法
四。回滾表空間
有兩種情況:
1、資料庫已經完全關閉(使用shutdown immediate或shutdown命令)
1) 確認資料庫完全關閉
2) 修改init.ora檔案,註釋"rollback-segment"
3) svrmgrl> startup restrict mount
4) svrmgrl> alter database datafile filename offline drop;
5) svrmgrl> alter database open;
基於出現的結果:
"statement processed"
"ora-00604,ora-00376,ora-01110"
6) svrmgrl> shutdown immediate 修改init.ora檔案,增加如下一行: _corrupted_rollback_segments = (,…) svrmgrl> startup restrict
7) svrmgrl> drop tablespace tablespace_name including contents;
8) 重建表空間及回滾段
9) svrmgrl> alter system disable restricted session;
10) 修改init.ora檔案
2、資料庫未完全關閉(資料庫崩潰或使用shutdown abort命令關閉資料庫)
1) Oracle表空間恢復備份
2) svrmgrl> startup mount
3) svrmgrl> select file#,name,status from v$datafile; svrmgrl> alter database datafile filename online;
4) svrmgrl> select v1.group#,member,sequence#,first_change# >
from v$log v1,v$logfile v2 > where v1.group#=v2.group#;
5) svrmgrl> select file#,change# from v$recover_file;
6) svrmgrl> recover datafile filename;
7) svrmgrl> alter database open;
3、資料庫處於開啟狀態
1) 刪除回滾段和表空間
2) 重建表空間和回滾段
五。控制檔案恢復
1.所有的控制檔案均被破壞
將備份的控制檔案複製至原目錄下 對於raw device,則:
dd if=con.bak of=/dev/rdrd/drd1 seek=128
2.並非所有的控制檔案均被破壞
用其他的控制檔案啟動資料庫
------>>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1332710/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RMAN 表空間恢復Oracle
- Oracle RMAN 表空間的完全恢復Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- Oracle 11g RMAN恢復-只讀表空間的恢復Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- Oracle表空間時間點恢復技術TSPITROracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- rman恢復資料檔案 恢復表空間
- 【Oracle】rman 恢復只讀表空間資料庫Oracle資料庫
- SYSAUX表空間管理及恢復UX
- Oracle 11g RMAN恢復-只讀表空間的恢復(備份是在表空間只讀狀態下做的)Oracle
- 根據表空間的TSPITR恢復
- 表空間TSPITR恢復-實驗
- ORACLE 11g TSPITR恢復被刪除的表空間Oracle
- flashback database 恢復誤刪除的表空間。Database
- UNDO 表空間檔案損壞的恢復
- 恢復表空間到不同的ASM磁碟組ASM
- Oracle可恢復空間分配技術Oracle
- oracle8i誤刪除臨時表空間後的恢復Oracle
- (Les16 執行資料庫恢復)-表空間恢復資料庫
- 利用可恢復空間分配技術自動分配表空間
- oracle小知識點10--表空間時間點恢復(TSPITR)Oracle
- mysql無備份恢復-獨立表空間MySql
- system表空間檔案損壞----完全恢復
- 表空間級資料庫備份恢復資料庫
- 【RMAN】表空間基於時間點的RMAN恢復-TSPITR
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- 通過flashback database恢復被刪除的表空間Database
- 撤消表空間資料檔案丟失的恢復.
- Oracle 11g RMAN恢復-使用者誤刪除表空間Oracle
- RAC 恢復(備份後建立的表空間(leviton)恢復後會自動重建)
- DB2 使用表空間備份恢復庫DB2
- 【TSPITR】RMAN表空間基於時間點的自動恢復
- 關於oracle表空間的規劃方法Oracle
- 【物理熱備】(下)備份恢復系統表空間 手工備份恢復
- INDEX表空間檔案丟失或者損壞的恢復Index
- 只讀表空間的恢復問題--預備知識
- Oracle rman 備份與恢復 臨時表空間的檔案問題解決Oracle