Oracle 12c新特性维护表分区Global Index不失效
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,1.新特性官方文档说明(3)使用新特性update indexes子句# update indexes更新所有索引,global 或者local,而当使用update indexes更新global
千家信息网最后更新 2025年01月31日Oracle 12c新特性维护表分区Global Index不失效
1.新特性官方文档说明
(3)使用新特性update indexes子句
# update indexes更新所有索引,global 或者local,而当使用update indexes更新global index时,不能指定子句,# update global indexes只能用于global indexesTEST@czhpdb1 > alter table test_part drop partition p2 update indexes; Table altered.# 可以看到索引并没有失效,但是NUM_ROWS并未发生改变,也就是索引并未被实时更新TEST@czhpdb1 > select table_name,index_name,status,num_rows from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS---------------------------------------- -------------------- ---------- ----------------------------------------TEST_PART IDX_TEST_PART VALID 5001# 可以看到产生了延迟GLOBAL INDEX MAINTAINE的定时任务,默认凌晨两点开始自动执行维护global indexcol job_name for a50col LAST_START_DATE for a40col NEXT_RUN_DATE for a40select JOB_NAME,LAST_START_DATE,NEXT_RUN_DATE from DBA_SCHEDULER_JOBS where JOB_NAME='PMO_DEFERRED_GIDX_MAINT_JOB';JOB_NAME LAST_START_DATE NEXT_RUN_DATE-------------------------------------------------- ---------------------------------------- ----------------------------------------PMO_DEFERRED_GIDX_MAINT_JOB 06-JAN-20 03.06.37.673278 AM PST8PDT 07-JAN-20 02.00.00.679539 AM PST8PDT # user_indexes视图orphaned_entries字段标识global index是否包含索引延迟维护的过期条目TEST@czhpdb1 > select table_name,index_name,status,num_rows,orphaned_entries from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS ORPHANED_---------------------------------------- -------------------- ---------- ---------------------------------------- ---------TEST_PART IDX_TEST_PART VALID 5001 YES
(4)手工维护延迟索引维护global index
如果需要,也可以通过如下四种办法手工维护延迟维护global index。
方法1:DBMS_PART.CLEANUP_GIDX
# 通过调用系统包DBMS_PART.CLEANUP_GIDXcol job_name for a50col LAST_START_DATE for a40col NEXT_RUN_DATE for a40select JOB_NAME,LAST_START_DATE,NEXT_RUN_DATE from DBA_SCHEDULER_JOBS where JOB_NAME='PMO_DEFERRED_GIDX_MAINT_JOB';JOB_NAME LAST_START_DATE NEXT_RUN_DATE-------------------------------------------------- ---------------------------------------- ----------------------------------------PMO_DEFERRED_GIDX_MAINT_JOB 06-JAN-20 03.06.37.673278 AM PST8PDT 07-JAN-20 02.00.00.679539 AM PST8PDT SYS@czh29c > exec DBMS_PART.CLEANUP_GIDX('TEST','TEST_PART');PL/SQL procedure successfully completed.TEST@czhpdb1 > select table_name,index_name,status,num_rows,orphaned_entries from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS ORPHANED_---------------------------------------- -------------------- ---------- ---------------------------------------- ---------TEST_PART IDX_TEST_PART VALID 5001 NO
方法2:dbms_scheduler.run_job
# 使用sys连接数据库时,一定要注意切换pdb,只有切换到正确的pdb,才能正确的执行调度定时任务完成相应维护操作SYS@czh29c > alter session set container=czhpdb1;Session altered.SYS@czh29c > show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED---------------------------------------- ------------------------------ ---------- ---------- 3 CZHPDB1 READ WRITE NO # 查询DBA_SCHEDULER_JOBS,查看调度任务SYS@czh29c > col job_name for a50SYS@czh29c > col LAST_START_DATE for a40SYS@czh29c > col NEXT_RUN_DATE for a40SYS@czh29c > select JOB_NAME,LAST_START_DATE,NEXT_RUN_DATE from DBA_SCHEDULER_JOBS where JOB_NAME='PMO_DEFERRED_GIDX_MAINT_JOB';JOB_NAME LAST_START_DATE NEXT_RUN_DATE-------------------------------------------------- ---------------------------------------- ----------------------------------------PMO_DEFERRED_GIDX_MAINT_JOB 06-JAN-20 03.06.37.606301 AM PST8PDT 07-JAN-20 02.00.00.609298 AM PST8PDT# 手工执行调度任务SYS@czh29c > exec dbms_scheduler.run_job('PMO_DEFERRED_GIDX_MAINT_JOB');PL/SQL procedure successfully completed.# 查看global index状态,已经被维护TEST@czhpdb1 > select table_name,index_name,status,num_rows,orphaned_entries from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS ORPHANED_---------------------------------------- -------------------- ---------- ---------------------------------------- ---------TEST_PART IDX_TEST_PART VALID 5001 NO
方法3:重建索引
# 可以rebuild启用并行parallel,rebuild完毕之后,使用alter index no paralle,关闭并行度TEST@czhpdb1 > alter index idx_test_part rebuild online;Index altered.TEST@czhpdb1 > select table_name,index_name,status,num_rows,orphaned_entries from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS ORPHANED_---------------------------------------- -------------------- ---------- ---------------------------------------- ---------TEST_PART IDX_TEST_PART VALID 10003 NO
方法四:coalesce cleanup
# COALESCE# Specify this clause to merge the contents of index partition blocks where possible # to free blocks for reuse.# CLEANUP# Specify CLEANUP to remove orphaned index entries for records that were previously# dropped or truncated by a table partition maintenance operation.# To determine whether an index partition contains orphaned index entries, you can# query the ORPHANED_ENTRIES column of the USER_, DBA_, ALL_PART_INDEXES# data dictionary views. Refer to Oracle Database Reference for more informationTEST@czhpdb1 > alter index idx_test_part coalesce cleanup;Index altered.TEST@czhpdb1 > select table_name,index_name,status,num_rows,orphaned_entries from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS ORPHANED_---------------------------------------- -------------------- ---------- ---------------------------------------- ---------TEST_PART IDX_TEST_PART VALID 10003 NO
(5)收集索引统计信息
# 手工维护索引之后,索引统计信息可能不准确,建议手动收集索引统计信息TEST@czhpdb1 > exec dbms_stats.gather_index_stats('TEST','IDX_TEST_PART');PL/SQL procedure successfully completed.TEST@czhpdb1 > select table_name,index_name,status,num_rows,orphaned_entries from user_indexes where table_name='TEST_PART';TABLE_NAME INDEX_NAME STATUS NUM_ROWS ORPHANED_---------------------------------------- -------------------- ---------- ---------------------------------------- ---------TEST_PART IDX_TEST_PART VALID 9003 NO
索引
任务
手工
方法
延迟
信息
更新
统计
调度
特性
子句
切换
也就是
办法
只有
可以通过
字段
官方
实时
实时更新
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
政治经济稳定和网络安全
服务器和域名空间的区别
网站数据库技术指标
昆明网络技术公司简介
谁担任网络安全协调会
华为网络安全日是什么时间
海珠高效网络安全建设
三级网络技术课后
苹果认证网络安全工程师
教室信息 管理 数据库
局域网内接入服务器
数据库dbs的核心是
e网服务器摩尔多瓦
网络安全调查问卷在哪写
成都温江区招聘软件开发人员
数据库软件开发的就业方向
shell获取服务器详细信息
宿迁环保网络技术哪家好
服务器双cpu主板是什么规格
创建一个数据库名为资产数据库
数据库qbl
数据库一共多少命令
网络技术公司属于服务类公司
合肥正规网络技术咨询联系人
ecshop数据库表
oracle数据库常见错误
奥克斯嵌入式软件开发面试题
服务器控制管理器
东莞市鹏远网络技术服务
模拟和数模混合仿真软件开发