繁体   English   中英

Oracle分区表:数据未插入正确的分区中

[英]Oracle Partition Table : Data is not inserted in the right Partition

Halo数据库专家,来自印度尼西亚的问候

我目前正在努力将我公司的一个大表从非分区迁移到分区表。 每次我尝试使用insert into journal1插入数据时,请选择* from journal,插入到journal1的数据都不会分区。 有什么线索吗?

这是非分区表作为数据源。

CREATE TABLE PRODBMDB.JOURNAL
(
  ID                  VARCHAR2(32 BYTE)         NOT NULL,
  GATEWAYID           VARCHAR2(128 BYTE)        DEFAULT NULL,
  WORKSTATIONID       VARCHAR2(128 BYTE),
  MANDATORID          NUMBER(19)                DEFAULT NULL,
  INSTITUTEID         NUMBER(19)                DEFAULT NULL,
  SUBSIDIARYID        NUMBER(19)                DEFAULT NULL,
  ACQUIRERID          NUMBER(19)                DEFAULT NULL,
  DATETIME            TIMESTAMP(6)              NOT NULL,
  SESSIONID           VARCHAR2(32 BYTE),
  AUTHORIZETSTAMP     TIMESTAMP(6),
  TRANSACTIONNUMBER   NUMBER(19)                NOT NULL,
  TRANSACTIONSTEPNR   NUMBER(19),
  CLIENTTRXNUM        NUMBER(19),
  HOSTTRXNUM          VARCHAR2(32 BYTE),
  METHOD              VARCHAR2(64 BYTE),
  ACTIONTYPE          NUMBER(38)                NOT NULL,
  ACTIONSUBTYPE       NUMBER(38),
  FRAUDRESULT         NUMBER(38),
  FRAUDSCORE          NUMBER(38),
  CUSTOMERID          VARCHAR2(32 BYTE),
  ROUTINGCODE         VARCHAR2(50 BYTE),
  ACCOUNTNUMBER       VARCHAR2(50 BYTE),
  CARDSEQUENCENUMBER  VARCHAR2(2 BYTE),
  AMOUNT              NUMBER(19),
  CURRENCYCODE        CHAR(3 BYTE),
  COMMANDSOURCE       VARCHAR2(128 BYTE),
  RESPONSECODE        NUMBER(38),
  EXTRESPONSECODE     NUMBER(38),
  CANCELREASON        NUMBER(38),
  DOCUMENTSTATE       NUMBER(38),
  ACCOUNTINGSTATE     NUMBER(38),
  CARDSTATE           NUMBER(38),
  HOSTSTATE           NUMBER(38),
  EISPH               NUMBER(38),
  PARTITION           NUMBER(38),
  CONFIDENTIALS       VARCHAR2(1024 BYTE),
  MEDVIEW             NUMBER(38),
  MINVIEW             NUMBER(38),
  LONGVIEW            NUMBER(38),
  DATA1               RAW(2000),
  DATA2               RAW(2000),
  DATA3               RAW(2000),
  DATA4               RAW(2000),
  DATA5               RAW(2000),
  DATA6               RAW(2000)
)
TABLESPACE USERSBIG
PCTUSED    0
PCTFREE    10
INITRANS   10
MAXTRANS   255
STORAGE    (
        INITIAL          2M
        NEXT             1M
        MINEXTENTS       1
        MAXEXTENTS       UNLIMITED
        PCTINCREASE      0
        BUFFER_POOL      DEFAULT
       )
LOGGING 
NOCOMPRESS 
NOCACHE
PARALLEL ( DEGREE DEFAULT INSTANCES DEFAULT )
MONITORING;


CREATE INDEX PRODBMDB.JOURNAL1 ON PRODBMDB.JOURNAL
(DATETIME)
LOGGING
TABLESPACE USERSBIG
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
        INITIAL          64K
        NEXT             1M
        MINEXTENTS       1
        MAXEXTENTS       UNLIMITED
        PCTINCREASE      0
        BUFFER_POOL      DEFAULT
       )
NOPARALLEL;


CREATE INDEX PRODBMDB.JOURNAL2 ON PRODBMDB.JOURNAL
(MANDATORID, INSTITUTEID, WORKSTATIONID)
LOGGING
TABLESPACE USERSBIG
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
        INITIAL          64K
        NEXT             1M
        MINEXTENTS       1
        MAXEXTENTS       UNLIMITED
        PCTINCREASE      0
        BUFFER_POOL      DEFAULT
       )
NOPARALLEL;


CREATE INDEX PRODBMDB.JOURNAL3 ON PRODBMDB.JOURNAL
(SESSIONID, TRANSACTIONNUMBER)
LOGGING
TABLESPACE USERSBIG
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
        INITIAL          64K
        NEXT             1M
        MINEXTENTS       1
        MAXEXTENTS       UNLIMITED
        PCTINCREASE      0
        BUFFER_POOL      DEFAULT
       )
NOPARALLEL;

这是分区表的脚本。 迁移的目标。

CREATE TABLE PRODBMDB.JOURNAL1
(
  ID                  VARCHAR2(32 BYTE)         NOT NULL,
  GATEWAYID           VARCHAR2(128 BYTE)        DEFAULT NULL,
  WORKSTATIONID       VARCHAR2(128 BYTE),
  MANDATORID          NUMBER(19)                DEFAULT NULL,
  INSTITUTEID         NUMBER(19)                DEFAULT NULL,
  SUBSIDIARYID        NUMBER(19)                DEFAULT NULL,
  ACQUIRERID          NUMBER(19)                DEFAULT NULL,
  DATETIME            TIMESTAMP(6)              NOT NULL,
  SESSIONID           VARCHAR2(32 BYTE),
  AUTHORIZETSTAMP     TIMESTAMP(6),
  TRANSACTIONNUMBER   NUMBER(19)                NOT NULL,
  TRANSACTIONSTEPNR   NUMBER(19),
  CLIENTTRXNUM        NUMBER(19),
  HOSTTRXNUM          VARCHAR2(32 BYTE),
  METHOD              VARCHAR2(64 BYTE),
  ACTIONTYPE          INTEGER                   NOT NULL,
  ACTIONSUBTYPE       INTEGER,
  FRAUDRESULT         INTEGER,
  FRAUDSCORE          INTEGER,
  CUSTOMERID          VARCHAR2(32 BYTE),
  ROUTINGCODE         VARCHAR2(50 BYTE),
  ACCOUNTNUMBER       VARCHAR2(50 BYTE),
  CARDSEQUENCENUMBER  VARCHAR2(2 BYTE),
  AMOUNT              NUMBER(19),
  CURRENCYCODE        CHAR(3 BYTE),
  COMMANDSOURCE       VARCHAR2(128 BYTE),
  RESPONSECODE        INTEGER,
  EXTRESPONSECODE     INTEGER,
  CANCELREASON        INTEGER,
  DOCUMENTSTATE       INTEGER,
  ACCOUNTINGSTATE     INTEGER,
  CARDSTATE           INTEGER,
  HOSTSTATE           INTEGER,
  EISPH               INTEGER,
  PARTITION           INTEGER,
  CONFIDENTIALS       VARCHAR2(1024 BYTE),
  MEDVIEW             INTEGER,
  MINVIEW             INTEGER,
  LONGVIEW            INTEGER,
  DATA1               RAW(2000),
  DATA2               RAW(2000),
  DATA3               RAW(2000),
  DATA4               RAW(2000),
  DATA5               RAW(2000),
  DATA6               RAW(2000)
)
TABLESPACE USERSBIG
PCTUSED    0
PCTFREE    10
INITRANS   10
MAXTRANS   255
STORAGE    (
        INITIAL          2M
        NEXT             1M
        MINEXTENTS       1
        MAXEXTENTS       UNLIMITED
        PCTINCREASE      0
       )
LOGGING
PARTITION BY LIST (ACTIONTYPE)
(  
  PARTITION PART1 VALUES (1)
    LOGGING
        NOCOMPRESS 
    TABLESPACE USERSBIG
    PCTFREE    10
    INITRANS   10
    MAXTRANS   255
    STORAGE    (
            INITIAL          2M
            NEXT             2M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            BUFFER_POOL      DEFAULT
           ),  
  PARTITION PART2 VALUES (2)
    LOGGING
    NOCOMPRESS 
    TABLESPACE USERSBIG
    PCTFREE    10
    INITRANS   10
    MAXTRANS   255
    STORAGE    (
            INITIAL          2M
            NEXT             2M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            BUFFER_POOL      DEFAULT
           ),  
  PARTITION PART3 VALUES (3)
    LOGGING
    NOCOMPRESS 
    TABLESPACE USERSBIG
    PCTFREE    10
    INITRANS   10
    MAXTRANS   255
    STORAGE    (
            INITIAL          2M
            NEXT             2M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            BUFFER_POOL      DEFAULT
           ),  
  PARTITION PART4 VALUES (5)
    LOGGING
    NOCOMPRESS 
    TABLESPACE USERSBIG
    PCTFREE    10
    INITRANS   10
    MAXTRANS   255
    STORAGE    (
            INITIAL          2M
            NEXT             2M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            BUFFER_POOL      DEFAULT
           ),  
  PARTITION PART5 VALUES (10)
    LOGGING
    NOCOMPRESS 
    TABLESPACE USERSBIG
    PCTFREE    10
    INITRANS   10
    MAXTRANS   255
    STORAGE    (
            INITIAL          2M
            NEXT             2M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            BUFFER_POOL      DEFAULT
           )
)
NOCOMPRESS 
NOCACHE
PARALLEL ( DEGREE DEFAULT INSTANCES DEFAULT )
MONITORING;

这是我用来迁移数据的脚本

insert into journal1
select * from journal

当我检查表journal1中的数据时,数据已成功插入但未分区。 有人知道为什么会这样吗?

DBA_TABLES.NUM_ROWS是收集优化器统计信息时计数的行数。 它不一定代表实际的行数。 无论在表中插入什么,在收集统计信息之前,查询将如下所示:

select partition_name, num_rows
from dba_tab_partitions
where table_name = 'JOURNAL1';

PARTITION_NAME  NUM_ROWS
--------------  --------
PART1   
PART2   
PART3   
PART4   
PART5   

收集统计信息将设置行数,但该行数不会保持最新:

begin
    dbms_stats.gather_table_stats('PRODBMDB', 'JOURNAL1');
end;
/

select partition_name, num_rows
from dba_tab_partitions
where table_name = 'JOURNAL1';

PARTITION_NAME  NUM_ROWS
--------------  --------
PART1                  0
PART2                  0
PART3                  0
PART4                  0
PART5                  0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM