[oracle]Oracle 12C-drop和truncate分区的异步全局索引维护
分区维护操作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';
BEGIN
sys.dbms_scheduler.set_attribute( name => '"SYS"."PMO_DEFERRED_GIDX_MAINT_SCHED"', attribute => 'repeat_interval', value => 'FREQ=DAILY;BYHOUR=19;BYMINUTE=00;BYSECOND=0');
END;
/
- 点赞
- 收藏
- 关注作者
评论(0)