ORA-39235: data remap string has already been specified
Cause: A data remap has already been specified for the indicated column. Only one data remap may be defined for a column.
Action: Remove one of the data remap specifications for the job.
ORA-39235 错误是由于重复指定了相同的数据重新映射字符串引起的。
当使用 Oracle Data Pump 加载操作时,在同一个Data Pump会话中,如果指定了多个重新映射字符串时,将会引发ORA-39235 错误,本错误指示指定了一个或多个相同的重新映射字符串。
一个常见的案例是,当使用数据泵从一个实例加载到另一个实例时,表空间名称不同:
expdp system/password@source schemas=scott dump file=dpump_dir:exp_employees.dmp PARALLEL=4 remap_tablespace=SCOTT:NEW_DATA_TS remap_tablespace=SCOTT:NEW_DATA_TS
在该案例中,代码将会引发ORA-39235错误,因为表空间remap_tablespace=SCOTT:NEW_DATA_TS被重复指定了两次。
要解决此错误,请检查Data Pump命令,确保没有重复指定表空间重新映射字符串,如果担心导出过程中可能会发生多次指定,可以采用以下方法:
1. 建立一个清单或逗号分隔的已映射表空间列表:
tbsp_mapped_list := ”
2. 在每次重新映射时,将其表空间标识加入该列表(重新映射前先检查一下表空间是否已存在于列表中)。
if (instr(tbsp_mapped_list, ‘Scott’) > 0) then remap_tablespace=Scott:NEW_DATA_TS endif endif
3. 在导出完成后,清除列表:
tbsp_mapped_list := ”