删除带有全局索引的分区表?

2024-06-24

PROCEDURE purge_partitions
   (
      p_owner            IN VARCHAR2
     ,p_name             IN VARCHAR2
     ,p_retention_period IN NUMBER
   ) IS
   BEGIN
      FOR partition_rec IN (SELECT partition_name
                                  ,high_value
                              FROM dba_tab_partitions
                             WHERE table_owner = p_owner
                               AND table_name = p_name)

      LOOP
         IF SYSDATE >= add_months(to_date(substr(partition_rec.high_value
                                                ,12
                                                ,19)
                                         ,'YYYY-MM-DD HH24:MI:SS')
                                 ,p_retention_period)
         THEN
            execute_immediate('ALTER TABLE ' || p_owner || '.' ||
                              p_name || ' DROP PARTITION ' ||
                              partition_rec.partition_name)
         END IF;
      END LOOP;
   END purge_partitions;

Purge_Partitions 过程根据以下条件处理删除分区 单独的配置表中提到的特定保留优先级。我是 现在正在尝试增强此功能,这将解决 重建这些分区表的全局索引。不知道如何解决这个问题,非常感谢任何帮助。


考虑update_index_clauses https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_3001.htm#BABICDHJ,这使索引保持有效。

请参阅全局索引的文档和注意事项here https://docs.oracle.com/database/121/VLDBG/GUID-1D59BD49-CD86-4BFE-9099-D3B8D7FD932A.htm#VLDBG1122

在你的情况下它将是:

 alter table ttttt drop partition pppppp update global indexes;

或者让索引在DROP PARTITION并重建它们alter index xxx rebuild。您可以从此查询获取要重建的索引列表

select OWNER, INDEX_NAME  
from all_indexes 
where owner = 'ooo' and table_name = 'tttttt' and status = 'UNUSABLE';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除带有全局索引的分区表? 的相关文章

随机推荐