Pular para o conteúdo

Fóruns Banco de dados Oracle Expurgo de uma Tabela Expurgo de uma Tabela

#99377
Anakim
Participante

    O backup do banco de dados é feito, esqueci de mencionar.

    A quantidade de registros a serem apagados é por volta de 5 milhões.

    Eu não posso dar um truncate na tabela porque eu preciso manter alguns dados online.

    Em relação aos dados que ficam neste banco dependendo da data alguns já não são necessários, ou seja, não é preciso manter os dados na tabela, porque eu posso puxar os dados de uma outra base ou do próprio backup do banco.

    E quando os dados muito antigos são pedidos, que acontece muito raramente, eu tenho tempo para subir um bkp e fazer a pesquisa necessária.

    Segue a procedure como solicitado:

    CREATE OR REPLACE PROCEDURE QUEUE_PURGE() AS
    BEGIN
    DELETE FROM QUEUE WHERE ID_QUEUE IN(
    SELECT ID_QUEUE FROM QUEUE WHERE TO_CHAR( DATE_INSERTED, 'YYYYMMDD' ) <= TO_CHAR( (SYSDATE - 7), 'YYYYMMDD' );
    );

    END QUEUE_PURGE;

    Não entendi muito bem esta pergunta:

    1 – Que tipos de dados são esses que podem ser apagados ?

    É em relação aos tipos de daos da tabela? Se sim segue a DDL da mesma:

    CREATE TABLE "GATEWAY_SMS"."QUEUE"
    (
    "ID_QUEUE" NUMBER NOT NULL ENABLE,
    "ID_SMS" NUMBER NOT NULL ENABLE,
    "ID_LOT" NUMBER,
    "MSISDN" NUMBER NOT NULL ENABLE,
    "PROCESSED" NUMBER(2,0) DEFAULT 0 NOT NULL ENABLE,
    "PROCESSED_BEGIN" TIMESTAMP (6),
    "PROCESSED_END" TIMESTAMP (6),
    "TOTAL_PROCESSED_SERVER" NUMBER,
    "DATE_INSERTED" TIMESTAMP (6) DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
    "STATUS" NUMBER(2,0)