gpt4 book ai didi

Oracle DB 每日分区

转载 作者:行者123 更新时间:2023-12-04 20:10:26 25 4
gpt4 key购买 nike

我有下表

  CREATE TABLE "METRIC_VALUE_RAW" 
(
"SUBELEMENT_ID" INTEGER NOT NULL ,
"METRIC_METADATA_ID" INTEGER NOT NULL ,
"METRIC_VALUE_INT" INTEGER,
"METRIC_VALUE_FLOAT" FLOAT(126),
"TIME_STAMP" TIMESTAMP NOT NULL
) ;
  • 每小时数据将使用 sql 加载器加载到表中。
  • 我想创建分区,以便每天的数据进入一个分区。
  • 在表中,我想将数据存储 30 天。因此,当它超过 30 天时,应该删除最旧的分区。

  • 你能分享一下我如何设计分区的想法吗?

    最佳答案

    这是一个如何在 Oracle 11g 上执行此操作的示例,它运行良好。我没在Oracle 10g上试过,你可以试试。

    这是方法,如何创建具有每日分区的表:

    CREATE TABLE XXX (
    partition_date DATE,
    ...,
    ...,
    )
    PARTITION BY RANGE (partition_date)
    INTERVAL (NUMTODSINTERVAL(1, 'day'))
    (
    PARTITION part_01 values LESS THAN (TO_DATE('2000-01-01','YYYY-MM-DD'))
    )
    TABLESPACE MY_TABLESPACE
    NOLOGGING;

    如上所示,Oracle 将自动为 2000 年 1 月 1 日之后的每个不同的 partition_day 创建单独的分区。 partition_date 早于该日期的记录将存储在名为“part_01”的分区中。

    您可以使用以下语句监控您的表分区:
    SELECT * FROM user_tab_partitions WHERE table_name = 'XXX';

    之后,当您要删除某些分区时,请使用以下命令:
    ALTER TABLE XXX DROP PARTITION AAAAAA UPDATE GLOBAL INDEXES

    其中“AAAAAA”是分区名称。

    我希望它会帮助你!

    关于Oracle DB 每日分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118803/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com