【蓋國強】成功恢復案例:解決字典表誤Truncate故障
昨天,成功幫助客戶恢復了一個故障資料庫。
故障的原因是技術人員將資料庫中的幾個資料字典表Truncate掉,這直接導致了資料庫不可用。
資料庫環境為Oracle 9.2.0.7 RAC環境。由於資料庫的事務量巨大,所以資料庫沒有備份。
現場檢查確認,主要被截斷的表有這樣一些
關於IDL_UB1$表,我以前討論過,這是非常重要的字典表,一旦出現故障,資料庫會出現大量的ORA-00600錯誤,所有事務不能進行:
ORA-600 17069錯誤是最頭疼的,客戶當時資料庫的一個跟蹤日誌已經暴漲到5G左右。
IDL系列字典表是記錄資料庫物件編譯資訊的,丟失了其中的資料,所有過程、Package等都將無法執行。
摘引一點關於這幾個字典表作用的說明:
更嚴重的情況可能會導致大量系統DBMS包失效,其重新編譯將更加複雜。
恢復進行了6個小時,成功幫助使用者恢復了資料庫,消除了所有ORA-600錯誤。
恢復最主要的是通過執行相關的指令碼,重建和重新編譯所有Procedure/Trigger/Package等物件,重新生成這些物件的DIANA和so-code m-code,這些主要的指令碼包括catlog.sql,catproc.sql等。
當然最重要的是,一些ORA-00600錯誤需要解決,這可能會花費大量的時間。
這一案例的恢復過程並不重要,重要的是DBA應該學會永遠不要讓我們的資料庫置於這樣的危險境地。
DBA四大守則之一:備份重於一切。
DBA的基本素質之一:嚴謹。
-The End-
作者:eygle | English Version 【版權宣告:轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告】
連結:http://www.eygle.com/archives/2008/01/truncate_dict_recovery.html
故障的原因是技術人員將資料庫中的幾個資料字典表Truncate掉,這直接導致了資料庫不可用。
資料庫環境為Oracle 9.2.0.7 RAC環境。由於資料庫的事務量巨大,所以資料庫沒有備份。
現場檢查確認,主要被截斷的表有這樣一些
SQL> select object_name,object_type from dba_objects where object_name like 'IDL%';
OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------
IDL_CHAR$ TABLE
IDL_SB4$ TABLE
IDL_UB1$ TABLE
IDL_UB2$ TABLE
關於IDL_UB1$表,我以前討論過,這是非常重要的字典表,一旦出現故障,資料庫會出現大量的ORA-00600錯誤,所有事務不能進行:
ORA-00600: internal error code, arguments: [17069], [0xC0000000DDDFA690], [], [], [], [], [], []
ORA-600 17069錯誤是最頭疼的,客戶當時資料庫的一個跟蹤日誌已經暴漲到5G左右。
IDL系列字典表是記錄資料庫物件編譯資訊的,丟失了其中的資料,所有過程、Package等都將無法執行。
摘引一點關於這幾個字典表作用的說明:
IDL_UB1$ is one of four tables that hold compiled PL/SQL code:
IDL_UB1$
IDL_CHAR$
IDL_UB2$
IDL_SB4$
"PL/SQL is based on the programming language Ada. As a result, PL/SQL uses a
variant of Descriptive Intermediate Attributed Notation for Ada (DIANA), which
is a tree-structured intermediate language. It is defined using a meta-notation
called Interface Definition Language (IDL). DIANA provides for communication
internal to compilers and other tools.
"At compile time, PL/SQL source code is translated into machine-readable
m-code.Both the DIANA and m-code for a procedure or package are stored in the
database.At run time, they are loaded into the shared (memory) pool. The DIANA is
used to compile dependent procedures; the m-code is simply executed."
These four tables hold the DIANA and the so-code m-code. I think "m-code" is
short for machine-dependent byte code but there is a sizable machine-indenpendent part as well. If you have a look at sql.bsq, you can see
that Oracle documents the "type" column of these tables as follows:
part number not null,
/* part: 0 = diana, 1 = portable pcode, 2 = machine-dependentpcode */
更嚴重的情況可能會導致大量系統DBMS包失效,其重新編譯將更加複雜。
恢復進行了6個小時,成功幫助使用者恢復了資料庫,消除了所有ORA-600錯誤。
恢復最主要的是通過執行相關的指令碼,重建和重新編譯所有Procedure/Trigger/Package等物件,重新生成這些物件的DIANA和so-code m-code,這些主要的指令碼包括catlog.sql,catproc.sql等。
當然最重要的是,一些ORA-00600錯誤需要解決,這可能會花費大量的時間。
這一案例的恢復過程並不重要,重要的是DBA應該學會永遠不要讓我們的資料庫置於這樣的危險境地。
DBA四大守則之一:備份重於一切。
DBA的基本素質之一:嚴謹。
-The End-
作者:eygle | English Version 【版權宣告:轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告】
連結:http://www.eygle.com/archives/2008/01/truncate_dict_recovery.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-232326/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- zt_eygle成功恢復案例:解決字典表誤Truncate故障_diana_ada
- 恢復案例:熱備期間例項故障解決
- Oracle Truncate表恢復(ODU)Oracle
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- truncate表後恢復方法總結
- Oracle ASM故障資料恢復解決方案OracleASM資料恢復
- 【EM】資料表誤刪除故障模擬及恢復
- 使用ODU恢復被truncate表的資料
- truncate table 誤刪除資料後的恢復
- TRUNCATE資料恢復資料恢復
- 伺服器資料恢復成功案例(磁碟陣列恢復)伺服器資料恢復陣列
- Netapp 資料恢復案例;誤刪除所有lun解決方案APP資料恢復
- 使用hellodba的工具恢復truncate表的資料
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- 恢復被執行truncate table的表資料
- 使用ODU恢復oracle被truncate的表資料Oracle
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- logminer恢復誤覆蓋更新的資料
- 成功案例分享-伺服器3塊硬碟離線恢復成功伺服器硬碟
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 伺服器資料恢復成功案例;分割槽不能掛載恢復方法伺服器資料恢復
- 伺服器資料恢復成功案例+伺服器資料恢復原理伺服器資料恢復
- 【伺服器資料恢復】RAID5崩潰後強制上線導致故障的資料恢復案例伺服器資料恢復AI
- 伺服器磁碟陣列資料恢復成功案例伺服器陣列資料恢復
- 東芝硬碟的故障表現及資料恢復硬碟資料恢復
- postgreSQL 恢復至故障點 精準恢復SQL
- 【儲存資料恢復】EqualLogic PS系列儲存磁碟故障的資料恢復案例資料恢復
- 又一個案例:光纖儲存資料恢復成功資料恢復
- 惠普塔式伺服器崩潰資料恢復成功案例伺服器資料恢復
- 表資料被誤操作的恢復
- Oracle恢復誤操作刪除掉的表Oracle
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle
- 【故障解決】OGG-00446 錯誤解決
- 6_Oracle truncate異常恢復之bbed修復Oracle
- 7_Oracle truncate異常恢復之plsql修復OracleSQL