資料泵匯出時報錯ORA-1422錯誤

yangtingkun發表於2008-08-12

今天一個學習Oracle時間不長的同事在使用資料泵匯出的時候碰到了這個錯誤。

 

 

由於前兩天看到他在研究DUAL表,而且還問過我幾個DUAL表相關的問題,所以看到這個錯誤後首先想到的就是問他是否向DUAL表中插入資料。

果然他在測試的時候插入過資料,而且由於直接訪問DUAL表看到的仍然是一條記錄,所以忘記刪除多餘的資料,因此導致了這個錯誤。

簡單重現一下問題:

SQL> CONN /@YTK102 AS SYSDBA
已連線。
SQL> INSERT INTO DUAL VALUES ('X');

已建立 1 行。

SQL> COMMIT;

提交完成。

下面執行資料泵的匯出:

E:\>expdp yangtk/yangtk@ytk102 directory=d_output dumpfile=yangtk.dp

Export: Release 10.2.0.1.0 - Production on 星期三, 13 8, 2008 0:26:08

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
啟動 "YANGTK"."SYS_EXPORT_SCHEMA_01":  yangtk/********@ytk102 directory=d_output
 dumpfile=yangtk.dp
正在使用 BLOCKS 方法進行估計...
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 1.437 MB
處理物件型別 SCHEMA_EXPORT/USER
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別 SCHEMA_EXPORT/DB_LINK
處理物件型別 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別 SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別 SCHEMA_EXPORT/FUNCTION/FUNCTION
處理物件型別 SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別 SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SP
EC
處理物件型別 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別 SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別 SCHEMA_EXPORT/TYPE/TYPE_BODY
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "YANGTK"."T_RECORD"                         473.9 KB   40000
. .
匯出了 "YANGTK"."TEST_LOB"                         5.656 KB       1
. .
匯出了 "YANGTK"."CHAINED_ROWS"                     81.25 KB    2118
. .
匯出了 "YANGTK"."T"                                4.906 KB       1
. .
匯出了 "YANGTK"."T_LEVEL"                          6.234 KB       6
. .
匯出了 "YANGTK"."T_LEVEL1"                         6.585 KB       8
. .
匯出了 "YANGTK"."T_LOAD_SPACE"                     5.585 KB       5
. .
匯出了 "YANGTK"."T_LOG"                            5.273 KB       2
. .
匯出了 "YANGTK"."T_NO_EXISTS_BEFORE"               5.257 KB       1
. .
匯出了 "YANGTK"."T_TREE"                           5.960 KB       9
. .
匯出了 "YANGTK"."T_CHAR"                               0 KB       0
. .
匯出了 "YANGTK"."T_COMPRESS"                           0 KB       0
ORA-39125:
KUPW$WORKER.UNLOAD_METADATA Worker 發生意外的致命錯誤 (在呼叫 D
BMS_METADATA.FETCH_XML_CLOB [TABLE_DATA:"YANGTK"."T_COMPRESS"]
)
ORA-31642:
以下 SQL 語句失敗:
BEGIN "SYS"."DBMS_SCHED_EXPORT_CALLOUTS".SCHEMA_CALLOUT(:1,1,1,'10.02.00.01.00')
; END;
ORA-06512:
"SYS.DBMS_SYS_ERROR", line 86
ORA-06512:
"SYS.DBMS_METADATA", line 907
ORA-01422:
實際返回的行數超出請求的行數

ORA-06512: "SYS.DBMS_SYS_ERROR", line 105
ORA-06512:
"SYS.KUPW$WORKER", line 6241

----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
2EBF7ED4     14916  package body SYS.KUPW$WORKER
2EBF7ED4      6300  package body SYS.KUPW$WORKER
2EBF7ED4      2340  package body SYS.KUPW$WORKER
2EBF7ED4      6861  package body SYS.KUPW$WORKER
2EBF7ED4      1262  package body SYS.KUPW$WORKER
2EBDBC80         2  anonymous block

作業 "YANGTK"."SYS_EXPORT_SCHEMA_01" 因致命錯誤於 00:26:43 停止

匯出過程中出現了ORA-1422錯誤,而這正是由於DUAL表中記錄多於1條造成的結果。Oracle很多的工具和包都依賴於DUAL表,因此插入多餘的記錄就會導致這些工具出現異常情況:

SQL> DELETE DUAL;

已刪除 1 行。

SQL> COMMIT;

提交完成。

SQL> SELECT * FROM DUAL;

D
-
X

下面重新執行匯出問題解決:

E:\>expdp yangtk/yangtk@ytk102 directory=d_output dumpfile=yangtk.dp

Export: Release 10.2.0.1.0 - Production on 星期三, 13 8, 2008 0:37:31

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
啟動 "YANGTK"."SYS_EXPORT_SCHEMA_02":  yangtk/********@ytk102 directory=d_output
 dumpfile=yangtk.dp
正在使用 BLOCKS 方法進行估計...
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 1.812 MB
處理物件型別 SCHEMA_EXPORT/USER
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TYPE/TYPE_SPEC
處理物件型別 SCHEMA_EXPORT/DB_LINK
處理物件型別 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/COMMENT
處理物件型別 SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
處理物件型別 SCHEMA_EXPORT/FUNCTION/FUNCTION
處理物件型別 SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理物件型別 SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SP
EC
處理物件型別 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
處理物件型別 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理物件型別 SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
處理物件型別 SCHEMA_EXPORT/TYPE/TYPE_BODY
處理物件型別 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. .
匯出了 "YANGTK"."T_RECORD"                         473.9 KB   40000
. .
匯出了 "YANGTK"."SYS_EXPORT_SCHEMA_01"             227.9 KB    1169
. .
匯出了 "YANGTK"."TEST_LOB"                         5.656 KB       1
. .
匯出了 "YANGTK"."CHAINED_ROWS"                     81.25 KB    2118
. .
匯出了 "YANGTK"."T"                                4.906 KB       1
. .
匯出了 "YANGTK"."T_LEVEL"                          6.234 KB       6
. .
匯出了 "YANGTK"."T_LEVEL1"                         6.585 KB       8
. .
匯出了 "YANGTK"."T_LOAD_SPACE"                     5.585 KB       5
. .
匯出了 "YANGTK"."T_LOG"                            5.273 KB       2
. .
匯出了 "YANGTK"."T_NO_EXISTS_BEFORE"               5.257 KB       1
. .
匯出了 "YANGTK"."T_TREE"                           5.960 KB       9
. .
匯出了 "YANGTK"."T_CHAR"                               0 KB       0
. .
匯出了 "YANGTK"."T_COMPRESS"                           0 KB       0
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_SCHEMA_02"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_02
的轉儲檔案集為:
  E:\YANGTK.DP
作業 "YANGTK"."SYS_EXPORT_SCHEMA_02" 已於 00:37:51 成功完成

 

 

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

相關文章