Oracle中繼資料對象Invalid修複過程

來源:互聯網
上載者:User

在Oracle的運行過程中,由於操作失誤可能會造成內部中繼資料的損壞,進而影響到系統的一些基礎功能和正常處理。一旦發生這種故障,對內部資料字典的重建就是我們需要進行的處理。

本篇從一個損壞故障為入手點,介紹了如何進行Oracle中繼資料對象的重建。

1、故障情境

一個朋友的測試庫最近出現很多“古怪”的錯誤,比如exp/imp操作異常中斷、pl/sql中中繼資料資訊無法展現和異常報錯。這種情況下,筆者向朋友索要的對應的alert_log記錄檔。結果發現很多錯誤資訊。

Sat Jun 23 06:36:37 2012

Errors in file /u01/diag/rdbms/wilson/wilson/trace/wilson_m001_3667.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-04063: package body "SYS.PRVT_HDM" has errors

ORA-06508: PL/SQL: could not find program unit being called: "SYS.PRVT_HDM"

ORA-06512: at line 1

(篇幅原因,有省略…..)

Sat Jun 23 06:53:39 2012

Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x34] [PC:0x92C0E13, kzpchkc()+4425] [flags: 0x0, count: 1]

Errors in file /u01/diag/rdbms/wilson/wilson/trace/wilson_ora_3619.trc (incident=12215):

ORA-07445: 出现异常é”误: æ ¸å¿ƒè½¬å‚¨ [kzpchkc()+4425] [SIGSEGV] [ADDR:0x34] [PC:0x92C0E13] [Address not mapped to object] []

Incident details in: /u01/diag/rdbms/wilson/wilson/incident/incdir_12215/wilson_ora_3619_i12215.trc

Sat Jun 23 06:53:40 2012

Trace dumping is performing id=[cdmp_20120623065340]

Sat Jun 23 06:53:45 2012

Sweep [inc][12215]: completed

Sweep [inc2][12215]: completed

Sat Jun 23 06:55:23 2012

ORA-942 encountered when generating server alert SMG-4120

ORA-942 encountered when generating server alert SMG-4121

如此類型的錯誤資訊,遍布在近幾天錯誤記錄檔中。但執行一些失敗的命令時(如desc),還會有異常錯誤資訊在日誌中展現。

在上面的錯誤記錄檔中,還有是關於MMON進程異常中斷之後,反覆重新啟動。

MMON進程是AWR報告庫收集進程,定期(每小時)收集系統狀態儲存在資料庫字典中。MMON異常中斷後反覆重啟,似乎意味著AWR收集受到影響。

和朋友聯絡,擷取進一步資訊。

當日的AWR snapshot只有兩條,看來真正出現了問題。同時,發現自動作業中的sys.standard包失效(invalid),合并的還有很多包和方法失效。

經過朋友回憶,應該是執行了exp/imp的重設指令碼catexp.sql。看來是該指令碼在執行中,破壞了內部的字典資訊和資料,導致了一系列問題。

2、問題解決準備

發現了問題的根源,我們就可以有解決問題的基本思路:重新建立資料字典視圖和程式對象。我們在Oracle程式安裝目錄中,均有儲存建庫指令碼和程式,所以可以調用對應指令碼,來更新資料字典和程式對象。

由於處理資訊比較敏感,所以在處理之前,要進行一次完全備份。筆者選擇停機冷備的方法。

首先,定位控制檔案和資料檔案位置資訊,準備拷貝。

[root@ www.bkjia.com /]# chown -R oracle:oinstall backup

[root@ www.bkjia.com /]# ls -l | grep backup

drwxr-xr-x 2 oracle oinstall 4096 Jun 25 20:23 backup

 

--控制檔案

SQL> select 'cp '||name||' /backup' from v$controlfile;

'CP'||NAME||'/BACKUP'

--------------------------------------------------------------------------------

cp /u01/app/oradata/ORA11G/controlfile/o1_mf_7vpyvypo_.ctl /backup

cp /u01/app/flash_recovery_area/ORA11G/controlfile/o1_mf_7vpyw16z_.ctl /backup

 

--資料檔案

SQL> select 'cp '||file_name||' /backup' from dba_data_files;

'CP'||FILE_NAME||'/BACKUP'

--------------------------------------------------------------------------------

cp /u01/app/oradata/ORA11G/datafile/o1_mf_users_7vpyc2xd_.dbf /backup

cp /u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_7vpyc2py_.dbf /backup

cp /u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_7vpyc2hb_.dbf /backup

cp /u01/app/oradata/ORA11G/datafile/o1_mf_system_7vpyc1x7_.dbf /backup

之後,關機將檔案拷貝到備份目錄上。

[oracle@bsplinux ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Mon Jun 25 20:42:06 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL>

使用產生指令碼語句,實現拷貝。

[oracle@bsplinux backup]$ ls -l

total 1720628

-rw-r----- 1 oracle oinstall  9748480 Jun 25 20:44 o1_mf_7vpyvypo_.ctl

-rw-r----- 1 oracle oinstall  9748480 Jun 25 20:44 o1_mf_7vpyw16z_.ctl

-rw-r----- 1 oracle oinstall 723525632 Jun 25 20:55 o1_mf_sysaux_7vpyc2hb_.dbf

-rw-r----- 1 oracle oinstall 744497152 Jun 25 21:08 o1_mf_system_7vpyc1x7_.dbf

-rw-r----- 1 oracle oinstall 267395072 Jun 25 20:47 o1_mf_undotbs1_7vpyc2py_.dbf

-rw-r----- 1 oracle oinstall  5251072 Jun 25 20:45 o1_mf_users_7vpyc2xd_.dbf

冷備份完成。

注意:在進行所有的修複操作前,如果有可能,一定要進行資料現場保留備份!這樣起碼可以做到不會將情況惡化。

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.