“ impdp导入过程中遇到ORA-39083 ORA-14102错误,对其进行故障分析和解决”
01
—
故障现象
最近两次遇到impdp 报 ORA-39083 ORA-14102错误
[oracle@localhost tmp]$ impdp "'/as sysdba'" directory=expdp_dir full=y dumpfile=1.dmpImport: Release 11.2.0.1.0 - Production on Mon May 11 20:57:00 2026Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsMaster table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloadedStarting "SYS"."SYS_IMPORT_FULL_01": "/******** AS SYSDBA" directory=expdp_dir full=y dumpfile=1.dmpProcessing object type TABLE_EXPORT/TABLE/TABLEORA-39083: Object type TABLE:"AAA"."XXXXX" failed to create with error:ORA-14102: only one LOGGING or NOLOGGING clause may be specifiedFailing sql is:CREATE TABLE "AAA"."XXXX" ("OBJECT_ID" NUMBER(9,0) NOT NULL ENABLE, "OBJECT_TYPE" VARCHAR2(8 BYTE) NOT NULL ENABLE……………………
这个错误比较明显由于AAA.XXXX表的创建语句中有多于一个LOGGING or NOLOGGING,从而导致该创建语句无法正常创建表.
[oracle@iZbp11c0qyuuo1gr7j98upZ ~]$ oerr ora 1410214102, 00000, "only one LOGGING or NOLOGGING clause may be specified"// *Cause: LOGGING was specified more than once, NOLOGGING was specified// more than once, or both LOGGING and NOLOGGING were specified.// *Action: Remove all but one of the LOGGING or NOLOGGING clauses and// reissue the statement.
02
—
故障原因
查看该表对应的expdp导出日志
[oracle@xff expdmp]$ expdp "'/as sysdba'" tables="AAA"."XXXX" dumpfile=1.dmp compression=all EXCLUDE=STATISTICS,AUDITExport: Release11.2.0.4.0- Production on Mon May 1121:01:062026Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release11.2.0.4.0-64bit ProductionWith the Partitioning, OLAP, Data Mining andReal Application Testing optionsStarting "SYS"."SYS_EXPORT_TABLE_01": tables=AAA.XXXX dumpfile=1.dmp compression=all EXCLUDE=STATISTICS,AUDITEstimate in progress using BLOCKS method...Processing object type TABLE_EXPORT/TABLE/TABLE_DATATotal estimation using BLOCKS method: 3.207 GBProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/INDEX/INDEXProcessing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT. . exported "AAA"."XXXX":"F_GTG" 5.430 MB 968776rows. . exported "AAA"."XXXX":"F_CONS" 4.734 MB 920007rows…………
比较明显AAA.XXXX表是一个分区表,而且是从11.2.0.4中导出,然后准备导入到11.2.0.1版本数据库中.通过DBMS_METADATA.get_ddl来获取该表的ddl语句确实有多个LOGGING/NOLOGGING(主要是每个分区都有NOLOGGING)
SET ECHO OFFSET PAGESIZE 0SET LINES 3000SET LONG 200000SET FEEDBACK OFFSET HEADING OFFSET SERVEROUTPUT ON SIZE 1000000COLUMN TXT FORMAT A3000 WORD_WRAPPEDSQL>SQL>SELECT DBMS_METADATA.GET_DDL('TABLE','XXXX','AAA') TXT FROM DUAL;CREATE TABLE "AAA"."XXXX"( "OBJECT_ID" NUMBER(9,0) NOT NULL ENABLE,"OBJECT_TYPE" VARCHAR2(8) NOT NULL ENABLE,"DL_TYPE" VARCHAR2(8) NOT NULL ENABLE,………………CONSTRAINT "PK_OBJECT_DL_DEF" PRIMARY KEY ("OBJECT_ID", "OBJECT_TYPE", "DL_TYPE")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS NOLOGGINGSTORAGE(INITIAL65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS" ENABLE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOLOGGINGSTORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS"PARTITIONBY LIST ("OBJECT_TYPE")(PARTITION "F_SUBS" VALUES ('1') SEGMENT CREATION IMMEDIATEPCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255NOCOMPRESS NOLOGGINGSTORAGE(INITIAL8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS" ,……………………
尝试在11.2.0.1环境中人工执行该sql创建表,直接报ORA-14020: 不能指定表分区的此物理属性错误

03
—
故障处理
基于此基本上可以确认是由于11.2.0.1默认情况下不支持这样的语法,解决该问题的办法:
1. 重新导出来expdp dmp,加上version=11.2.0.1参数
2. impdp加上impdp TRANSFORM参数TRANSFORM=segment_attributes:n进行导入

文章转载自惜分飞,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




