Oracle 12c新特性维护表分区Global Index不失效
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,1.新特性官方文档说明(3)使用新特性update indexes子句# update indexes更新所有索引,global 或者local,而当使用update indexes更新global
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
中国 服务器 镜像
有关网络安全的知识问答
济南奇点网络技术
零信任api服务器
x86服务器和arm市场占比
如何知道传真机的服务器的名称
国家网络安全协调中心地址
万得数据库官网
搭建云端奥维企业服务器
软件开发指导教师评语
wifu服务器坏了多久能修好
非法获取 普通数据库
制造软件开发工具
搭建olap数据库
sql数据库程序池
江西恩网络技术有限公司
大专的软件开发专业要笔记本吗
网络技术应用领域的例子
wifi透传服务器ip地址
数据库技术是数据结构吗
IWB软件开发商
漳州开发区禾苒网络技术工作室
轧钢多个二级服务器报错
开平区辅助网络技术答疑解惑
软件开发部经理绩效
按照网络安全等级保护
当主副本所在服务器硬件故障
嵌入式技术与应用与大数据库
vb怎么导入数据库
广州滴滴派单软件开发科技公司