簡體   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