關於Oracle Exp-00003問題的解決方案 前天在導資料的時候發生了Exp-00003的錯誤,以前也遇到過這樣的問題,當時的解決方案是到資料庫伺服器本機上導,問題解決了,但是這次是從oracle 9.2.0.1.0用戶端上匯出(而資料庫伺服器是10.2.0.1.0),要求是用9.2.0.1.0的export匯出,因為匯出的DMP檔案要匯入到9.2.0.1.0上,因此到本機上匯出的方法行不通,經過尋找相應的文檔問題解決了,下面把解決方案作個記錄。 D:\hanganbuild>exp hangyun/hangyun@HANGAN100 file=c:\0425.dmp tables=sys_news Export: Release 9.2.0.1.0 - Production on 星期三 4月 25 13:24:34 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集 即將匯出指定的表通過常規路徑 ...
. . 正在匯出表 SYS_NEWS
EXP-00003: 未找到段 (4,99363) 的儲存定義
匯出成功終止,但出現警告。 遇到這樣的情況解決的辦法有兩個:一個就是上面提到的到伺服器本機上匯出,但這時的DMP檔案會和伺服器本機上的EXPORT版本一致。 第二種方法就是更改資料庫伺服器端的oracle系統的視圖定義: 具體的視圖為: EXU9TNE 該視圖初始建立時的位置為: $ORACLE_HOME/rdbms/admin/catexp.sql裡 初始的定義為: CREATE OR REPLACE VIEW EXU9TNE
(tsno, fileno, blockno, length)
AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1 以sys使用者登入資料庫伺服器重建立立該視圖: CREATE OR REPLACE VIEW EXU9TNE
(tsno, fileno, blockno, length)
AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1
UNION ALL select "TSNO","FILENO","BLOCKNO","LENGTH" from sys.exu9tneb 注意就是增加上面標紅的語句 然後再試下就應該OK了。 D:\hanganbuild>exp hangyun/hangyun@HANGAN100 file=c:\0425.dmp tables=sys_news Export: Release 9.2.0.1.0 - Production on 星期三 4月 25 13:36:31 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集 即將匯出指定的表通過常規路徑 ...
. . 正在匯出表 SYS_NEWS 4999 行被匯出
在沒有警告的情況下成功終止匯出。 (注意:Oracle的系統檢視表最好不要輕易改動,操作執行完後,最好是改回原來的視圖)