[oracle]Oracle 12C-drop和truncate分区的异步全局索引维护

来源:这里教程网 时间:2026-03-03 16:22:57 作者:

分区维护操作DROP partition和TRUNCATE partition通过只对元数据进行索引维护而得到优化。DROP和TRUNCATE操作默认进行异步全局索引维护;但是,为了向后兼容,仍然需要update indexes子句。异步全局索引维护的限制:

仅在堆表上执行 不支持具有对象类型的表 不支持带有域索引的表 sys系统用户无法执行

 索引的维护操作通过自动调度程序作业

SYS.PMO_DEFERRED_GIDX_MAINT_JOB
清理所有全局索引。默认情况下,此作业计划每天凌晨2:00运行。可以随时使用
DBMS_SCHEDULER.RUN_JOB
手工清理索引。还可以根据需求修改作业以使用不同的计划或者时间运行。注意,Oracle建议您不要放弃该工作。 可以使用以下方式强制触发:

DBMS_PART.CLEANUP_GIDX
-此PL/SQL过程收集系统中可能需要清除的全局索引列表,并运行将索引恢复到清除状态所需的操作。
ALTER INDEX REBUILD [PARTITION]]
–此SQL语句重建整个索引或索引分区,就像在Oracle Database 12c Release 1(12.1)之前的版本中所做的那样。结果索引(分区)不包含任何过时的项。
ALTER INDEX REBUILD [PARTITION]]
–此SQL语句重建整个索引或索引分区,就像在Oracle Database 12c Release 1(12.1)之前的版本中所做的那样。结果索引(分区)不包含任何过时的项。

详细内容可参考官方文档:

http://docs.oracle.com/database/121/VLDBG/GUID-087B87A6-959A-40C6-82AF-36E401FD089B.htm#VLDBG14107

修改延时索引维护时间

select * from dba_scheduler_jobs where job_name = 'PMO_DEFERRED_GIDX_MAINT_JOB'select * from dba_scheduler_jobs where job_name='PMO_DEFERRED_GIDX_MAINT_JOB';BEGINsys.dbms_scheduler.set_attribute( name => '"SYS"."PMO_DEFERRED_GIDX_MAINT_SCHED"', attribute => 'repeat_interval', value => 'FREQ=DAILY;BYHOUR=19;BYMINUTE=00;BYSECOND=0');END;/

相关推荐