Oralce 表空間損壞處理

2021-05-08 03:56:41 字數 2730 閱讀 9065

一)使用者表空間

錯誤: 在啟動資料庫時出現ora-01157,ora-01110或作業系統級錯誤例如ora-07360, 在關閉資料庫(使用shutdown normal或shutdown immediate) 時將導致錯誤ora -01116,ora-01110以及作業系統級錯誤ora-07368

解決: 以下有兩種解決方案:

1.使用者的表空間可以被輕易地重建

即最近匯出的物件是可用的或表空間中的物件可以被輕易地重建等.

在這種情況下,最簡單的方法是offline並刪除該資料檔案,刪除表空間並重建表空間以及所有的物件.

sql> startup mount

sql> alter database datafile filename offline drop;

sql> alter database open;

sql> drop tablespace tablespace_name including contents;

重建表空間及所有物件.

2.使用者的表空間不能夠被輕易地重建

在大多數情況下,重建表空間是不可能及太辛苦的工作.方法是倒備份及做介恢復.

如果您的系統執行在noarchivelog模式下,則只有丟失的資料 在online redo log中方可被恢復。

步驟如下:

1)restore the lost datafile from a backup

2)sql> startup mount

3)sql> select v1.group#,member,sequence#,first_change# > from v$log v1,v$logfile v2 > where v1.group#=v2.group#;

4)如果資料庫執行在noarchivelog模式下則:

sql> select file#,change# from v$recover_file;

如果 change# 大於最小的first_change#則資料檔案可以被恢復。

如果 change# 小於最小的first_change#則資料檔案不可恢復。

恢復最近一次的全備份或採用方案一.

5)sql> recover datafile filename;

6)確認恢復成功

7)sql> alter database open resetlogs;

3.唯讀表空間無需做介質恢復,只要將備份恢復即可.

唯一的例外是: 表空間在最後一次備份後被改為read-write 模式 表空間在最後一次備份後被改為read-only 模式 在這種情況下,均需進行介質恢復

二)臨時表空間

臨時表空間並不包含真正的資料,恢復的方法是刪除臨時表空間並重建即可.

三)系統表空間

如果備份不可用,則只能採用重建資料庫的方法

四)回滾表空間 有兩種情況:

1、資料庫已經完全關閉(使用shutdown immediate或shutdown命令)

1) 確認資料庫完全關閉

2) 修改init.ora檔案,注釋"rollback-segment"

3) sql> startup restrict mount

4) sql> alter database datafile filename offline drop;

5) sql> alter database open; 基於出現的結果: "statement processed" 轉(7) "ora-00604,ora-00376,ora-01110"轉(6)

6) sql> shutdown immediate 修改init.ora檔案,增加如下一行: _corrupted_rollback_segments = (,...) sql> startup restrict

7) sql> drop tablespace tablespace_name including contents;

8) 重建表空間及回滾段

9) sql> alter system disable restricted session;

10) 修改init.ora檔案

2、資料庫未完全關閉(資料庫崩潰或使用shutdown abort命令關閉資料庫)

1) 恢復備份

2) sql> startup mount

3) sql> select file#,name,status from v$datafile; sql> alter database datafile filename online;

4) sql> select v1.group#,member,sequence#,first_change# > from v$log v1,v$logfile v2 > where v1.group#=v2.group#;

5) sql> select file#,change# from v$recover_file; 見一方案2-4

6) sql> recover datafile filename;

7) sql> alter database open;

3、資料庫處於開啟狀態

1) 刪除回滾段和表空間

2) 重建表空間和回滾段

五)控制檔案恢復

1.所有的控制檔案均被破壞 將備份的控制檔案拷貝至原目錄下 對於raw device,則: dd if='con.bak' of='/dev/rdrd/drd1' seek=128

2.並非所有的控制檔案均被破壞 用其他的控制檔案啟動資料庫

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

undo表空間資料檔案損壞處理方法 問題描述 當乙個回滾段表空間資料檔案丟失或損壞時,而且又指定了另外的回歸段表空間,此時資料庫可以正常開啟,查詢 插入 刪除資料等都沒有問題,當新增乙個表時,會提示如下錯誤 ora 00604 遞迴sql級別1出現錯誤 ora 00376 此時無法讀取檔案 44 o...

undo表空間損壞

操作如下 sqlplus as sysdba 繼續執行命令 alter database open 例項終止。強制斷開連線 recover database recover datafile 1 recover datafile 2 系統提示 介質恢復成功 以為恢復成功就,直接,startup fo...

oralce 的表空間的建立

建立表空間 create smallfile tablespace 表空間名 datafile d oracle product 10.2.0 oradata oracle安裝路徑 表空間名 size 500m reuse autoextend on next 512k maxsize unlimi...