【问题标题】:DB partition in Ora 11gOra 11g 中的数据库分区
【发布时间】:2012-02-10 15:13:23
【问题描述】:

我需要从系统参数中选择一个需要创建分区的日期,然后需要使用存储过程创建分区。任何指导。 正在使用 Oracle 11g。

【问题讨论】:

    标签: oracle oracle11g partitioning


    【解决方案1】:

    罗南,

    也许你可以采用区间分区?您使用的是 11g,因此您可以使用间隔分区。当插入数据并且所需的分区尚不可用时,这会在所需的基础上生成分区。

    【讨论】:

      【解决方案2】:

      您可以使用动态 PL/SQL,例如:

      select the_date into l_date from system_parameters where...;
      
      execute immediate 'alter table mytable add partition p_' || replace(l_date,'-','')
      || ' values less than (to_date(''' || l_date || ''',''DD-MON-YYYY'')';
      

      【讨论】:

        【解决方案3】:

        我同意@ik_zelf 的回答,如果您要在日期上实施分区,并且想在日期到来时进行,请进行间隔分区。也不需要存储过程。

        它是 Oracle 11g 中的一个新特性。它在插入记录时为特定间隔创建分区,因此您不必担心新分区。新的分区将被赋予一个系统名称以及 SYS_PXXX..

        这就是间隔分区的方法..

        CREATE TABLE interval_tab (
          id           NUMBER,
          code         VARCHAR2(10),
          description  VARCHAR2(50),
          created_date DATE
        )
        PARTITION BY RANGE (created_date)
        INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) -- change to 12 for an year  
        (
           PARTITION part_01 values LESS THAN (TO_DATE('01-JAN-2012','DD-MON-YYYY'))
        );
        

        Interval Partition与之前的Partition无关,在interval之前创建的最后一个partition就是这里的过渡点。

        你也可以去

        ALTER TABLE 方法也可以添加分区..

        【讨论】:

          猜你喜欢
          • 2016-11-22
          • 1970-01-01
          • 2015-11-29
          • 2019-06-19
          • 2014-06-16
          • 2012-03-13
          • 1970-01-01
          • 1970-01-01
          • 2020-11-21
          相关资源
          最近更新 更多