windows2008+windows11.2.0.1x64
直接导报错:
expdp \"/ as sysdba\" DIRECTORY=DATA_PUMP_DIR schemas=XXX PARALLEL=1 CLUSTER=N DUMPFILE=DATA-20200723.DMP logfile=DATA-20200723.LOG EXCLUDE=STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.UNLOAD_METADATA [INDEX:"XX"."IDX_ENTITY_CONFIG_FLDBUSITYPE"]
ORA-01801: date format is too long for internal buffer
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 8165
----- PL/SQL Call Stack -----
object line object
handle number name
00000002E9DDA8C8 18990 package body SYS.KUPW$WORKER
00000002E9DDA8C8 8192 package body SYS.KUPW$WORKER
00000002E9DDA8C8 2823 package body SYS.KUPW$WORKER
00000002E9DDA8C8 8847 package body SYS.KUPW$WORKER
00000002E9DDA8C8 1649 package body SYS.KUPW$WORKER
00000002FB9EF3F0 2 anonymous block
Job "SYS"."SYS_EXPORT_FULL_01" stopped due to fatal error at 11:38:45
所以尝试排除索引导出,正常。
第一步:
expdp \"/ as sysdba\" DIRECTORY=DATA_PUMP_DIR schemas=XXX PARALLEL=1 CLUSTER=N DUMPFILE=DATA-20200723.DMP logfile=DATA-20200723.LOG EXCLUDE=STATISTICS,INDEX
再尝试导出索引对象:
expdp \"/ as sysdba\" DIRECTORY=DATA_PUMP_DIR schemas=XXX PARALLEL=1 CLUSTER=N DUMPFILE=INDEX-20200723.DMP logfile=INDEX-20200723.LOG CONTENT=METADATA_ONLY EXCLUDE=STATISTICS,INDEX 报错
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.UNLOAD_METADATA [OBJECT_GRANT:"XXX"]
ORA-01801: date format is too long for internal buffer
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 8165
----- PL/SQL Call Stack -----
object line object
handle number name
00000002E9DDA8C8 18990 package body SYS.KUPW$WORKER
00000002E9DDA8C8 8192 package body SYS.KUPW$WORKER
00000002E9DDA8C8 2823 package body SYS.KUPW$WORKER
00000002E9DDA8C8 8847 package body SYS.KUPW$WORKER
00000002E9DDA8C8 1649 package body SYS.KUPW$WORKER
00000002BFC30478 2 anonymous block
Job "SYS"."SYS_EXPORT_SCHEMA_15" stopped due to fatal error at 09:10:13
再尝试排除指定报错的索引还是报错:
expdp \"/ as sysdba\" DIRECTORY=DATA_PUMP_DIR schemas=XXX PARALLEL=1 CLUSTER=N CONTENT=METADATA_ONLY DUMPFILE=xxx_1.DMP logfile=xxx-1.LOG EXCLUDE=STATISTICS EXCLUDE=INDEX:\"IN ('IDX_TUBE_FLDTEMPFLAG', 'IDX_DX_FLDTEMPFLAG', 'IDX_ENTITY_CONFIG_FLDBUSITYPE', 'IDXB_EXP_SQL_ISVALIDE', 'IDX_EXP_ENTITY_POLLTYPE', 'IDX_EXP_ENTITY_IMMEDIATE')\"
最后再执行下面操作处理解决:
把表,DB_LINK,GRANT都排除再导出(因为第一步除了索引,其它对象都已经包含了,所以能排除越多越好,这边只是简单排除了一下)
第二步:
expdp \"/ as sysdba\" DIRECTORY=DATA_PUMP_DIR schemas=XXX PARALLEL=1 CLUSTER=N DUMPFILE=INDEX-20200723.DMP logfile=INDEX-20200723.LOG CONTENT=METADATA_ONLY EXCLUDE=STATISTICS,TABLE,DB_LINK,GRANT
做IMPDP恢复的时候只需要先导入第一步,再导入第二步即可。