Pular para o conteúdo
  • This topic has 1 reply, 2 voices, and was last updated 10 years ago by Avatar de Joel SchecheleskiJoel Schecheleski.
Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #107024
    Avatar de Eduardo RodriguesEduardo Rodrigues
    Participant

      Boa tarde a todos, sou novo no “mundo Oracle” e me deparei com o seguinte cenário:

      Em um Oracle 11g tenho a seguinte tabela:

      create table
      tbl_position (
      start_date DATE,
      store_id NUMBER,
      inventory_id NUMBER(6),
      qty_sold NUMBER(3)
      );

      Nessa tabela são armazenados muitas informações diariamente então gostaria de usar particionamento por data (PARTITION BY RANGE), e poder armazenar os dados por dia do mês em tabelas separadas, ou seja, teria as tabelas tbl_position_1, tbl_position_2, tbl_position_3, … até a tbl_position_31, para poder armazenar os dados. Acontece que não sei como criar esse tipo de particionamento para pegar a data corrente. Alguém poderia me ajudar?

      create table
      tbl_position (
      start_date DATE,
      store_id NUMBER,
      inventory_id NUMBER(6),
      qty_sold NUMBER(3)
      );

      PARTITION BY RANGE (start_date)
      INTERVAL((numtodsinterval(1, ‘DAY’))
      (
      PARTITION tbl_position_1 VALUES LESS THAN (TO_DATE(‘data_current’, ‘DD-MM-YYYY’)),

      );

      Atenciosamente
      Eduardo Rodrigues

      #107096
      Avatar de Joel SchecheleskiJoel Schecheleski
      Participant

        Boa tarde Eduardo

        uma idéia de consulta usando o SPLIT PARTITION:

        – split Max value partition
        — Todos os dados de 2007 para traz
        alter table ALE.TABELA
        split partition PARTT_2007_11
        at (1080101)
        into (partition PARTT_2007_12,partition IEMAX_2099_12)
        update global indexes
        /

        Nesse caso estou pegando todos os dados de 2007 pra trás.

        Exemplo de criação das tabelas:
        CREATE TABLE orders_tbl (
        order_id number(10),
        order_date date,
        order_mode varchar2(10),
        order_total number(15,2),
        customer_id number(10))

        PARTITION BY RANGE (order_date) INTERVAL(NUMTOYMINTERVAL(1,’MONTH’))
        STORE IN (data01,data02,data03,data04)

        (PARTITION JUN10 values less than TO_DATE(’01-07-10′,’dd-mm-yy’)),
        PARTITION JUL10 values less than TO_DATE(’01-08-10′,’dd-mm-yy’)),
        PARTITION AUG10 values less than TO_DATE(’01-09-10′,’dd-mm-yy’)));

        CREATE TABLE order_items_tbl (
        order_id NUMBER(10),
        line_id NUMBER(3),
        product_id NUMBER(10),
        price NUMBER(10,2),
        quantity NUMBER(5),
        CONSTRAINT order_items_fk FOREIGN KEY (order_id)
        REFERENCES orders_tbl)
        PARTITION BY REFERENCE (order_items_fk)

        Espero ter ajudado 😉

      Viewing 2 posts - 1 through 2 (of 2 total)
      • You must be logged in to reply to this topic.
      plugins premium WordPress