我有一个基于日期字段分区的表。现在,我必须写一个过程来删除所有的分区年龄超过2个月,即. test_date超过2个月。我该怎么做?
create table test_table
(
test_id number,
test_date date,
constraint pk_test primary key (test_id)
)
partition by range (test_date)
(
PARTITION pt01122012 VALUES LESS THAN (TO_DATE('01-DEC-
2012', 'DD-MON-YYYY')),
PARTITION pt01022013 VALUES LESS THAN (TO_DATE('01-FEB-
2013', 'DD-MON-YYYY')),
PARTITION pt01042013 VALUES LESS THAN (TO_DATE('01-APR-
2013', 'DD-MON-YYYY')),
PARTITION pt01062013 VALUES LESS THAN (TO_DATE('01-JUN-
2013', 'DD-MON-YYYY')),
PARTITION pt01082013 VALUES LESS THAN (TO_DATE('01-AUG-
2013', 'DD-MON-YYYY'))
);
感谢您的评分
1条答案
按热度按时间ntjbwcob1#
首先,我想指出的是,分区是Oracle中的一个高级主题,因此您可能希望在开始时手动运行所有分区,直到您对运行分区脚本有足够的信心。我还建议你永远不要运行一个在互联网上找到的脚本,除非你对它有充分的理解和测试,尤其是在没有测试的情况下。
现在,您可以查询
*_TAB_PARTITIONS
字典视图来检索分区边界:此列的类型为
LONG
(=已弃用的LOB),因此我们几乎没有使用SQL进行过滤的工具,我们必须使用PL/SQL。