如何在oracle数据库中标识新创建的自动分区

qvtsj1bj  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(117)

我是oracle数据库的新手。我使用的是数据库版本12.1.0.2。我已经为表启用了自动列表分区创建。每当向表中的列插入新城市时,一个新的分区被自动创建。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
djp7away

djp7away1#

你可以试着用这样的东西。

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$%'

相关问题