最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Oracle]解析在沒有備份的情況下undo損壞怎么辦

來源:懂視網 責編:小OO 時間:2020-11-09 13:50:07
文檔

Oracle]解析在沒有備份的情況下undo損壞怎么辦

Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下 如果Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,不過如果沒有備份。Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下。
推薦度:
導讀Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下 如果Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,不過如果沒有備份。Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下。

Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下 如果Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,不過如果沒有備份

Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下

如果Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,不過如果沒有備份,可以采用一種非常規(guī)的手段(利用Oracle的隱藏參數),如果此時undo包含未提交的事務,會造成一點點的數據丟失(一般都是可忍受的),如果沒有未提交的事務,則不會有數據丟失。其主要步驟有:

1. 修改undo表空間管理為手動;
2. 設置隱藏參數(_offline_rollback_segments或_corrupted_rollback_segments)標識受影響的回滾段,使Oracle忽略其上的未提交事務;
3. 手動刪除受影響的回滾段和undo表空間,然后重建新的undo表空間;
4. 還原undo表空間管理為自動。

實驗如下:
Step 1.
如果undo數據文件損壞,數據庫只能到mount狀態(tài),open時會出現以下錯誤:
ORA-01157: cannot identify/lock data file 14 - see DBWR trace file
ORA-01110: data file 14: 'I:INTEL_DATAO06DMS0UNDO1.O06DMS0'
說明該undo文件已經損壞或丟失,,把該文件offline之后就可以打開數據庫了:
SQL> alter database datafile 'I:INTEL_DATAO06DMS0UNDO1.O06DMS0' offline drop;
SQL> alter database open;
打開數據庫的目的是為了找出受影響的回滾段:
SQL> select segment_name,status from dba_rollback_segs;

SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
_SYSSMU10_1201331463$ OFFLINE
_SYSSMU9_2926456744$ OFFLINE
_SYSSMU8_640224757$ OFFLINE
_SYSSMU7_3984293596$ OFFLINE
_SYSSMU6_3694658906$ OFFLINE
_SYSSMU5_3475919656$ OFFLINE
_SYSSMU4_168502732$ OFFLINE
_SYSSMU3_1987193959$ OFFLINE
_SYSSMU2_3908286755$ OFFLINE
_SYSSMU1_3281912951$ OFFLINE

SQL> show parameter undo

NAME TYPE VALUE
------------------------------------ ----------- -------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string undo1
關閉數據庫:
SQL> shutdown immediate;

Step 2.
創(chuàng)建一個臨時的pfile:
SQL> create pfile='H:initO06DMS0.ora' from spfile;
修改pfile如下:
*.undo_management='manual' -- undo表空間管理方式修改為手動
*.undo_tablespace='undo2' --指定一個新的undo表空間
*._offline_rollback_segments=('_SYSSMU10_1201331463$','_SYSSMU9_2926456744$','_SYSSMU8_640224757$','_SYSSMU7_3984293596$','_SYSSMU6_3694658906$','_SYSSMU5_3475919656$','_SYSSMU4_168502732$','_SYSSMU3_1987193959$','_SYSSMU2_3908286755$','_SYSSMU1_3281912951$') --把所有受影響的回滾段都列在這里
并以改pfile重新啟動數據庫:
SQL> startup pfile='H:initO06DMS0.ora'

Step 3.
手動刪除受影響的回滾段:
SQL>drop rollback segment "_SYSSMU10_1201331463$";
SQL>drop rollback segment "_SYSSMU9_2926456744$";
SQL>drop rollback segment "_SYSSMU8_640224757$";
SQL>drop rollback segment "_SYSSMU7_3984293596$";
SQL>drop rollback segment "_SYSSMU6_3694658906$";
SQL>drop rollback segment "_SYSSMU5_3475919656$";
SQL>drop rollback segment "_SYSSMU4_168502732$";
SQL>drop rollback segment "_SYSSMU3_1987193959$";
SQL>drop rollback segment "_SYSSMU2_3908286755$";
SQL>drop rollback segment "_SYSSMU1_3281912951$";
手動刪除舊的undo表空間:
SQL> drop tablespace undo1 including contents;
重建新的undo表空間:
SQL> create undo tablespace undo2 datafile 'I:INTEL_DATAO06DMS0UNDO2.O06DMS0' size 100m;
創(chuàng)建新的spfile,覆蓋舊的spfile:
SQL> create spfile from pfile='H:initO06DMS0.ora';
關閉數據庫:
SQL> shutdown immediate;

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Oracle]解析在沒有備份的情況下undo損壞怎么辦

Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下 如果Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,不過如果沒有備份。Oracle在運行中很不幸遇到undo損壞,當然最好的方法是完全恢復,但如果是在沒有備份的情況下undo損壞怎么辦?以下就為大家介紹出現這種情況的解決辦法,需要的朋友參考下。
推薦度:
標簽: 沒有 備份 損壞
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top