sql >> Base de Datos >  >> RDS >> Oracle

Elimina la partición más antigua automáticamente en Oracle 11G

No conozco ninguna utilidad o función de Oracle para hacer esto. Puede encontrar la información que necesita para escribir su propio programa para hacer esto en las vistas DBA_TAB_PARTITIONS o ALL_TAB_PARTITIONS, similares a las siguientes:

SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
  FROM SYS.DBA_TAB_PARTITIONS
  WHERE TABLE_OWNER = strSchema AND
        TABLE_NAME = strTable

donde strSchema y strTable son el esquema y la tabla que le interesan. HIGH_VALUE es un campo LARGO que contiene el código para una llamada a la función TO_DATE (asumiendo que su tabla está dividida en un campo de fecha); deberá asignar HIGH_VALUE a un campo LARGO, luego asignar LARGO a un VARCHAR2 para obtener el valor en algún lugar donde pueda manipularse, de una manera similar a:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;

Luego, solo necesita extraer los campos apropiados de la cláusula DATE para determinar qué particiones necesita descartar.

Comparte y disfruta.