oracle impdp - 超出最大打开游标数

时间:2017-12-01 14:11:54

标签: oracle impdp

我从带有expdp的oracle 10.2.0.5.0数据库导出了一个数据库模式,以模式的所有者身份登录。

现在我尝试在oracle 12.1.0.2.0数据库impdp上导入数据,以sys为角色登录sysdba。

expdp命令:

expdp "owner/password@hostname/servicename" schemas=SCHEMA_NAME directory=EXPDIR dumpfile=SCHEMA_NAME.dmp logfile=SCHEMA_NAME.log 

impdp命令:

impdp "sys/password@hostname/servicename as sysdba" schemas=SCHEMA_NAME directory=EXPDIR dumpfile=SCHEMA_NAME.dmp logfile=SCHEMA_NAME.log 

导入给了我错误信息:

Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 1 with process name "DW00" prematurely terminated
ORA-31671: Worker process DW00 had an unhandled exception.
ORA-01000: maximum open cursors exceeded
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PUT_DDLS [INDEX:"SCHEMA_NAME"."UK$SOME$NAME"] 
CREATE UNIQUE INDEX "SCHEMA_NAME"."UK$SOME$NAME" ON "SCHEMA_NAME"."TABLE_NAME" ("COLUMN_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TBLSPC" PARALLEL 1 
ORA-31625: Schema SYS is needed to import this object, but is unaccessible
ORA-00604: error occurred at recursive SQL level 2
ORA-01000: maximum open cursors exceeded
ORA-06512: at "SYS.KUPW$WORKER", line 9193
ORA-06512: at "SYS.KUPW$WORKER", line 22449
ORA-31625: Schema SYS is needed to import this object, but is unaccessible
ORA-00604: error occurred at recursive SQL level 2
ORA-01000: maximum open cursors exceeded
ORA-01000: maximum open cursors exceeded
ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 2 with process name "DW00" prematurely terminated
ORA-31671: Worker process DW00 had an unhandled exception.
ORA-01000: maximum open cursors exceeded
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PUT_DDLS [INDEX:"SCHEMA_NAME"."IDX$SOME$OTHER_NAME"] 
CREATE INDEX "SCHEMA_NAME"."IDX$SOME$OTHER_NAME" ON "SCHEMA_NAME"."OTHER_TABLE_NAME" ("OTHER_COLUMN_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TBLSPC" PARALLEL 1 
ORA-31625: Schema SYS is needed to import this object, but is unaccessible
ORA-00604: error occurred at recursive SQL level 2
ORA-01000: maximum open cursors exceeded
ORA-06512: at "SYS.KUPW$WORKER", line 9193
ORA-06512: at "SYS.KUPW$WORKER", line 22449
ORA-31625: Schema SYS is needed to import this object, but is unaccessible
ORA-00604: error occurred at recursive SQL level 2
ORA-01000: maximum open cursors exceeded
ORA-01000: maximum open cursors exceeded
Job "SYS"."SYS_IMPORT_SCHEMA_13" stopped due to fatal error at Fri Dec 1 14:09:07 2017 elapsed 0 00:02:05

我试图增加打开游标的最大数量,但它没有帮助。

使用选项EXCLUDE = INDEX导入运行没有错误,但我也需要它们。

我接下来可以尝试什么?

2 个答案:

答案 0 :(得分:1)

ORA-01000: Maximum Open Cursors Exceeded During DataPump Import (IMPDP) In 12c (Doc ID 2283800.1) Last updated on AUGUST 08, 2017

Invoking Data Pump Import

  

除Oracle的请求外,不要以SYSDBA的身份调用Import   技术支援。 SYSDBA在内部使用并具有专业性   功能;它的行为与普通用户不同。

答案 1 :(得分:0)

ORA-01000:在12c中执行DataPump作业期间超过了最大打开游标(文档ID 2283800.1)

原因

OPEN_CURSOR的值设置得不够高。

在执行DataPump导入时,游标的数量取决于各种因素,包括对象,分区,索引,所涉及的递归SQL等的数量。此外,在12c上,impdp的内部处理比10g更复杂,因此它可能需要更高的open_cursor才能完成导入作业。

解决方案

将OPEN_CURSORS临时增加到一个足够高的值(例如2000)并重做DataPump作业。