【问题标题】:Alter Table Exchange Partition giving error更改表交换分区给出错误
【发布时间】:2020-05-11 01:30:03
【问题描述】:

我正在尝试将分区数据带回原始表。 但得到以下错误。 我通过此命令将分区数据交换到 AR_TBCAM.BKP_COST_EVENT_P2016 表中

ALTER TABLE BKP_COST_EVENT EXCHANGE PARTITION P2016 WITH TABLE AR_TBCAM.BKP_COST_EVENT_P2016 INCLUDING INDEXES WITHOUT VALIDATION;

但我想将数据带回 TBCAM.BKP_COST_EVENT 表中。

同时我将 p2016 分成 3 个分区 -p2014,p2015,p2016 基于年份。

根据建议,我发出相同的命令将数据带回分区表。 但是得到以下错误:

ALTER TABLE BKP_COST_EVENT EXCHANGE PARTITION P2016 WITH TABLE AR_TBCAM.BKP_COST_EVENT_P2016 INCLUDING INDEXES WITHOUT VALIDATION
Error report -
ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION
14097. 00000 -  "column type or size mismatch in ALTER TABLE EXCHANGE PARTITION"
*Cause:    The corresponding columns in the tables specified in the
           ALTER TABLE EXCHANGE PARTITION are of different type or size
*Action:   Ensure that the two tables have the same number of columns
           with the same type and size.

分区表的 DDL:

--------------------------------------------------------
--  File created - Monday-May-11-2020   
--------------------------------------------------------
--------------------------------------------------------
--  DDL for Table BKP_COST_EVENT
--------------------------------------------------------

  CREATE TABLE "TBCAM"."BKP_COST_EVENT" 
   (    "MDL_VER_ID" NUMBER(*,0), 
    "EVENT_ID" NUMBER(*,0), 
    "EVENT_TYP_ID" NUMBER(*,0), 
    "TRIGGER_TYP_ID" NUMBER(*,0), 
    "EVENT_START_DT" DATE, 
    "EVENT_END_DT" DATE, 
    "EVENT_DURATION_DAYS" NUMBER(*,0), 
    "EVENT_DESC" VARCHAR2(300 BYTE), 
    "EQUIP_ID" NUMBER(*,0), 
    "SITE_ID" NUMBER(*,0), 
    "EQUIP_CUM_ACT_HRS" NUMBER(14,2), 
    "EQUIP_CUM_ACT_STARTS" NUMBER(*,0), 
    "EQUIP_CUM_FFHRS" NUMBER(14,2), 
    "EQUIP_CUM_FFSTARTS" NUMBER(*,0), 
    "EQUIP_CUM_CI_FFHRS" NUMBER(14,2), 
    "EQUIP_CUM_CI_FFSTARTS" NUMBER(*,0), 
    "PROJ_PART_PURCHASE_COST" NUMBER(14,2), 
    "PROJ_PART_PURCHASE_PRICE" NUMBER(14,2), 
    "PROJ_PART_REPAIR_COST" NUMBER(14,2), 
    "PROJ_PART_REPAIR_PRICE" NUMBER(14,2), 
    "PROJ_SERV_COST" NUMBER(14,2), 
    "PROJ_SERV_PRICE" NUMBER(14,2), 
    "PROJ_FALLOUT_PRICE" NUMBER(14,2), 
    "PROJ_FALLOUT_COST" NUMBER(14,2), 
    "ACT_PART_PURCHASE_COST" NUMBER(14,2), 
    "ACT_PART_PURCHASE_PRICE" NUMBER(14,2), 
    "ACT_REPAIR_COST" NUMBER(14,2), 
    "ACT_REPAIR_PRICE" NUMBER(14,2), 
    "ACT_SERV_COST" NUMBER(14,2), 
    "ACT_SERV_PRICE" NUMBER(14,2), 
    "ACT_FALLOUT_PRICE" NUMBER(14,2), 
    "ACT_FALLOUT_COST" NUMBER(14,2), 
    "MANUAL_EVENT_IND" VARCHAR2(1 BYTE), 
    "RECONFIG_ID" NUMBER(*,0), 
    "ACTUALIZE_IND" VARCHAR2(1 BYTE), 
    "COSMOS_EVENT_ID" NUMBER(9,0), 
    "CREATED_BY" NUMBER(*,0), 
    "CREATED_DT" DATE, 
    "UPDATED_DT" DATE, 
    "UPDATED_BY" NUMBER(*,0), 
    "DELIMIT_PART_KIT_ID" NUMBER, 
    "COMMENTS" VARCHAR2(1000 BYTE), 
    "REASON_ID" NUMBER(*,0), 
    "MANUAL_CBM_IND" VARCHAR2(1 BYTE), 
    "PERSISTENT_ID" VARCHAR2(1000 BYTE), 
    "ORIGINAL_EVENT_TYP_ID" NUMBER, 
    "EOT_CAUSED_BY" VARCHAR2(30 BYTE), 
    "EOT_EVENT_TYP_ID" NUMBER, 
    "INSPECTION_FLAG" VARCHAR2(1 BYTE), 
    "OFS_ID" VARCHAR2(100 BYTE), 
    "OFS_STATUS" VARCHAR2(30 BYTE), 
    "EQUIP_EVE_INV_ACT_HRS" NUMBER(14,2), 
    "EQUIP_EVE_INV_ACT_STARTS" NUMBER(*,0), 
    "EQUIP_EVE_INV_FFHRS" NUMBER(14,2), 
    "EQUIP_EVE_INV_FFSTARTS" NUMBER(*,0), 
    "EQUIP_SEC_INV_ACT_HRS" NUMBER(14,2), 
    "EQUIP_SEC_INV_ACT_STARTS" NUMBER(*,0), 
    "EQUIP_SEC_INV_FFHRS" NUMBER(14,2), 
    "EQUIP_SEC_INV_FFSTARTS" NUMBER(*,0), 
    "NON_MAINT_FLAG" VARCHAR2(5 BYTE), 
    "UNSCHD_MANEVT_FLAG" VARCHAR2(1 BYTE), 
    "VARIANCE_CAT_ID" NUMBER, 
    "VARIANCE_SUBCAT_ID" NUMBER, 
    "VARIANCE_COMMENT" VARCHAR2(255 BYTE), 
    "FUTURE_MOB_TYP" NUMBER, 
    "UNPLAN_PROJ_PART_PURCHSE_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_PART_PURCHSE_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_PART_REPAIR_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_PART_REPAIR_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_SERV_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_SERV_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_FALLOUT_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_FALLOUT_COST" NUMBER(14,2), 
    "UNPLAN_ACT_PART_PURCHSE_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_PART_PURCHSE_COST" NUMBER(14,2), 
    "UNPLAN_ACT_PART_PURCHSE_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_PART_PURCHSE_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_REPAIR_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_REPAIR_COST" NUMBER(14,2), 
    "UNPLAN_ACT_REPAIR_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_REPAIR_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_SERV_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_SERV_COST" NUMBER(14,2), 
    "UNPLAN_ACT_SERV_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_SERV_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_FALLOUT_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_FALLOUT_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_FALLOUT_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_FALLOUT_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_INSPECT_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_INSPECT_COST" NUMBER(14,2), 
    "UNPLAN_ACT_INSPECT_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_INSPECT_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_INSPECT_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_INSPECT_COST" NUMBER(14,2), 
    "UNPLAN_OUTSTAND_INSPECT_PRICE" NUMBER(14,2), 
    "XTRAWRK_OUTSTAND_INSPECT_PRICE" NUMBER(14,2), 
    "UNPLAN_OUTSTAND_INSPECT_COST" NUMBER(14,2), 
    "XTRAWORK_OUTSTAND_INSPECT_COST" NUMBER(14,2), 
    "BUSINESS_GRP_EVENT_ID" NUMBER, 
    "FUTURE_MOB_EVENT" VARCHAR2(5 BYTE), 
    "OFS_EVENT_DT" DATE, 
    "OFS_EVENT_NAME" VARCHAR2(20 BYTE), 
    "EVENTHOURS" NUMBER(*,0)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSDATA" 
  PARTITION BY RANGE ("CREATED_DT") 
 (PARTITION "P13"  VALUES LESS THAN (TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  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 "AR_TBCAM_TABLES" , 
 PARTITION "P14"  VALUES LESS THAN (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  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 "AR_TBCAM_TABLES" , 
 PARTITION "P2016"  VALUES LESS THAN (TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  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 "AR_TBCAM_TABLES" , 
 PARTITION "P2017"  VALUES LESS THAN (TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSDATA" , 
 PARTITION "P2018"  VALUES LESS THAN (TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSDATA" , 
 PARTITION "P2019"  VALUES LESS THAN (TO_DATE(' 2019-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSDATA" , 
 PARTITION "P"  VALUES LESS THAN (MAXVALUE) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING 
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSDATA" ) ;

   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."MDL_VER_ID" IS 'This column holds the unique identifier for the model version';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENT_ID" IS 'Unique Id for the event (Sequential number)';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENT_TYP_ID" IS 'This is a unique identifier for an event type. It is a running serial number.

From Event type master table';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."TRIGGER_TYP_ID" IS 'Unique id for a trigger type';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENT_START_DT" IS 'Start date for the event, as computed by the system during simulation.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENT_END_DT" IS 'End date of the event as computed by the system during simulation';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENT_DURATION_DAYS" IS 'Duration (in days) of the event';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENT_DESC" IS 'Event description (displayed on UI)';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EQUIP_ID" IS 'Unique Identifier for Equipment.
LMS_CONTRACT_VERSION_UNIT.ID_UNIT

For site level events,this will be null';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."SITE_ID" IS 'Unique id for a site. LMS_CONTRACT_VERSION_SITE.    ID_SITE

';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EQUIP_CUM_ACT_HRS" IS 'Actual Hours when this event will occur.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EQUIP_CUM_ACT_STARTS" IS 'Actual Starts when this event will occur';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EQUIP_CUM_FFHRS" IS 'Actual FFHours when this event will occur';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EQUIP_CUM_FFSTARTS" IS 'Actual FFStarts when this event will occur';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_PART_PURCHASE_COST" IS 'Total Purchase cost of all parts coming in during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_PART_PURCHASE_PRICE" IS 'Total Purchase price of all parts coming in during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_PART_REPAIR_COST" IS 'Total Repair cost of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_PART_REPAIR_PRICE" IS 'Total Repair price of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_SERV_COST" IS 'Total cost of all services items that occur during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_SERV_PRICE" IS 'Total price of all services items that occur during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_FALLOUT_PRICE" IS 'Total Fallout price of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."PROJ_FALLOUT_COST" IS 'Total Fallout cost of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_PART_PURCHASE_COST" IS 'Actual Purchase cost of all parts coming in during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_PART_PURCHASE_PRICE" IS 'Actual Purchase price of all parts coming in during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_REPAIR_COST" IS 'Actual repair cost of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_REPAIR_PRICE" IS 'Actual repair price of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_SERV_COST" IS 'Actual service cost of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_SERV_PRICE" IS 'Actual service price of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_FALLOUT_PRICE" IS 'Actual Fallout price of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACT_FALLOUT_COST" IS 'Actual Fallout cost of all parts going out during this event.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."MANUAL_EVENT_IND" IS 'This field stores yes (Y) and no (N) value for manually added event and system generated event respectively.';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."RECONFIG_ID" IS 'Unique id for a reconfiguration (sequential number)';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."ACTUALIZE_IND" IS 'This field stores the indicator whether the event actually happened (';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."COSMOS_EVENT_ID" IS 'This is Unique Identifier to identify the Cosmos event ';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."CREATED_BY" IS 'The user who created the record';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."CREATED_DT" IS 'Date when the record was created';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."UPDATED_DT" IS 'LMS_CATALOG_VERSION.DT_UPDATE_DATETIME
';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."UPDATED_BY" IS 'LMS_CATALOG_VERSION.ID_UPDATE_USER
';
   COMMENT ON COLUMN "TBCAM"."BKP_COST_EVENT"."EVENTHOURS" IS 'This column holds the hours at which the event occured';
--------------------------------------------------------
--  DDL for Index COSPK_EVENT_EVENT_TYP_ID
--------------------------------------------------------

  CREATE UNIQUE INDEX "TBCAM"."COSPK_EVENT_EVENT_TYP_ID" ON "TBCAM"."BKP_COST_EVENT" ("MDL_VER_ID", "EVENT_ID") 
  PCTFREE 20 INITRANS 5 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSINDEX" ;
--------------------------------------------------------
--  DDL for Index COSFK_EVENT_EVENT_TYP_ID
--------------------------------------------------------

  CREATE INDEX "TBCAM"."COSFK_EVENT_EVENT_TYP_ID" ON "TBCAM"."BKP_COST_EVENT" ("EVENT_TYP_ID") 
  PCTFREE 10 INITRANS 5 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSINDEX" ;
  ALTER INDEX "TBCAM"."COSFK_EVENT_EVENT_TYP_ID"  UNUSABLE;
--------------------------------------------------------
--  Constraints for Table BKP_COST_EVENT
--------------------------------------------------------

  ALTER TABLE "TBCAM"."BKP_COST_EVENT" ADD CONSTRAINT "COSPK_EVENT_EVENT_TYP_ID_PR" PRIMARY KEY ("MDL_VER_ID", "EVENT_ID") DISABLE;
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("MDL_VER_ID" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("EVENT_ID" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("EVENT_TYP_ID" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("ACTUALIZE_IND" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("CREATED_BY" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("CREATED_DT" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("UPDATED_DT" NOT NULL ENABLE);
  ALTER TABLE "TBCAM"."BKP_COST_EVENT" MODIFY ("UPDATED_BY" NOT NULL ENABLE);

非分区表的 DDL:

  CREATE TABLE "AR_TBCAM"."BKP_COST_EVENT_P2016" 
   (    "MDL_VER_ID" NUMBER(*,0), 
    "EVENT_ID" NUMBER(*,0), 
    "EVENT_TYP_ID" NUMBER(*,0), 
    "TRIGGER_TYP_ID" NUMBER(*,0), 
    "EVENT_START_DT" DATE, 
    "EVENT_END_DT" DATE, 
    "EVENT_DURATION_DAYS" NUMBER(*,0), 
    "EVENT_DESC" VARCHAR2(300 BYTE), 
    "EQUIP_ID" NUMBER(*,0), 
    "SITE_ID" NUMBER(*,0), 
    "EQUIP_CUM_ACT_HRS" NUMBER(14,2), 
    "EQUIP_CUM_ACT_STARTS" NUMBER(*,0), 
    "EQUIP_CUM_FFHRS" NUMBER(14,2), 
    "EQUIP_CUM_FFSTARTS" NUMBER(*,0), 
    "EQUIP_CUM_CI_FFHRS" NUMBER(14,2), 
    "EQUIP_CUM_CI_FFSTARTS" NUMBER(*,0), 
    "PROJ_PART_PURCHASE_COST" NUMBER(14,2), 
    "PROJ_PART_PURCHASE_PRICE" NUMBER(14,2), 
    "PROJ_PART_REPAIR_COST" NUMBER(14,2), 
    "PROJ_PART_REPAIR_PRICE" NUMBER(14,2), 
    "PROJ_SERV_COST" NUMBER(14,2), 
    "PROJ_SERV_PRICE" NUMBER(14,2), 
    "PROJ_FALLOUT_PRICE" NUMBER(14,2), 
    "PROJ_FALLOUT_COST" NUMBER(14,2), 
    "ACT_PART_PURCHASE_COST" NUMBER(14,2), 
    "ACT_PART_PURCHASE_PRICE" NUMBER(14,2), 
    "ACT_REPAIR_COST" NUMBER(14,2), 
    "ACT_REPAIR_PRICE" NUMBER(14,2), 
    "ACT_SERV_COST" NUMBER(14,2), 
    "ACT_SERV_PRICE" NUMBER(14,2), 
    "ACT_FALLOUT_PRICE" NUMBER(14,2), 
    "ACT_FALLOUT_COST" NUMBER(14,2), 
    "MANUAL_EVENT_IND" VARCHAR2(1 BYTE), 
    "RECONFIG_ID" NUMBER(*,0), 
    "ACTUALIZE_IND" VARCHAR2(1 BYTE), 
    "COSMOS_EVENT_ID" NUMBER(9,0), 
    "CREATED_BY" NUMBER(*,0), 
    "CREATED_DT" DATE, 
    "UPDATED_DT" DATE, 
    "UPDATED_BY" NUMBER(*,0), 
    "DELIMIT_PART_KIT_ID" NUMBER, 
    "COMMENTS" VARCHAR2(1000 BYTE), 
    "REASON_ID" NUMBER(*,0), 
    "MANUAL_CBM_IND" VARCHAR2(1 BYTE), 
    "PERSISTENT_ID" VARCHAR2(1000 BYTE), 
    "ORIGINAL_EVENT_TYP_ID" NUMBER, 
    "EOT_CAUSED_BY" VARCHAR2(30 BYTE), 
    "EOT_EVENT_TYP_ID" NUMBER, 
    "INSPECTION_FLAG" VARCHAR2(1 BYTE), 
    "OFS_ID" VARCHAR2(100 BYTE), 
    "OFS_STATUS" VARCHAR2(30 BYTE), 
    "EQUIP_EVE_INV_ACT_HRS" NUMBER(14,2), 
    "EQUIP_EVE_INV_ACT_STARTS" NUMBER(*,0), 
    "EQUIP_EVE_INV_FFHRS" NUMBER(14,2), 
    "EQUIP_EVE_INV_FFSTARTS" NUMBER(*,0), 
    "EQUIP_SEC_INV_ACT_HRS" NUMBER(14,2), 
    "EQUIP_SEC_INV_ACT_STARTS" NUMBER(*,0), 
    "EQUIP_SEC_INV_FFHRS" NUMBER(14,2), 
    "EQUIP_SEC_INV_FFSTARTS" NUMBER(*,0), 
    "NON_MAINT_FLAG" VARCHAR2(5 BYTE), 
    "UNSCHD_MANEVT_FLAG" VARCHAR2(1 BYTE), 
    "VARIANCE_CAT_ID" NUMBER, 
    "VARIANCE_SUBCAT_ID" NUMBER, 
    "VARIANCE_COMMENT" VARCHAR2(255 BYTE), 
    "FUTURE_MOB_TYP" NUMBER, 
    "UNPLAN_PROJ_PART_PURCHSE_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_PART_PURCHSE_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_PART_REPAIR_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_PART_REPAIR_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_SERV_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_SERV_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_FALLOUT_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_FALLOUT_COST" NUMBER(14,2), 
    "UNPLAN_ACT_PART_PURCHSE_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_PART_PURCHSE_COST" NUMBER(14,2), 
    "UNPLAN_ACT_PART_PURCHSE_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_PART_PURCHSE_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_REPAIR_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_REPAIR_COST" NUMBER(14,2), 
    "UNPLAN_ACT_REPAIR_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_REPAIR_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_SERV_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_SERV_COST" NUMBER(14,2), 
    "UNPLAN_ACT_SERV_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_SERV_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_FALLOUT_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_FALLOUT_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_FALLOUT_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_FALLOUT_COST" NUMBER(14,2), 
    "UNPLAN_PROJ_INSPECT_PRICE" NUMBER(14,2), 
    "UNPLAN_PROJ_INSPECT_COST" NUMBER(14,2), 
    "UNPLAN_ACT_INSPECT_PRICE" NUMBER(14,2), 
    "XTRAWRK_ACT_INSPECT_PRICE" NUMBER(14,2), 
    "UNPLAN_ACT_INSPECT_COST" NUMBER(14,2), 
    "XTRAWRK_ACT_INSPECT_COST" NUMBER(14,2), 
    "UNPLAN_OUTSTAND_INSPECT_PRICE" NUMBER(14,2), 
    "XTRAWRK_OUTSTAND_INSPECT_PRICE" NUMBER(14,2), 
    "UNPLAN_OUTSTAND_INSPECT_COST" NUMBER(14,2), 
    "XTRAWORK_OUTSTAND_INSPECT_COST" NUMBER(14,2), 
    "BUSINESS_GRP_EVENT_ID" NUMBER, 
    "FUTURE_MOB_EVENT" VARCHAR2(5 BYTE), 
    "OFS_EVENT_DT" DATE, 
    "OFS_EVENT_NAME" VARCHAR2(20 BYTE), 
    "EVENTHOURS" NUMBER(*,0)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CAMSDATA" ;

【问题讨论】:

  • 列匹配基于您提供的 DDL。你可以从 all_tab_cols 发布数据吗?这两张桌子..?
  • 或者您可以自己将 all_tab_cols 中的第一个表数据与 all_tab_cols 中的第二个表数据进行完全外部连接,并比较不同之处。通常差异在于列顺序、大小甚至未使用的列
  • 能否请您在未来提供一个最小的示例?我们是否应该浏览 104 列以发现任何差异?只需使用少数列创建表的副本,然后重现错误。很可能你会在这样做的时候发现错误。

标签: oracle oracle12c partitioning partition


【解决方案1】:

请检查交易所的列顺序和数据类型。我会使用数据字典视图ALL_TAB_COLS,因为它最可靠。例如,对于示例表

CREATE TABLE t(a NUMBER, b NUMBER, c CHAR, d DATE)
 PARTITION BY RANGE (d) (PARTITION p1 VALUES LESS THAN (DATE '2014-01-01'));

CREATE TABLE p(a NUMBER, b NUMBER, d DATE, c CHAR);

ALTER TABLE t EXCHANGE PARTITION p1 WITH TABLE p;
ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION

您会发现以下差异(我使用USER_TAB_COLS 进行简化):

WITH 
  t AS (SELECT * FROM user_tab_cols WHERE table_name = 'T'),
  p AS (SELECT * FROM user_tab_cols WHERE table_name = 'P')
SELECT internal_column_id, t.column_name, t.data_type, p.column_name, p.data_type
  FROM t FULL OUTER JOIN p USING (internal_column_id);

1 A NUMBER A NUMBER
2 B NUMBER B NUMBER
3 C CHAR   D DATE    <= different column order 
4 D DATE   C CHAR    <=

但差异可能更细微,例如数据类型的差异:

CREATE TABLE q(a NUMBER, b NUMBER, d DATE, c VARCHAR2(1));
ALTER TABLE t EXCHANGE PARTITION p1 WITH TABLE q;

1 A NUMBER A NUMBER
2 B NUMBER B NUMBER
3 C CHAR   C VARCHAR2 <= different data type
4 D DATE   C DATE

使用DBA/ALL/USER_TAB_COLS 而不是DBA/ALL/USER_TAB_COLLUMNS 很重要,因为它会显示所有隐藏的列。

编辑:更完整的查询看起来像

WITH 
  t AS (SELECT * FROM user_tab_cols WHERE table_name = 'T'),
  p AS (SELECT * FROM user_tab_cols WHERE table_name = 'P')
SELECT column_id, 
       t.column_name, t.data_type, t.data_length,
       p.column_name, p.data_type, p.data_length
  FROM t FULL OUTER JOIN p USING (column_id)
 WHERE t.column_name IS NULL          -- column missing
    OR p.column_name IS NULL          -- column missing
    OR t.column_name <> p.column_name -- column name different
    OR t.data_type   <> p.data_type   -- datatype different
    OR t.data_length <> p.data_length -- data size different;

编辑:

未使用的列(显示在DBA/ALL/USER_UNUSED_COL_TABS)也将阻止分区交换:

CREATE TABLE p(a NUMBER, b NUMBER, c CHAR, d DATE, e NUMBER);
ALTER TABLE p SET UNUSED (e);
ALTER TABLE t EXCHANGE PARTITION p1 WITH TABLE p;
ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION

ALTER TABLE p DROP UNUSED COLUMNS;
ALTER TABLE t EXCHANGE PARTITION p1 WITH TABLE p;
Table T altered.

【讨论】:

  • 通过上面的查询,没有发现任何区别..它仍然显示104列..没有隐藏列或任何东西
  • 感谢您运行查询。如果列名和数据类型相同,则需要比较列大小。只需将 t.data_length 包含到查询中
  • 甚至 data_length 匹配:(
  • 可能是未使用的列?
  • ALL IN 在未使用的列上 :)
【解决方案2】:

一旦我将所有约束都放在类似于分区表的存储表中,我就能够交换分区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2019-04-26
    • 2014-07-03
    • 2019-07-13
    • 2011-03-28
    相关资源
    最近更新 更多