Oracle___診斷案例__資料庫的exp故障

seagull76發表於2007-03-09

2006年11月6日到某水力廳,使用者的資料庫無法做export.

[@more@]

1)環境調查
作業系統 windows 2003 server
資料庫 oracle9207 standard版本
IP地址 10.44.21.7

2)執行exp,果然報錯

Message 206 not found; No message file for product=RDBMS, facility=EXP: Release
9.2.0.1.0 - Production on Mon Nov 6 14:05:47 2006

Copyright (c) 1982, 2002, Oracle

Invalid format of Export utility name

Verify that ORACLE_HOME is properly set

Export terminated unsuccessfully

EXP-00000: Message 0 not found; No message file for product=RDBMS, facility=EXP

3)檢查了oracle_home,沒有問題啊,唉,搞了好久,試驗了老半天,做各種各樣的試驗,最後分析總結,

肯定是exp工具本身的問題,上網找帖子,發現可能是$oracle_homerdbmsadmin下面少檔案,和其它機器的資料庫一比對,果然少了一些檔案,於是將同一版本的資料庫的該目錄下的expus.msb,expzhs.msb,impus.msb,impzhs.msb考到這個目錄下,哈哈,此時exp可以用了,但報了另外一個錯:

Export: Release 9.2.0.7.0 - Production on 星期一 11月 6 15:52:14 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


連線到: Oracle9i Release 9.2.0.7.0 - Production
JServer Release 9.2.0.7.0 - Production
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的使用者...
. 正在匯出 pre-schema 過程物件和操作
. 正在匯出使用者 SCOTT 的外部函式庫名稱
. 匯出 PUBLIC 型別同義詞
. 匯出私有型別同義詞
. 正在匯出使用者 SCOTT 的物件型別定義
EXP-00008: 遇到 ORACLE 錯誤 942
ORA-00942: 表或檢視不存在
EXP-00024: 未安裝匯出檢視,請通知您的 DBA
EXP-00000: 匯出終止失敗

4)上網一查,發現還要執行catexp.sql,我納悶了,怎麼回事?原來該資料庫曾經被升級過,nnd,不知哪個混蛋升級的,沒有執行相關的指令碼

5)執行catexp.sql指令碼,然後再執行exp,又報錯:

連線到: Oracle9i Release 9.2.0.7.0 - Production
JServer Release 9.2.0.7.0 - Production
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在匯出 pre-schema 過程物件和操作
. 正在匯出使用者 SCOTT 的外部函式庫名稱
. 匯出 PUBLIC 型別同義詞
. 匯出私有型別同義詞
. 正在匯出使用者 SCOTT 的物件型別定義
即將匯出 SCOTT 的物件 ...
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出群集定義
EXP-00056: 遇到 ORACLE 錯誤 19206
ORA-19206: 用於查詢或 REF CURSOR 引數的值無效
ORA-06512: 在"SYS.DBMS_XMLGEN", line 83
ORA-06512: 在"SYS.DBMS_METADATA", line 345
ORA-06512: 在"SYS.DBMS_METADATA", line 410
ORA-06512: 在"SYS.DBMS_METADATA", line 449
ORA-06512: 在"SYS.DBMS_METADATA", line 1156
ORA-06512: 在"SYS.DBMS_METADATA", line 1141
ORA-06512: 在line 1
EXP-00000: 匯出終止失敗

6)執行catmeta.sql指令碼,再執行exp,又報錯:

連線到: Oracle9i Release 9.2.0.7.0 - Production
JServer Release 9.2.0.7.0 - Production
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的使用者...
. 正在匯出 pre-schema 過程物件和操作
. 正在匯出使用者 SCOTT 的外部函式庫名稱
. 匯出 PUBLIC 型別同義詞
. 匯出私有型別同義詞
. 正在匯出使用者 SCOTT 的物件型別定義
即將匯出 SCOTT 的物件 ...
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出群集定義
. 即將匯出 SCOTT 的表透過常規路徑 ...
. . 正在匯出表 BONUS 0 行被匯出
. . 正在匯出表 DEPT 4 行被匯出
EXP-00056: 遇到 ORACLE 錯誤 904
ORA-00904: "SYS"."DBMS_EXPORT_EXTENSION"."FUNC_INDEX_DEFAULT": 無效的識別符號
. . 正在匯出表 EMP 14 行被匯出
EXP-00056: 遇到 ORACLE 錯誤 904
ORA-00904: "SYS"."DBMS_EXPORT_EXTENSION"."FUNC_INDEX_DEFAULT": 無效的識別符號
. . 正在匯出表 SALGRADE 5 行被匯出
. 正在匯出同義詞
. 正在匯出檢視
. 正在匯出儲存的過程
. 正在匯出運算子
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 正在匯出索引型別
. 正在匯出點陣圖, 功能性索引和可擴充套件索引
. 正在匯出後期表活動
. 正在匯出實體化檢視
. 正在匯出快照日誌
. 正在匯出作業佇列
. 正在匯出重新整理組和子組
. 正在匯出維
. 正在匯出 post-schema 過程物件和操作
. 正在匯出統計
匯出成功終止,但出現警告。

6)於是再執行了catproc.sql指令碼,這會可以成功匯出了

7)正高興準備收工時,此時刪除測試匯出匯入的使用者時,出現嚴重錯誤:

SQL> drop user tempuser1;
drop user tempuser1
*
ERROR 位於第 1 行:
ORA-01001: 無效的遊標
ORA-00600: 內部錯誤程式碼,引數: [qmxiUnpPacked2], [121], [], [], [], [], [], []

8)我暈死了,這下可頭大了,都不能刪除使用者了,這可咋整,做最後冒險

shutdown immediate
startup migrate
@..../catpatch.sql (執行這個sql之前,一定要保證一些引數必須滿足要求,比如share pool,否則一定會報錯)
執行了半個多小時,終於沒有報錯的情況下執行完。

9)此時終於可以刪除使用者了,也可以正常匯出匯入了,nnd,終於給那個升級該庫的混蛋擦完了屁股!

收工回家了,搞定這個問題,花了我8個小時啊:,還是小有成就感的:)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8861952/viewspace-903678/,如需轉載,請註明出處,否則將追究法律責任。

相關文章