【问题标题】:How to identify a newly created autopartition in oracle database如何在 oracle 数据库中识别新创建的自动分区
【发布时间】:2022-10-20 07:51:31
【问题描述】:

我是 Oracle 数据库的新手。我正在使用数据库版本 12.1.0.2。我为表启用了自动列表分区创建。每当向表中的列插入一个新城市时,就会自动创建一个新分区。有没有办法使用任何字典视图立即识别新分区的创建?我需要知道一个脚本想法或程序来立即识别表上新创建的分区并通过电子邮件通知。

下面是为插入到列SALES_STATE 中的每个新状态创建的分区示例:

SQL> desc sales_auto_list
 Name                                                                                                      Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 SALESMAN_ID                                                                                               NOT NULL NUMBER(38)
 SALESMAN_NAME                                                                                              VARCHAR2(30)
 SALES_STATE                                                                                               NOT NULL VARCHAR2(20)
 SALES_AMOUNT                                                                                               NUMBER(10)
 SALES_DATE                                                                                                NOT NULL DATE

为插入的每个新行创建新分区

SQL> select table_name,partition_name,high_value from dba_tab_partitions where table_name ='SALES_AUTO_LIST';

TABLE_NAME           PARTITION_NAME       HIGH_VALUE
-------------------- -------------------- --------------------
SALES_AUTO_LIST      P_CAL                'california'
SALES_AUTO_LIST      SYS_P801             'FLORIDA'
SALES_AUTO_LIST      SYS_P802             'MICHIGAN'
SALES_AUTO_LIST      SYS_P803             'CALIFORNIA'
SALES_AUTO_LIST      SYS_P804             'OREGON'

总分区数

SQL> SELECT TABLE_NAME, PARTITIONING_TYPE, AUTOLIST, PARTITION_COUNT FROM USER_PART_TABLES WHERE TABLE_NAME ='SALES_AUTO_LIST';

TABLE_NAME           PARTITION AUT PARTITION_COUNT
-------------------- --------- --- ---------------
SALES_AUTO_LIST      LIST      YES              5

【问题讨论】:

    标签: sql oracle database-partitioning


    【解决方案1】:

    您可以尝试使用类似的东西。

    
    SELECT PARTITION_NAME, HIGH_VALUE
        FROM USER_TAB_PARTITIONS
     WHERE regexp_like(partition_name,'^SYS_P[[:digit:]]{1,10}')  AND
     TABLE_NAME = 
    < your TableName> AND
    table_name not like 'BIN$%'
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多