如何使用段指导_Segment Advisor生成自动空间收缩建议

张开发
2026/4/15 5:47:30 15 分钟阅读

分享文章

如何使用段指导_Segment Advisor生成自动空间收缩建议
Segment Advisor未返回收缩建议是因为仅对满足条件的段如启用ROW MOVEMENT、本地管理表空间、AUTO段空间管理、大小≥10MB等且HWM下存在显著空闲空间时才生成SEGMENT_SHRINK建议。Segment Advisor 为什么没返回收缩建议segment advisor 默认只对满足特定条件的段segment生成自动收缩建议不是所有表或索引都会触发。它不会主动建议 shrink除非检测到显著的高水位线hwm以下空闲空间且该段支持在线收缩即启用了 row movement且不是 iot、簇表、物化视图日志等受限对象。常见错误现象DBMS_SPACE.ASA_RECOMMENDATIONS 返回空结果或 DBA_ADVISOR_FINDINGS 中无类型为 SEGMENT_SHRINK 的记录。确认段所在表空间是本地管理EXTENT MANAGEMENT LOCAL且段空间管理为 AUTO非 MANUAL检查是否已启用行移动SELECT row_movement FROM dba_tables WHERE table_name YOUR_TABLE; — 必须为 ENABLED避免对含 LONG、LOB未启用 ENABLE STORAGE IN ROW、函数索引、域索引运行 Advisor确保段大小超过默认阈值通常 ≥ 10MB否则 Advisor 可能跳过评估如何手动触发 Segment Advisor 并获取 shrink 建议依赖 DBMS_ADVISOR 包执行不能靠 OEM 界面“一键生成”就默认得到 shrink 操作语句 — 它只输出建议类型和目标对象具体 shrink 命令需人工判断后执行。使用场景日常空间巡检、归档后清理大表、迁移前压缩段体积。先创建任务DBMS_ADVISOR.CREATE_TASK指定 ADVISOR_NAME Segment Advisor设置目标DBMS_ADVISOR.SET_TASK_PARAMETER 中设 SCHEMA SCOTT 或 OBJECT_TYPE TABLE 和 OBJECT_NAME EMP执行DBMS_ADVISOR.EXECUTE_TASK完成后查 DBA_ADVISOR_FINDINGS过滤 RECOMMENDATION_TYPE SEGMENT_SHRINK注意DBA_ADVISOR_RECOMMENDATIONS 中的 MESSAGE 字段会写明“shrink space compact”还是“shrink space”后者才真正回收空间shrink space compact vs shrink space别混用Segment Advisor 建议里的 “shrink space” 不等于你直接执行 ALTER TABLE ... SHRINK SPACE 就完事 — 它分两步且行为差异直接影响业务可用性。性能与兼容性影响前者不移动 HWM仅整理块内碎片秒级完成后者移动 HWM 并释放空间给表空间需独占 DML 锁可能阻塞写操作。 标贝科技 标贝科技-专业AI语音服务的人工智能开放平台

更多文章