ORACLE表空間恢復方案

2021-04-01 22:06:42 字數 3277 閱讀 8719

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" 轉(7)

"ora-00604,ora-00376,ora-01110"轉(6)

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) 恢復備份

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;

見一方案2-4

6) svrmgrl> recover datafile filename;

7) svrmgrl> alter database open;

3、資料庫處於開啟狀態

1) 刪除回滾段和表空間

2) 重建表空間和回滾段

4、oracle工程師提供處理

(2004/07/31北京sogo資料庫出問題錢海兵記錄)

1)在啟動引數中加入

_allow_resetlogs_corruption = true #強制啟動

_corrupted_rollback_segments=(fvip_rs2,fvip_rs3,所有回滾段定義)

注釋rollback_segments=(fvip_rs2,fvip_rs3,所有回滾段定義)

2)啟動資料庫

startup pfile=$oracle_home/dbs/initsid.ora mount

recover database until cancel

alter database open resetlogs

3)備份資料庫,重新建立資料庫

ORACLE表空間恢復方案

一 使用者表空間 錯誤 在啟動資料庫時出現ora 01157,ora 01110或作業系統級錯誤例如ora 07360,在關閉資料庫 使用shutdown normal或shutdown immediate 時將導致錯誤ora 01116,ora 01110以及作業系統級錯誤ora 07368 解決...

mysql 各種恢復 mysql 恢復方案

備份資料 mysqldump db name tables mysqldump database db1 db2 db3.mysqldump all database mysqldump user root p xm backup xm.sql以上指令,將xm 庫備份到xm.sql 檔案中。輸入指令...

oracle誤刪資料恢復方法

誤刪資料恢復 刪除表資料有三種方式 delete drop 和truncate delete誤刪除的解決方法 原理 利用oracle 提供的閃回方法,如果在刪除資料後還沒做大量的操作 只要保證被刪除資料的塊沒被覆寫 就可以利用閃回方式直接找回刪除的資料 具體步驟為 例如 誤刪除了 100條資料 刪除...