ITPub博客

首页 > 数据库 > Oracle > [oracle]Oracle 12C-drop和truncate分区的异步全局索引维护

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

原创 Oracle 作者:匠人xin 时间:2021-01-19 20:39:38 0 删除 编辑

分区维护操作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;

/


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69993564/viewspace-2751227/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2021-01-19

  • 博文量
    33
  • 访问量
    39514