Столбец идентификаторов Oracle 12c пропускает часть чисел при вставке в таблицу во время загрузки ETL.
В моей процедуре ETL приведен код, который пропускает определенные числа при вставке в таблицу во время процесса ETL.
Но если я выполню приведенный ниже код вручную, я не вижу никаких проблем.Кажется, что все числа появляются последовательно.
Код в моей процедуре ETL: -
MERGE INTO BRANDTABLE PT
USING (
SELECT DISTINCT BRAND
,BRAND_DESC
FROM SOURCE_BRAND
) TMP
ON (PT.BRAND_CODE = TMP.BRAND)
WHEN MATCHED
THEN
UPDATE
SET PT.BRAND_DESC = TMP.BRAND_DESC;
INSERT INTO /*+APPEND NOLOGGING*/ BRANDTABLE (
BRAND_CODE
,BRAND_DESC
)
SELECT DISTINCT BRAND
,BRAND_DESC
FROM SOURCE_BRAND SRC
WHERE NOT EXISTS (
SELECT 1
FROM BRANDTABLE Trg
WHERE Trg.BRAND_CODE = Src.BRAND
)
ORDER BY BRAND_DESC;
Таблица: -
CREATE TABLE TABLENAME
( "BRAND_ID" NUMBER(6,0) GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 4085 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE,
"BRAND_CODE" VARCHAR2(10 BYTE),
"BRAND_DESC" VARCHAR2(100 BYTE),
CONSTRAINT "DIM_BRAND_DESC_MASTER_PK" PRIMARY KEY ("BRAND_ID")
USING INDEX PCTFREE 10 INITRANS 2 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 "TABL" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
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 "TABL" ;