oracle - 在oracle 11G中自动删除最旧的分区

标签 oracle oracle11g database-partitioning

如果分区超过三个月,我需要从间隔分区表中删除分区。

是否有 Oracle 实用程序/函数可以执行此操作?或者如果没有,如何实现?请指导我。

Database version: Oracle 11G

最佳答案

我不知道有任何 Oracle 实用程序或函数可以执行此操作。您可以在 DBA_TAB_PARTITIONS 或 ALL_TAB_PARTITIONS View 中找到编写自己的程序来执行此操作所需的信息,类似于以下内容:

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

其中 strSchema 和 strTable 是您感兴趣的架构和表。HIGH_VALUE 是一个 LONG 字段,其中包含调用 TO_DATE 函数的代码(假设您的表按日期字段进行分区);您需要将 HIGH_VALUE 分配给 LONG 字段,然后将 LONG 分配给 VARCHAR2,以便在可以操作的地方获取该值,其方式类似于:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

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

然后您只需从 DATE 子句中提取适当的字段即可确定需要删除哪些分区。

分享并享受。

关于oracle - 在oracle 11G中自动删除最旧的分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536830/

相关文章:

sql - MAX()和MAX()OVER PARTITION BY在Teradata查询中产生错误3504

sql - 在表中查找重复的对称行

sql - NVL 功能

Oracle Clob 保存复杂的 XML;如何使用Xquery选择特定数据

sql - 如何获取Oracle表的最后一行

mysql - 无法在mysql上分区表

sql - Codd 的 'non-subversion rule' 是什么意思?

sql - Oracle SQL - 全部大写优先排序

sql - Oracle嵌套xml解析

oracle - Oracle11g中的自动分区