今天在给某项目做备份数据还原是出现如下错误,P6(V8版本)系统对11.2.0.4 RAC的支持上存在一定的bug。故项目只能用11.2.0.3,在安装系统时时间比较仓促也并未打上最新的PSU,故而有了如下报错:数据库整库导入,使用table_exists_action=replace来出来重复的表数据,因一直统计信息存在一定问题,事先采用exclude=statistics 剔除了统计信息的导入。

impdp \'/ as sysdba\' dumpfile=CRlandpm_fullbak20150512.dmp logfile=impdp_CRlandpm_fullbak20150512.log  full=y table_exists_action=replace exclude=statistics directory=dump parallel=8

ORA-31085: schema "" already registered

Failing sql is:

BEGIN dbms_xmlschema.registerSchema(:1, :2, (:3 = 1), FALSE,FALSE,FALSE,FALSE, :4, options=> :5, schemaoid => :6, import_options => :7); END;

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE

ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION [TABLE:"IX"."AQ$_STREAMS_QUEUE_TABLE_T"]

ORA-24019: identifier for QUEUE_TABLE too long, should not be greater than 24 characters

ORA-00955: name is already used by an existing object

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

ORA-06512: at "SYS.KUPW$WORKER", line 9001

----- PL/SQL Call Stack -----

object      line  object

handle    number  name

0x38220d900     20462  package body SYS.KUPW$WORKER

0x38220d900      9028  package body SYS.KUPW$WORKER

0x38220d900     16105  package body SYS.KUPW$WORKER

0x38220d900     16832  package body SYS.KUPW$WORKER

0x38220d900     16484  package body SYS.KUPW$WORKER

0x38220d900      3956  package body SYS.KUPW$WORKER

0x38220d900      9725  package body SYS.KUPW$WORKER

0x38220d900      1775  package body SYS.KUPW$WORKER

0x1a91a8e58         2  anonymous block

ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION [TABLE:"IX"."AQ$_STREAMS_QUEUE_TABLE_T"]

ORA-24019: identifier for QUEUE_TABLE too long, should not be greater than 24 characters

ORA-00955: name is already used by an existing object

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

ORA-06512: at "SYS.KUPW$WORKER", line 9001

----- PL/SQL Call Stack -----

object      line  object

handle    number  name

0x382206e30     20462  package body SYS.KUPW$WORKER

0x382206e30      9028  package body SYS.KUPW$WORKER

0x382206e30     16105  package body SYS.KUPW$WORKER

0x382206e30     16832  package body SYS.KUPW$WORKER

0x382206e30     16484  package body SYS.KUPW$WORKER

0x382206e30      3956  package body SYS.KUPW$WORKER

0x382206e30      9725  package body SYS.KUPW$WORKER

0x382206e30      1775  package body SYS.KUPW$WORKER

0x337770c98         2  anonymous block

Job "SYS"."SYS_IMPORT_FULL_03" stopped due to fatal error at 18:24:00

[oracle@ERP2DB01 dump]$

针对上面的问题,很大程度上怀疑是bug问题,在MOS上查了下果然发现下面这么一段

Impdp Fails With ORA-39126: Worker Unexpected Fatal Error In KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION (文档 ID 943357.1)

Oracle Database - Enterprise Edition - Version 9.2.0.8 to 11.1.0.7 [Release 9.2 to 11.1]

Information in this document applies to any platform.

SYMPTOMS

-- Problem Statement:

Datapump Import fails with the following errors:

ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION

[TABLE:"APPLSYS"."AQ$_FND_CP_TM_RET_AQTBL_T"]

ORA-24019: identifier for QUEUE_TABLE too long, should not be greater than 24 characters

ORA-00955: name is already used by an existing object

CAUSE

Error ORA-24019 is self-explanatory: the queue table name is 25 characters long, whereas only 24 are allowed.

There are restrictions in regards to the names of the queue_tables:

Oracle Streams Advanced Queuing User's Guide and Reference 10g Release 2 (10.2)

Chapter 8 Oracle Streams AQ Administrative Interface

DBMS_AQADM.CREATE_QUEUE_TABLE --&gt Queue table names must not be longer than 24 characters.If you attempt to create a queue table with a longer name, error ORA-24019 results

SOLUTION

In normal case the way to resolve this is to either exclude this queue from being imported and then manually create it afterwards, or recreate the queue in the source database with a valid name (<= 24 characters) and export and import into the destination database.

But since it is followed by ORA-00955: name is already used by an existing object,then in this case, the first thing to check would be whether the interested queue_tables do have messages or are empty.

If the queue_tables are empty then prior to import they would need to be dropped as follow:

At the TARGET Database:

1) Drop queue_table with force parameter set to TRUE,the queue table name is  FND_CP_TM_RET_AQTBL as shown:

connect / as sysdba

Begin

dbms_aqadm.drop_queue_table ('APPLSYS.FND_CP_TM_RET_AQTBL',TRUE);

End;

/

2) Re-run the IMPDP

OR

Use the TABLE_EXISTS_ACTION=TRUNCATE option - this deletes existing rows and then loads rows from the source

索然这个文档描述的问题有所不同,单页大同小异,解决我的这个报错也够了.......

采用table_exists_action=truncate后解决问题............此外在执行

connect / as sysdba

Begin

dbms_aqadm.drop_queue_table ('APPLSYS.FND_CP_TM_RET_AQTBL',TRUE);

End;

/

则个的时候并未向预测的一样有任何信息,所指定的表不存在...........

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐