【问题标题】:oracle impdp - maximum open cursors exceededoracle impdp - 超过最大打开游标
【发布时间】:2018-05-15 16:01:31
【问题描述】:

我从 oracle 10.2.0.5.0 数据库中导出了一个数据库架构,使用 expdp,以架构所有者身份登录。

现在我尝试在 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 选项,导入运行不会出错,但我也需要它们。

接下来我可以尝试什么?

【问题讨论】:

  • 从什么值增加到什么值?你是怎么增加的?您确定正在使用新值吗?
  • 改变系统设置 open_cursors = 1000; --运行命令后我已经重启了数据库
  • 新值出现在 v$parameter 视图中
  • 如果你在 10g 或 11g 数据库中 impdp ,它可以工作吗?
  • 不幸的是,我只有从 10g 数据库导出的权限,除了 12c 之外没有其他数据库用于测试目的

标签: oracle impdp oracle-dump


【解决方案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

不要调用 Import as SYSDBA,除非 Oracle 要求 技术支援。 SYSDBA 是内部使用的,有专门的 职能;它的行为与普通用户不同。

【讨论】:

  • 请简单扩展您的答案,解释为什么此链接可能会解决 OP 的问题
  • 很遗憾,我终止了对 Oracle 支持的访问。
【解决方案2】:

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

原因

OPEN_CURSOR 的值设置得不够高。

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

解决方案

暂时将 OPEN_CURSORS 增加到一个足够高的值,例如 2000 并重新执行 DataPump 作业。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多